diff --git a/.github/workflows/authors.yml b/.github/workflows/authors.yml index 01bd0652a4b399..8171df166ab353 100644 --- a/.github/workflows/authors.yml +++ b/.github/workflows/authors.yml @@ -1,5 +1,9 @@ name: "authors update" on: + schedule: + # Run once a week at 00:05 AM UTC on Sunday. + - cron: '5 0 * * 0' + workflow_dispatch: jobs: diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index 37f4e707561606..0e70aaaa5cd1fd 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -3,12 +3,22 @@ name: Build from tarball on: pull_request: types: [opened, synchronize, reopened, ready_for_review] + paths-ignore: + - '.mailmap' + - '**.md' + - 'AUTHORS' + - 'doc/**' push: branches: - master - main - v[0-9]+.x-staging - v[0-9]+.x + paths-ignore: + - '.mailmap' + - '**.md' + - 'AUTHORS' + - 'doc/**' env: FLAKY_TESTS: dontcare diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 1b0b336f4b8273..d489de708d130b 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -18,7 +18,11 @@ env: jobs: build-windows: if: github.event.pull_request.draft == false - runs-on: windows-latest + strategy: + matrix: + windows: [windows-2019, windows-2022] + fail-fast: false + runs-on: ${{ matrix.windows }} steps: - uses: actions/checkout@v2 - name: Set up Python ${{ env.PYTHON_VERSION }} diff --git a/.github/workflows/comment-labeled.yml b/.github/workflows/comment-labeled.yml index 14e48ea8dd37ca..c2c700c38b8ca1 100644 --- a/.github/workflows/comment-labeled.yml +++ b/.github/workflows/comment-labeled.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Post stalled comment env: - COMMENTS_URL: ${{ github.event.issue.comments_url || github.event.pull_request.comments_url }} + COMMENTS_URL: ${{ github.event.issue.comments_url || github.event.pull_request.comments_url }} run: | curl -X POST $COMMENTS_URL \ -H "Content-Type: application/json" \ diff --git a/.github/workflows/coverage-linux.yml b/.github/workflows/coverage-linux.yml index 2ee6c8b5f19b77..59a758ebdfc6a0 100644 --- a/.github/workflows/coverage-linux.yml +++ b/.github/workflows/coverage-linux.yml @@ -45,7 +45,7 @@ jobs: - name: Report JS run: npx c8 report --check-coverage env: - NODE_OPTIONS: --max-old-space-size=8192 + NODE_OPTIONS: --max-old-space-size=8192 - name: Report C++ run: cd out && gcovr --gcov-exclude='.*\b(deps|usr|out|obj|cctest|embedding)\b' -v -r Release/obj.target --xml -o ../coverage/coverage-cxx.xml --root=$(cd ../ && pwd) # Clean temporary output from gcov and c8, so that it's not uploaded: diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index f4dfc964ccd2f3..ca582839fc8b7d 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -13,7 +13,7 @@ env: jobs: find: - + runs-on: ubuntu-latest steps: diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 987a38e56165fe..04cecbbc516052 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -53,7 +53,7 @@ jobs: - name: Environment Information run: npx envinfo - name: Get release version numbers - if: ${{ github.event.pull_request.base.ref == github.event.pull_request.base.repo.default_branch }} + 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/node-lint-md-cli-rollup/src/list-released-versions-from-changelogs.mjs - name: Lint docs @@ -90,7 +90,23 @@ jobs: - name: Lint Python run: | make lint-py-build || true - NODE=$(command -v node) make lint-py + make lint-py + lint-yaml: + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Use Python ${{ env.PYTHON_VERSION }} + uses: actions/setup-python@v2 + with: + python-version: ${{ env.PYTHON_VERSION }} + - name: Environment Information + run: npx envinfo + - name: Lint YAML + run: | + make lint-yaml-build || true + make lint-yaml + lint-sh: if: github.event.pull_request.draft == false runs-on: ubuntu-20.04 diff --git a/.github/workflows/notify-force-push.yml b/.github/workflows/notify-force-push.yml index e3bdc0353c60fb..9c2fc3a6a4e64d 100644 --- a/.github/workflows/notify-force-push.yml +++ b/.github/workflows/notify-force-push.yml @@ -11,16 +11,16 @@ jobs: if: ${{ github.event.forced && github.repository == 'nodejs/node' }} runs-on: ubuntu-latest steps: - - name: Slack Notification - uses: rtCamp/action-slack-notify@master - env: - SLACK_COLOR: '#DE512A' - SLACK_ICON: https://github.com/nodejs.png?size=48 - SLACK_TITLE: '${{ github.actor }} force-pushed to ${{ github.ref }}' - SLACK_MESSAGE: | - A commit was force-pushed to by + - name: Slack Notification + uses: rtCamp/action-slack-notify@master + env: + SLACK_COLOR: '#DE512A' + SLACK_ICON: https://github.com/nodejs.png?size=48 + SLACK_TITLE: '${{ github.actor }} force-pushed to ${{ github.ref }}' + SLACK_MESSAGE: | + A commit was force-pushed to by - Before: - After: - SLACK_USERNAME: nodejs-bot - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + Before: + After: + SLACK_USERNAME: nodejs-bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/test-asan.yml b/.github/workflows/test-asan.yml index 2762a08fa10bc8..8745f5eb4c0f9a 100644 --- a/.github/workflows/test-asan.yml +++ b/.github/workflows/test-asan.yml @@ -1,6 +1,13 @@ name: test-asan on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths-ignore: + - '.mailmap' + - '**.md' + - 'AUTHORS' + - 'doc/**' push: branches: - master @@ -9,12 +16,9 @@ on: - v[0-9]+.x-staging - v[0-9]+.x paths-ignore: + - '.mailmap' - '**.md' - - 'doc/**' - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - paths-ignore: - - '**.md' + - 'AUTHORS' - 'doc/**' env: diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml new file mode 100644 index 00000000000000..4ef4c42c147d47 --- /dev/null +++ b/.github/workflows/test-internet.yml @@ -0,0 +1,40 @@ +name: test-internet + +on: + workflow_dispatch: + schedule: + - cron: 5 0 * * * + +pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths: + - test/internet/** + push: + branches: + - master + - main + - canary + - v[0-9]+.x-staging + - v[0-9]+.x + paths: + - test/internet/** + +env: + PYTHON_VERSION: 3.9 + FLAKY_TESTS: dontcare + +jobs: + test-internet: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ env.PYTHON_VERSION }} + uses: actions/setup-python@v2 + with: + python-version: ${{ env.PYTHON_VERSION }} + - name: Environment Information + run: npx envinfo + - name: Build + run: make build-ci -j2 V=1 CONFIG_FLAGS="--error-on-warn" + - name: Test Internet + run: make test-internet -j2 V=1; diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index adcacc9b99187c..a099a25285c278 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -4,7 +4,9 @@ on: pull_request: types: [opened, synchronize, reopened, ready_for_review] paths-ignore: + - '.mailmap' - '**.md' + - 'AUTHORS' - 'doc/**' push: branches: @@ -14,7 +16,9 @@ on: - v[0-9]+.x-staging - v[0-9]+.x paths-ignore: + - '.mailmap' - '**.md' + - 'AUTHORS' - 'doc/**' env: diff --git a/.gitignore b/.gitignore index c0053a07323419..b7a33d86bedf61 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,11 @@ !deps/**/.* !test/fixtures/**/.* !.clang-format +!.cpplint !.editorconfig !.eslintignore !.eslintrc.js +!.eslintrc.yaml !.flake8 !.gitattributes !.github @@ -19,8 +21,7 @@ !.gitkeep !.mailmap !.nycrc -!.eslintrc.yaml -!.cpplint +!.yamllint.yaml # === Rules for root dir === /core diff --git a/.mailmap b/.mailmap index efd81d38bc26f7..9ee76141ef3af6 100644 --- a/.mailmap +++ b/.mailmap @@ -150,6 +150,8 @@ Gabriel de Perthuis Gareth Ellis Garwah Lam garygsc +Geoffrey Booth +Geoffrey Booth Geoffrey Bugaisky Gerhard Stöbich Gibson Fahnestock @@ -247,9 +249,11 @@ Kris Kowal Kyle Robinson Young Lakshmi Swetha Gopireddy Leeseean Chiu +Lucas Pardue Luke Bayes Lydia Kats Maciej Małecki +Maël Nison MaleDong Malte-Thorben Bruns Malte-Thorben Bruns @@ -287,12 +291,16 @@ Micleusanu Nicu Miguel Angel Asencio Hurtado Mikael Bourges-Sevenier Mike Kaufman +Mike MacCana Minqi Pan Minuk Park Minwoo Jung Minwoo Jung -Miroslav Bajtoš +Miroslav Bajtoš +Miroslav Bajtoš +Miroslav Bajtoš Mitar Milutinovic +Mithun Sasidharan Myles Borins Myles Borins Myles Borins diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 00000000000000..d4af06e4156947 --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,8 @@ +extends: relaxed + +rules: + line-length: disable + +ignore: | + /deps/ + node_modules/ diff --git a/AUTHORS b/AUTHORS index b9ad7e86f12f5c..fc25b4270f00ed 100644 --- a/AUTHORS +++ b/AUTHORS @@ -444,7 +444,7 @@ Ryan Graham Kelly Gerber Ryan Doenges Sean Silva -Miroslav Bajtoš +Miroslav Bajtoš Olof Johansson Sam Roberts Kevin Locke @@ -744,7 +744,7 @@ Sakthipriyan Vairamani AQNOUCH Mohammed Ivan Kozik Oleg Elifantiev -Mike MacCana +Mike MacCana Josh Gummersall Sam Mikes Frederic Hemberger @@ -1626,7 +1626,6 @@ Pini Houri Runite618 phisixersai hsmtkk -Miroslav Bajtoš Sebastian Murphy 陈刚 Jon Moss @@ -2172,7 +2171,6 @@ Beni von Cheni Ilya Sotov William Cohen Ajido -Mithun Sasidharan kailash k yogeshwar Daniel Hritzkiv Mark Tiedemann @@ -2486,7 +2484,7 @@ Loic Denis McDonald Arvind Pandey Jagannath Bhat -Geoffrey Booth +Geoffrey Booth mritunjaygoutam12 Esteban Sotillo Jerome Covington @@ -2693,7 +2691,7 @@ Evan Plaice simon3000 Marcos Casagrande Ruwan Geeganage -Maël Nison +Maël Nison Gerson Niño freestraws Daniel Beckert @@ -2782,7 +2780,6 @@ Ivan Villa Caleb ツ Everett Miken Gabriela Niño -Mike MacCana Tim Baverstock Walle Cyril Xu Meng @@ -2830,7 +2827,6 @@ Aditya Denis Zavershinskiy Levhita claudiahdz -Geoffrey Booth Javier Ledezma Marian Rusnak <4215517+marian-r@users.noreply.github.com> Jenia @@ -2846,7 +2842,7 @@ themez Maria Paktiti Unlocked <10186337+TheUnlocked@users.noreply.github.com> Huachao Mao -Lucas Pardue +Lucas Pardue Nicolas Thumann <46975855+n-thumann@users.noreply.github.com> akitsu-sanae Minuk Park @@ -2944,7 +2940,6 @@ Marek Łabuz Reza Fatahi Priyanka Kore Jan-Philip Gehrcke -Maël Nison qualitymanifest Rosen Penev Jeremy Albright @@ -3071,7 +3066,6 @@ sapics Sagar Jadhav Dennis Ameling Todd Short -Lucas Pardue Pragyan Das Shakil-Shahadat wenningplus @@ -3309,5 +3303,21 @@ Mestery Himadri Ganguly Howie Zhao Luan Devecchi +ashish maurya +Justin +Raz Luvaton +Don Jayamanne +Felix Yan +Ray +Node.js GitHub Bot +Alexey Ten +JckXia +Christian Boehlke +null <60427892+vierofernando@users.noreply.github.com> +Dominic Elm +treysis +shfshanyue +Nikita Galkin +vipul kumar # Generated by tools/update-authors.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c265902e7e281..d8b6e5e47c06d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,7 +32,8 @@ release. -16.9.1
+16.10.0
+16.9.1
16.9.0
16.8.0
16.7.0
diff --git a/Makefile b/Makefile index cc0539d98e8ab9..baae6a3b46bd26 100644 --- a/Makefile +++ b/Makefile @@ -1389,13 +1389,13 @@ cpplint: lint-cpp .PHONY: lint-py-build # python -m pip install flake8 -# Try with '--system' is to overcome systems that blindly set '--user' +# Try with '--system' if it fails without; the system may have set '--user' lint-py-build: $(info Pip installing flake8 linter on $(shell $(PYTHON) --version)...) $(PYTHON) -m pip install --upgrade -t tools/pip/site-packages flake8 || \ $(PYTHON) -m pip install --upgrade --system -t tools/pip/site-packages flake8 -ifneq ("","$(wildcard tools/pip/site-packages)") +ifneq ("","$(wildcard tools/pip/site-packages/flake8)") .PHONY: lint-py # Lints the Python code with flake8. # Flag the build if there are Python syntax errors or undefined names @@ -1407,6 +1407,24 @@ lint-py: $(warning Run 'make lint-py-build') endif +.PHONY: lint-yaml-build +# python -m pip install yamllint +# Try with '--system' if it fails without; the system may have set '--user' +lint-yaml-build: + $(info Pip installing yamllint on $(shell $(PYTHON) --version)...) + $(PYTHON) -m pip install --upgrade -t tools/pip/site-packages yamllint || \ + $(PYTHON) -m pip install --upgrade --system -t tools/pip/site-packages yamllint + +.PHONY: lint-yaml +# Lints the YAML files with yamllint. +lint-yaml: + @if [ -d "tools/pip/site-packages/yamllint" ]; then \ + PYTHONPATH=tools/pip $(PYTHON) -m yamllint .; \ + else \ + echo 'YAML linting with yamllint is not available'; \ + echo "Run 'make lint-yaml-build'"; \ + fi + .PHONY: lint .PHONY: lint-ci ifneq ("","$(wildcard tools/node_modules/eslint/)") @@ -1416,11 +1434,12 @@ lint: ## Run JS, C++, MD and doc linters. $(MAKE) lint-cpp || EXIT_STATUS=$$? ; \ $(MAKE) lint-addon-docs || EXIT_STATUS=$$? ; \ $(MAKE) lint-md || EXIT_STATUS=$$? ; \ + $(MAKE) lint-yaml || EXIT_STATUS=$$? ; \ exit $$EXIT_STATUS CONFLICT_RE=^>>>>>>> [[:xdigit:]]+|^<<<<<<< [[:alpha:]]+ # Related CI job: node-test-linter -lint-ci: lint-js-ci lint-cpp lint-py lint-md lint-addon-docs +lint-ci: lint-js-ci lint-cpp lint-py lint-md lint-addon-docs lint-yaml-build lint-yaml @if ! ( grep -IEqrs "$(CONFLICT_RE)" --exclude="error-message.js" benchmark deps doc lib src test tools ) \ && ! ( $(FIND) . -maxdepth 1 -type f | xargs grep -IEqs "$(CONFLICT_RE)" ); then \ exit 0 ; \ diff --git a/README.md b/README.md index 032b622908c319..b61b6b79f2a047 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ +

. #### Current and LTS releases + The [latest](https://nodejs.org/download/release/latest/) directory is an @@ -79,6 +81,7 @@ alias for the latest release from an LTS line. For example, the contains the latest Fermium (Node.js 14) release. #### Nightly releases + Each directory name and filename contains a date (in UTC) and the commit @@ -154,51 +157,53 @@ For information about the governance of the Node.js project, see + ### TSC (Technical Steering Committee) + * [aduh95](https://github.com/aduh95) - -**Antoine du Hamel** <duhamelantoine1995@gmail.com> (he/him) + **Antoine du Hamel** \ (he/him) * [apapirovski](https://github.com/apapirovski) - -**Anatoli Papirovski** <apapirovski@mac.com> (he/him) + **Anatoli Papirovski** \ (he/him) * [BethGriggs](https://github.com/BethGriggs) - -**Beth Griggs** <bgriggs@redhat.com> (she/her) + **Beth Griggs** \ (she/her) * [BridgeAR](https://github.com/BridgeAR) - -**Ruben Bridgewater** <ruben@bridgewater.de> (he/him) + **Ruben Bridgewater** \ (he/him) * [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) + **Сковорода Никита Андреевич** \ (he/him) * [cjihrig](https://github.com/cjihrig) - -**Colin Ihrig** <cjihrig@gmail.com> (he/him) + **Colin Ihrig** \ (he/him) * [codebytere](https://github.com/codebytere) - -**Shelley Vohr** <shelley.vohr@gmail.com> (she/her) + **Shelley Vohr** \ (she/her) * [danielleadams](https://github.com/danielleadams) - -**Danielle Adams** <adamzdanielle@gmail.com> (she/her) + **Danielle Adams** \ (she/her) * [fhinkel](https://github.com/fhinkel) - -**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) + **Franziska Hinkelmann** \ (she/her) * [gabrielschulhof](https://github.com/gabrielschulhof) - -**Gabriel Schulhof** <gabrielschulhof@gmail.com> + **Gabriel Schulhof** \ * [gireeshpunathil](https://github.com/gireeshpunathil) - -**Gireesh Punathil** <gpunathi@in.ibm.com> (he/him) + **Gireesh Punathil** \ (he/him) * [jasnell](https://github.com/jasnell) - -**James M Snell** <jasnell@gmail.com> (he/him) + **James M Snell** \ (he/him) * [joyeecheung](https://github.com/joyeecheung) - -**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) + **Joyee Cheung** \ (she/her) * [mcollina](https://github.com/mcollina) - -**Matteo Collina** <matteo.collina@gmail.com> (he/him) + **Matteo Collina** \ (he/him) * [mhdawson](https://github.com/mhdawson) - -**Michael Dawson** <midawson@redhat.com> (he/him) + **Michael Dawson** \ (he/him) * [mmarchini](https://github.com/mmarchini) - -**Mary Marchini** <oss@mmarchini.me> (she/her) + **Mary Marchini** \ (she/her) * [MylesBorins](https://github.com/MylesBorins) - -**Myles Borins** <myles.borins@gmail.com> (he/him) + **Myles Borins** \ (he/him) * [ronag](https://github.com/ronag) - -**Robert Nagy** <ronagy@icloud.com> + **Robert Nagy** \ * [targos](https://github.com/targos) - -**Michaël Zasso** <targos@protonmail.com> (he/him) + **Michaël Zasso** \ (he/him) * [tniessen](https://github.com/tniessen) - -**Tobias Nießen** <tniessen@tnie.de> + **Tobias Nießen** \ * [Trott](https://github.com/Trott) - -**Rich Trott** <rtrott@gmail.com> (he/him) + **Rich Trott** \ (he/him)

@@ -207,261 +212,264 @@ For information about the governance of the Node.js project, see ### TSC emeriti * [addaleax](https://github.com/addaleax) - -**Anna Henningsen** <anna@addaleax.net> (she/her) + **Anna Henningsen** \ (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - -**Ben Noordhuis** <info@bnoordhuis.nl> + **Ben Noordhuis** \ * [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> + **Chris Dickinson** \ * [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.com> (he/him) + **Daniel Bevenius** \ (he/him) * [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> (he/him) + **Evan Lucas** \ (he/him) * [Fishrock123](https://github.com/Fishrock123) - -**Jeremiah Senkpiel** <fishrock123@rocketmail.com> (he/they) + **Jeremiah Senkpiel** \ (he/they) * [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) + **Gibson Fahnestock** \ (he/him) * [indutny](https://github.com/indutny) - -**Fedor Indutny** <fedor@indutny.com> + **Fedor Indutny** \ * [isaacs](https://github.com/isaacs) - -**Isaac Z. Schlueter** <i@izs.me> + **Isaac Z. Schlueter** \ * [joshgav](https://github.com/joshgav) - -**Josh Gavant** <josh.gavant@outlook.com> + **Josh Gavant** \ * [mscdex](https://github.com/mscdex) - -**Brian White** <mscdex@mscdex.net> + **Brian White** \ * [nebrius](https://github.com/nebrius) - -**Bryan Hughes** <bryan@nebri.us> + **Bryan Hughes** \ * [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) + **Ali Ijaz Sheikh** \ (he/him) * [orangemocha](https://github.com/orangemocha) - -**Alexis Campailla** <orangemocha@nodejs.org> + **Alexis Campailla** \ * [piscisaureus](https://github.com/piscisaureus) - -**Bert Belder** <bertbelder@gmail.com> + **Bert Belder** \ * [rvagg](https://github.com/rvagg) - -**Rod Vagg** <r@va.gg> + **Rod Vagg** \ * [sam-github](https://github.com/sam-github) - -**Sam Roberts** <vieuxtech@gmail.com> + **Sam Roberts** \ * [shigeki](https://github.com/shigeki) - -**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) + **Shigeki Ohtsu** \ (he/him) * [thefourtheye](https://github.com/thefourtheye) - -**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) + **Sakthipriyan Vairamani** \ (he/him) * [TimothyGu](https://github.com/TimothyGu) - -**Tiancheng "Timothy" Gu** <timothygu99@gmail.com> (he/him) + **Tiancheng "Timothy" Gu** \ (he/him) * [trevnorris](https://github.com/trevnorris) - -**Trevor Norris** <trev.norris@gmail.com> + **Trevor Norris** \
+ ### Collaborators * [addaleax](https://github.com/addaleax) - -**Anna Henningsen** <anna@addaleax.net> (she/her) + **Anna Henningsen** \ (she/her) * [aduh95](https://github.com/aduh95) - -**Antoine du Hamel** <duhamelantoine1995@gmail.com> (he/him) + **Antoine du Hamel** \ (he/him) * [ak239](https://github.com/ak239) - -**Aleksei Koziatinskii** <ak239spb@gmail.com> + **Aleksei Koziatinskii** \ * [antsmartian](https://github.com/antsmartian) - -**Anto Aravinth** <anto.aravinth.cse@gmail.com> (he/him) + **Anto Aravinth** \ (he/him) * [apapirovski](https://github.com/apapirovski) - -**Anatoli Papirovski** <apapirovski@mac.com> (he/him) + **Anatoli Papirovski** \ (he/him) * [AshCripps](https://github.com/AshCripps) - -**Ash Cripps** <acripps@redhat.com> + **Ash Cripps** \ +* [Ayase-252](https://github.com/Ayase-252) - + **Qingyu Deng** \ * [bcoe](https://github.com/bcoe) - -**Ben Coe** <bencoe@gmail.com> (he/him) + **Ben Coe** \ (he/him) * [bengl](https://github.com/bengl) - -**Bryan English** <bryan@bryanenglish.com> (he/him) + **Bryan English** \ (he/him) * [benjamingr](https://github.com/benjamingr) - -**Benjamin Gruenbaum** <benjamingr@gmail.com> + **Benjamin Gruenbaum** \ * [BethGriggs](https://github.com/BethGriggs) - -**Beth Griggs** <bgriggs@redhat.com> (she/her) + **Beth Griggs** \ (she/her) * [bmeck](https://github.com/bmeck) - -**Bradley Farias** <bradley.meck@gmail.com> + **Bradley Farias** \ * [bmeurer](https://github.com/bmeurer) - -**Benedikt Meurer** <benedikt.meurer@gmail.com> + **Benedikt Meurer** \ * [boneskull](https://github.com/boneskull) - -**Christopher Hiller** <boneskull@boneskull.com> (he/him) + **Christopher Hiller** \ (he/him) * [BridgeAR](https://github.com/BridgeAR) - -**Ruben Bridgewater** <ruben@bridgewater.de> (he/him) + **Ruben Bridgewater** \ (he/him) * [bzoz](https://github.com/bzoz) - -**Bartosz Sosnowski** <bartosz@janeasystems.com> + **Bartosz Sosnowski** \ * [cclauss](https://github.com/cclauss) - -**Christian Clauss** <cclauss@me.com> (he/him) + **Christian Clauss** \ (he/him) * [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) + **Сковорода Никита Андреевич** \ (he/him) * [cjihrig](https://github.com/cjihrig) - -**Colin Ihrig** <cjihrig@gmail.com> (he/him) + **Colin Ihrig** \ (he/him) * [codebytere](https://github.com/codebytere) - -**Shelley Vohr** <shelley.vohr@gmail.com> (she/her) + **Shelley Vohr** \ (she/her) * [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.com> (he/him) + **Daniel Bevenius** \ (he/him) * [danielleadams](https://github.com/danielleadams) - -**Danielle Adams** <adamzdanielle@gmail.com> (she/her) + **Danielle Adams** \ (she/her) * [davisjam](https://github.com/davisjam) - -**Jamie Davis** <davisjam@vt.edu> (he/him) + **Jamie Davis** \ (he/him) * [DerekNonGeneric](https://github.com/DerekNonGeneric) - -**Derek Lewis** <DerekNonGeneric@inf.is> (he/him) + **Derek Lewis** \ (he/him) * [devnexen](https://github.com/devnexen) - -**David Carlier** <devnexen@gmail.com> + **David Carlier** \ * [devsnek](https://github.com/devsnek) - -**Gus Caplan** <me@gus.host> (they/them) + **Gus Caplan** \ (they/them) * [dmabupt](https://github.com/dmabupt) - -**Xu Meng** <dmabupt@gmail.com> (he/him) + **Xu Meng** \ (he/him) * [dnlup](https://github.com/dnlup) -**Daniele Belardi** <dwon.dnl@gmail.com> (he/him) + **Daniele Belardi** \ (he/him) * [edsadr](https://github.com/edsadr) - -**Adrian Estrada** <edsadr@gmail.com> (he/him) + **Adrian Estrada** \ (he/him) * [eugeneo](https://github.com/eugeneo) - -**Eugene Ostroukhov** <eostroukhov@google.com> + **Eugene Ostroukhov** \ * [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> (he/him) + **Evan Lucas** \ (he/him) * [fhinkel](https://github.com/fhinkel) - -**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) + **Franziska Hinkelmann** \ (she/her) * [Fishrock123](https://github.com/Fishrock123) - -**Jeremiah Senkpiel** <fishrock123@rocketmail.com> (he/they) + **Jeremiah Senkpiel** \ (he/they) * [Flarna](https://github.com/Flarna) - -**Gerhard Stöbich** <deb2001-github@yahoo.de> (he/they) + **Gerhard Stöbich** \ (he/they) * [gabrielschulhof](https://github.com/gabrielschulhof) - -**Gabriel Schulhof** <gabrielschulhof@gmail.com> + **Gabriel Schulhof** \ * [geek](https://github.com/geek) - -**Wyatt Preul** <wpreul@gmail.com> + **Wyatt Preul** \ * [gengjiawen](https://github.com/gengjiawen) - -**Jiawen Geng** <technicalcute@gmail.com> + **Jiawen Geng** \ * [GeoffreyBooth](https://github.com/geoffreybooth) - -**Geoffrey Booth** <webmaster@geoffreybooth.com> (he/him) + **Geoffrey Booth** \ (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - -**Gireesh Punathil** <gpunathi@in.ibm.com> (he/him) + **Gireesh Punathil** \ (he/him) * [guybedford](https://github.com/guybedford) - -**Guy Bedford** <guybedford@gmail.com> (he/him) + **Guy Bedford** \ (he/him) * [HarshithaKP](https://github.com/HarshithaKP) - -**Harshitha K P** <harshitha014@gmail.com> (she/her) + **Harshitha K P** \ (she/her) * [hashseed](https://github.com/hashseed) - -**Yang Guo** <yangguo@chromium.org> (he/him) + **Yang Guo** \ (he/him) * [himself65](https://github.com/himself65) - -**Zeyu Yang** <himself65@outlook.com> (he/him) + **Zeyu Yang** \ (he/him) * [hiroppy](https://github.com/hiroppy) - -**Yuta Hiroto** <hello@hiroppy.me> (he/him) + **Yuta Hiroto** \ (he/him) * [iansu](https://github.com/iansu) - -**Ian Sutherland** <ian@iansutherland.ca> + **Ian Sutherland** \ * [indutny](https://github.com/indutny) - -**Fedor Indutny** <fedor@indutny.com> + **Fedor Indutny** \ * [JacksonTian](https://github.com/JacksonTian) - -**Jackson Tian** <shyvo1987@gmail.com> + **Jackson Tian** \ * [jasnell](https://github.com/jasnell) - -**James M Snell** <jasnell@gmail.com> (he/him) + **James M Snell** \ (he/him) * [jkrems](https://github.com/jkrems) - -**Jan Krems** <jan.krems@gmail.com> (he/him) + **Jan Krems** \ (he/him) * [joaocgreis](https://github.com/joaocgreis) - -**João Reis** <reis@janeasystems.com> + **João Reis** \ * [joyeecheung](https://github.com/joyeecheung) - -**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) + **Joyee Cheung** \ (she/her) * [juanarbol](https://github.com/juanarbol) - -**Juan José Arboleda** <soyjuanarbol@gmail.com> (he/him) + **Juan José Arboleda** \ (he/him) * [JungMinu](https://github.com/JungMinu) - -**Minwoo Jung** <nodecorelab@gmail.com> (he/him) + **Minwoo Jung** \ (he/him) * [legendecas](https://github.com/legendecas) - -**Chengzhong Wu** <legendecas@gmail.com> (he/him) + **Chengzhong Wu** \ (he/him) * [Leko](https://github.com/Leko) - -**Shingo Inoue** <leko.noor@gmail.com> (he/him) + **Shingo Inoue** \ (he/him) * [linkgoron](https://github.com/linkgoron) - -**Nitzan Uziely** <linkgoron@gmail.com> + **Nitzan Uziely** \ * [lpinca](https://github.com/lpinca) - -**Luigi Pinca** <luigipinca@gmail.com> (he/him) + **Luigi Pinca** \ (he/him) * [lundibundi](https://github.com/lundibundi) - -**Denys Otrishko** <shishugi@gmail.com> (he/him) + **Denys Otrishko** \ (he/him) * [Lxxyx](https://github.com/Lxxyx) - -**Zijian Liu** <lxxyxzj@gmail.com> (he/him) + **Zijian Liu** \ (he/him) * [mafintosh](https://github.com/mafintosh) - -**Mathias Buus** <mathiasbuus@gmail.com> (he/him) + **Mathias Buus** \ (he/him) * [mcollina](https://github.com/mcollina) - -**Matteo Collina** <matteo.collina@gmail.com> (he/him) + **Matteo Collina** \ (he/him) * [mhdawson](https://github.com/mhdawson) - -**Michael Dawson** <midawson@redhat.com> (he/him) + **Michael Dawson** \ (he/him) * [miladfarca](https://github.com/miladfarca) - -**Milad Fa** <mfarazma@redhat.com> (he/him) + **Milad Fa** \ (he/him) * [mildsunrise](https://github.com/mildsunrise) - -**Alba Mendez** <me@alba.sh> (she/her) + **Alba Mendez** \ (she/her) * [misterdjules](https://github.com/misterdjules) - -**Julien Gilli** <jgilli@netflix.com> + **Julien Gilli** \ * [mmarchini](https://github.com/mmarchini) - -**Mary Marchini** <oss@mmarchini.me> (she/her) + **Mary Marchini** \ (she/her) * [mscdex](https://github.com/mscdex) - -**Brian White** <mscdex@mscdex.net> + **Brian White** \ * [MylesBorins](https://github.com/MylesBorins) - -**Myles Borins** <myles.borins@gmail.com> (he/him) + **Myles Borins** \ (he/him) * [oyyd](https://github.com/oyyd) - -**Ouyang Yadong** <oyydoibh@gmail.com> (he/him) + **Ouyang Yadong** \ (he/him) * [panva](https://github.com/panva) - -**Filip Skokan** <panva.ip@gmail.com> + **Filip Skokan** \ * [PoojaDurgad](https://github.com/PoojaDurgad) - -**Pooja D P** <Pooja.D.P@ibm.com> (she/her) + **Pooja D P** \ (she/her) * [puzpuzpuz](https://github.com/puzpuzpuz) - -**Andrey Pechkurov** <apechkurov@gmail.com> (he/him) + **Andrey Pechkurov** \ (he/him) * [Qard](https://github.com/Qard) - -**Stephen Belanger** <admin@stephenbelanger.com> (he/him) + **Stephen Belanger** \ (he/him) * [RaisinTen](https://github.com/RaisinTen) - -**Darshan Sen** <raisinten@gmail.com> (he/him) + **Darshan Sen** \ (he/him) * [refack](https://github.com/refack) - -**Refael Ackermann (רפאל פלחי)** <refack@gmail.com> (he/him/הוא/אתה) + **Refael Ackermann (רפאל פלחי)** \ (he/him/הוא/אתה) * [rexagod](https://github.com/rexagod) - -**Pranshu Srivastava** <rexagod@gmail.com> (he/him) + **Pranshu Srivastava** \ (he/him) * [richardlau](https://github.com/richardlau) - -**Richard Lau** <rlau@redhat.com> + **Richard Lau** \ * [rickyes](https://github.com/rickyes) - -**Ricky Zhou** <0x19951125@gmail.com> (he/him) + **Ricky Zhou** \<0x19951125@gmail.com> (he/him) * [ronag](https://github.com/ronag) - -**Robert Nagy** <ronagy@icloud.com> + **Robert Nagy** \ * [ruyadorno](https://github.com/ruyadorno) - -**Ruy Adorno** <ruyadorno@github.com> (he/him) + **Ruy Adorno** \ (he/him) * [rvagg](https://github.com/rvagg) - -**Rod Vagg** <rod@vagg.org> + **Rod Vagg** \ * [ryzokuken](https://github.com/ryzokuken) - -**Ujjwal Sharma** <ryzokuken@disroot.org> (he/him) + **Ujjwal Sharma** \ (he/him) * [saghul](https://github.com/saghul) - -**Saúl Ibarra Corretgé** <s@saghul.net> + **Saúl Ibarra Corretgé** \ * [santigimeno](https://github.com/santigimeno) - -**Santiago Gimeno** <santiago.gimeno@gmail.com> + **Santiago Gimeno** \ * [seishun](https://github.com/seishun) - -**Nikolai Vavilov** <vvnicholas@gmail.com> + **Nikolai Vavilov** \ * [shisama](https://github.com/shisama) - -**Masashi Hirano** <shisama07@gmail.com> (he/him) + **Masashi Hirano** \ (he/him) * [silverwind](https://github.com/silverwind) - -**Roman Reiss** <me@silverwind.io> + **Roman Reiss** \ * [srl295](https://github.com/srl295) - -**Steven R Loomis** <srloomis@us.ibm.com> + **Steven R Loomis** \ * [starkwang](https://github.com/starkwang) - -**Weijia Wang** <starkwang@126.com> + **Weijia Wang** \ * [sxa](https://github.com/sxa) - -**Stewart X Addison** <sxa@redhat.com> (he/him) + **Stewart X Addison** \ (he/him) * [targos](https://github.com/targos) - -**Michaël Zasso** <targos@protonmail.com> (he/him) + **Michaël Zasso** \ (he/him) * [TimothyGu](https://github.com/TimothyGu) - -**Tiancheng "Timothy" Gu** <timothygu99@gmail.com> (he/him) + **Tiancheng "Timothy" Gu** \ (he/him) * [tniessen](https://github.com/tniessen) - -**Tobias Nießen** <tniessen@tnie.de> + **Tobias Nießen** \ * [trivikr](https://github.com/trivikr) - -**Trivikram Kamat** <trivikr.dev@gmail.com> + **Trivikram Kamat** \ * [Trott](https://github.com/Trott) - -**Rich Trott** <rtrott@gmail.com> (he/him) + **Rich Trott** \ (he/him) * [vdeturckheim](https://github.com/vdeturckheim) - -**Vladimir de Turckheim** <vlad2t@hotmail.com> (he/him) + **Vladimir de Turckheim** \ (he/him) * [watilde](https://github.com/watilde) - -**Daijiro Wachi** <daijiro.wachi@gmail.com> (he/him) + **Daijiro Wachi** \ (he/him) * [watson](https://github.com/watson) - -**Thomas Watson** <w@tson.dk> + **Thomas Watson** \ * [XadillaX](https://github.com/XadillaX) - -**Khaidi Chu** <i@2333.moe> (he/him) + **Khaidi Chu** \ (he/him) * [yashLadha](https://github.com/yashLadha) - -**Yash Ladha** <yash@yashladha.in> (he/him) + **Yash Ladha** \ (he/him) * [yhwang](https://github.com/yhwang) - -**Yihong Wang** <yh.wang@ibm.com> + **Yihong Wang** \ * [yorkie](https://github.com/yorkie) - -**Yorkie Liu** <yorkiefixer@gmail.com> + **Yorkie Liu** \ * [yosuke-furukawa](https://github.com/yosuke-furukawa) - -**Yosuke Furukawa** <yosuke.furukawa@gmail.com> + **Yosuke Furukawa** \ * [ZYSzys](https://github.com/ZYSzys) - -**Yongsheng Zhang** <zyszys98@gmail.com> (he/him) + **Yongsheng Zhang** \ (he/him)
@@ -469,146 +477,147 @@ For information about the governance of the Node.js project, see + ### Collaborator emeriti * [andrasq](https://github.com/andrasq) - -**Andras** <andras@kinvey.com> + **Andras** \ * [AnnaMag](https://github.com/AnnaMag) - -**Anna M. Kedzierska** <anna.m.kedzierska@gmail.com> + **Anna M. Kedzierska** \ * [AndreasMadsen](https://github.com/AndreasMadsen) - -**Andreas Madsen** <amwebdk@gmail.com> (he/him) + **Andreas Madsen** \ (he/him) * [aqrln](https://github.com/aqrln) - -**Alexey Orlenko** <eaglexrlnk@gmail.com> (he/him) + **Alexey Orlenko** \ (he/him) * [bnoordhuis](https://github.com/bnoordhuis) - -**Ben Noordhuis** <info@bnoordhuis.nl> + **Ben Noordhuis** \ * [brendanashworth](https://github.com/brendanashworth) - -**Brendan Ashworth** <brendan.ashworth@me.com> + **Brendan Ashworth** \ * [calvinmetcalf](https://github.com/calvinmetcalf) - -**Calvin Metcalf** <calvin.metcalf@gmail.com> + **Calvin Metcalf** \ * [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> + **Chris Dickinson** \ * [claudiorodriguez](https://github.com/claudiorodriguez) - -**Claudio Rodriguez** <cjrodr@yahoo.com> + **Claudio Rodriguez** \ * [DavidCai1993](https://github.com/DavidCai1993) - -**David Cai** <davidcai1993@yahoo.com> (he/him) + **David Cai** \ (he/him) * [digitalinfinity](https://github.com/digitalinfinity) - -**Hitesh Kanwathirtha** <digitalinfinity@gmail.com> (he/him) + **Hitesh Kanwathirtha** \ (he/him) * [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - -**Robert Jefe Lindstaedt** <robert.lindstaedt@gmail.com> + **Robert Jefe Lindstaedt** \ * [estliberitas](https://github.com/estliberitas) - -**Alexander Makarenko** <estliberitas@gmail.com> + **Alexander Makarenko** \ * [firedfox](https://github.com/firedfox) - -**Daniel Wang** <wangyang0123@gmail.com> + **Daniel Wang** \ * [gdams](https://github.com/gdams) - -**George Adams** <george.adams@microsoft.com> (he/him) + **George Adams** \ (he/him) * [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) + **Gibson Fahnestock** \ (he/him) * [glentiki](https://github.com/glentiki) - -**Glen Keane** <glenkeane.94@gmail.com> (he/him) + **Glen Keane** \ (he/him) * [iarna](https://github.com/iarna) - -**Rebecca Turner** <me@re-becca.org> + **Rebecca Turner** \ * [imran-iq](https://github.com/imran-iq) - -**Imran Iqbal** <imran@imraniqbal.org> + **Imran Iqbal** \ * [imyller](https://github.com/imyller) - -**Ilkka Myller** <ilkka.myller@nodefield.com> + **Ilkka Myller** \ * [isaacs](https://github.com/isaacs) - -**Isaac Z. Schlueter** <i@izs.me> + **Isaac Z. Schlueter** \ * [italoacasas](https://github.com/italoacasas) - -**Italo A. Casas** <me@italoacasas.com> (he/him) + **Italo A. Casas** \ (he/him) * [jasongin](https://github.com/jasongin) - -**Jason Ginchereau** <jasongin@microsoft.com> + **Jason Ginchereau** \ * [jbergstroem](https://github.com/jbergstroem) - -**Johan Bergström** <bugs@bergstroem.nu> + **Johan Bergström** \ * [jdalton](https://github.com/jdalton) - -**John-David Dalton** <john.david.dalton@gmail.com> + **John-David Dalton** \ * [jhamhader](https://github.com/jhamhader) - -**Yuval Brik** <yuval@brik.org.il> + **Yuval Brik** \ * [joshgav](https://github.com/joshgav) - -**Josh Gavant** <josh.gavant@outlook.com> + **Josh Gavant** \ * [julianduque](https://github.com/julianduque) - -**Julian Duque** <julianduquej@gmail.com> (he/him) + **Julian Duque** \ (he/him) * [kfarnung](https://github.com/kfarnung) - -**Kyle Farnung** <kfarnung@microsoft.com> (he/him) + **Kyle Farnung** \ (he/him) * [kunalspathak](https://github.com/kunalspathak) - -**Kunal Pathak** <kunal.pathak@microsoft.com> + **Kunal Pathak** \ * [lance](https://github.com/lance) - -**Lance Ball** <lball@redhat.com> (he/him) + **Lance Ball** \ (he/him) * [lucamaraschi](https://github.com/lucamaraschi) - -**Luca Maraschi** <luca.maraschi@gmail.com> (he/him) + **Luca Maraschi** \ (he/him) * [lxe](https://github.com/lxe) - -**Aleksey Smolenchuk** <lxe@lxe.co> + **Aleksey Smolenchuk** \ * [maclover7](https://github.com/maclover7) - -**Jon Moss** <me@jonathanmoss.me> (he/him) + **Jon Moss** \ (he/him) * [matthewloring](https://github.com/matthewloring) - -**Matthew Loring** <mattloring@google.com> + **Matthew Loring** \ * [micnic](https://github.com/micnic) - -**Nicu Micleușanu** <micnic90@gmail.com> (he/him) + **Nicu Micleușanu** \ (he/him) * [mikeal](https://github.com/mikeal) - -**Mikeal Rogers** <mikeal.rogers@gmail.com> + **Mikeal Rogers** \ * [monsanto](https://github.com/monsanto) - -**Christopher Monsanto** <chris@monsan.to> + **Christopher Monsanto** \ * [MoonBall](https://github.com/MoonBall) - -**Chen Gang** <gangc.cxy@foxmail.com> + **Chen Gang** \ * [not-an-aardvark](https://github.com/not-an-aardvark) - -**Teddy Katz** <teddy.katz@gmail.com> (he/him) + **Teddy Katz** \ (he/him) * [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) + **Ali Ijaz Sheikh** \ (he/him) * [Olegas](https://github.com/Olegas) - -**Oleg Elifantiev** <oleg@elifantiev.ru> + **Oleg Elifantiev** \ * [orangemocha](https://github.com/orangemocha) - -**Alexis Campailla** <orangemocha@nodejs.org> + **Alexis Campailla** \ * [othiym23](https://github.com/othiym23) - -**Forrest L Norvell** <ogd@aoaioxxysz.net> (he/him) + **Forrest L Norvell** \ (he/him) * [petkaantonov](https://github.com/petkaantonov) - -**Petka Antonov** <petka_antonov@hotmail.com> + **Petka Antonov** \ * [phillipj](https://github.com/phillipj) - -**Phillip Johnsen** <johphi@gmail.com> + **Phillip Johnsen** \ * [piscisaureus](https://github.com/piscisaureus) - -**Bert Belder** <bertbelder@gmail.com> + **Bert Belder** \ * [pmq20](https://github.com/pmq20) - -**Minqi Pan** <pmq2001@gmail.com> + **Minqi Pan** \ * [princejwesley](https://github.com/princejwesley) - -**Prince John Wesley** <princejohnwesley@gmail.com> + **Prince John Wesley** \ * [psmarshall](https://github.com/psmarshall) - -**Peter Marshall** <petermarshall@chromium.org> (he/him) + **Peter Marshall** \ (he/him) * [rlidwka](https://github.com/rlidwka) - -**Alex Kocharin** <alex@kocharin.ru> + **Alex Kocharin** \ * [rmg](https://github.com/rmg) - -**Ryan Graham** <r.m.graham@gmail.com> + **Ryan Graham** \ * [robertkowalski](https://github.com/robertkowalski) - -**Robert Kowalski** <rok@kowalski.gd> + **Robert Kowalski** \ * [romankl](https://github.com/romankl) - -**Roman Klauke** <romaaan.git@gmail.com> + **Roman Klauke** \ * [ronkorving](https://github.com/ronkorving) - -**Ron Korving** <ron@ronkorving.nl> + **Ron Korving** \ * [RReverser](https://github.com/RReverser) - -**Ingvar Stepanyan** <me@rreverser.com> + **Ingvar Stepanyan** \ * [rubys](https://github.com/rubys) - -**Sam Ruby** <rubys@intertwingly.net> + **Sam Ruby** \ * [sam-github](https://github.com/sam-github) - -**Sam Roberts** <vieuxtech@gmail.com> + **Sam Roberts** \ * [sebdeckers](https://github.com/sebdeckers) - -**Sebastiaan Deckers** <sebdeckers83@gmail.com> + **Sebastiaan Deckers** \ * [shigeki](https://github.com/shigeki) - -**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) + **Shigeki Ohtsu** \ (he/him) * [stefanmb](https://github.com/stefanmb) - -**Stefan Budeanu** <stefan@budeanu.com> + **Stefan Budeanu** \ * [tellnes](https://github.com/tellnes) - -**Christian Tellnes** <christian@tellnes.no> + **Christian Tellnes** \ * [thefourtheye](https://github.com/thefourtheye) - -**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) + **Sakthipriyan Vairamani** \ (he/him) * [thlorenz](https://github.com/thlorenz) - -**Thorsten Lorenz** <thlorenz@gmx.de> + **Thorsten Lorenz** \ * [trevnorris](https://github.com/trevnorris) - -**Trevor Norris** <trev.norris@gmail.com> + **Trevor Norris** \ * [tunniclm](https://github.com/tunniclm) - -**Mike Tunnicliffe** <m.j.tunnicliffe@gmail.com> + **Mike Tunnicliffe** \ * [vkurchatkin](https://github.com/vkurchatkin) - -**Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com> + **Vladimir Kurchatkin** \ * [vsemozhetbyt](https://github.com/vsemozhetbyt) - -**Vse Mozhet Byt** <vsemozhetbyt@gmail.com> (he/him) + **Vse Mozhet Byt** \ (he/him) * [whitlockjc](https://github.com/whitlockjc) - -**Jeremy Whitlock** <jwhitlock@apache.org> + **Jeremy Whitlock** \
@@ -619,48 +628,48 @@ maintaining the Node.js project. ### Triagers * [Ayase-252](https://github.com/Ayase-252) - -**Qingyu Deng** <i@ayase-lab.com> + **Qingyu Deng** \ * [himadriganguly](https://github.com/himadriganguly) - -**Himadri Ganguly** <himadri.tech@gmail.com> (he/him) + **Himadri Ganguly** \ (he/him) * [iam-frankqiu](https://github.com/iam-frankqiu) - -**Frank Qiu** <iam.frankqiu@gmail.com> (he/him) + **Frank Qiu** \ (he/him) * [marsonya](https://github.com/marsonya) - -**Akhil Marsonya** <akhil.marsonya27@gmail.com> (he/him) + **Akhil Marsonya** \ (he/him) * [Mesteery](https://github.com/Mesteery) - -**Mestery** <mestery@pm.me> + **Mestery** \ * [PoojaDurgad](https://github.com/PoojaDurgad) - -**Pooja Durgad** <Pooja.D.P@ibm.com> + **Pooja Durgad** \ * [RaisinTen](https://github.com/RaisinTen) - -**Darshan Sen** <raisinten@gmail.com> + **Darshan Sen** \ * [VoltrexMaster](https://github.com/VoltrexMaster) - -**Voltrex** <mohammadkeyvanzade94@gmail.com> (he/him) + **Voltrex** \ (he/him) ### Release keys Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys): -* **Beth Griggs** <bgriggs@redhat.com> -`4ED778F539E3634C779C87C6D7062848A1AB005C` -* **Colin Ihrig** <cjihrig@gmail.com> -`94AE36675C464D64BAFA68DD7434390BDBE9B9C5` -* **Danielle Adams** <adamzdanielle@gmail.com> -`74F12602B6F1C4E913FAA37AD3A89613643B6201` -* **James M Snell** <jasnell@keybase.io> -`71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` -* **Michaël Zasso** <targos@protonmail.com> -`8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` -* **Myles Borins** <myles.borins@gmail.com> -`C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` -* **Richard Lau** <rlau@redhat.com> -`C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` -* **Rod Vagg** <rod@vagg.org> -`DD8F2338BAE7501E3DD5AC78C273792F7D83545D` -* **Ruben Bridgewater** <ruben@bridgewater.de> -`A48C2BEE680E841632CD4E44F07496B3EB3C1762` -* **Ruy Adorno** <ruyadorno@hotmail.com> -`108F52B48DB57BB0CC439B2997B01419BD92F80A` -* **Shelley Vohr** <shelley.vohr@gmail.com> -`B9E2F5981AA6E0CD28160D9FF13993A75599653C` +* **Beth Griggs** \ + `4ED778F539E3634C779C87C6D7062848A1AB005C` +* **Colin Ihrig** \ + `94AE36675C464D64BAFA68DD7434390BDBE9B9C5` +* **Danielle Adams** \ + `74F12602B6F1C4E913FAA37AD3A89613643B6201` +* **James M Snell** \ + `71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` +* **Michaël Zasso** \ + `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` +* **Myles Borins** \ + `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` +* **Richard Lau** \ + `C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` +* **Rod Vagg** \ + `DD8F2338BAE7501E3DD5AC78C273792F7D83545D` +* **Ruben Bridgewater** \ + `A48C2BEE680E841632CD4E44F07496B3EB3C1762` +* **Ruy Adorno** \ + `108F52B48DB57BB0CC439B2997B01419BD92F80A` +* **Shelley Vohr** \ + `B9E2F5981AA6E0CD28160D9FF13993A75599653C` To import the full set of trusted release keys (including subkeys possibly used to sign releases): @@ -686,24 +695,24 @@ use these keys to verify a downloaded file. Other keys used to sign some previous releases -* **Chris Dickinson** <christopher.s.dickinson@gmail.com> -`9554F04D7259F04124DE6B476D5A82AC7E37093B` -* **Danielle Adams** <adamzdanielle@gmail.com> -`1C050899334244A8AF75E53792EF661D867B9DFA` -* **Evan Lucas** <evanlucas@me.com> -`B9AE9905FFD7803F25714661B63B535A4C206CA9` -* **Gibson Fahnestock** <gibfahn@gmail.com> -`77984A986EBC2AA786BC0F66B01FBB92821C587A` -* **Isaac Z. Schlueter** <i@izs.me> -`93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` -* **Italo A. Casas** <me@italoacasas.com> -`56730D5401028683275BD23C23EFEFE93C4CFFFE` -* **Jeremiah Senkpiel** <fishrock@keybase.io> -`FD3A5288F042B6850C66B31F09FE44734EB7990E` -* **Julien Gilli** <jgilli@fastmail.fm> -`114F43EE0176B71C7BC219DD50A3051F888C628D` -* **Timothy J Fontaine** <tjfontaine@gmail.com> -`7937DFD2AB06298B2293C3187D33FF9D0246406D` +* **Chris Dickinson** \ + `9554F04D7259F04124DE6B476D5A82AC7E37093B` +* **Danielle Adams** \ + `1C050899334244A8AF75E53792EF661D867B9DFA` +* **Evan Lucas** \ + `B9AE9905FFD7803F25714661B63B535A4C206CA9` +* **Gibson Fahnestock** \ + `77984A986EBC2AA786BC0F66B01FBB92821C587A` +* **Isaac Z. Schlueter** \ + `93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` +* **Italo A. Casas** \ + `56730D5401028683275BD23C23EFEFE93C4CFFFE` +* **Jeremiah Senkpiel** \ + `FD3A5288F042B6850C66B31F09FE44734EB7990E` +* **Julien Gilli** \ + `114F43EE0176B71C7BC219DD50A3051F888C628D` +* **Timothy J Fontaine** \ + `7937DFD2AB06298B2293C3187D33FF9D0246406D` diff --git a/common.gypi b/common.gypi index 013f24b107408f..7bc2b3abf47019 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.12', + 'v8_embedder_string': '-node.14', ##### V8 defaults for Node.js ##### @@ -268,6 +268,7 @@ ], 'msvs_settings': { 'VCCLCompilerTool': { + 'AdditionalOptions': ['/Zc:__cplusplus'], 'BufferSecurityCheck': 'true', 'DebugInformationFormat': 1, # /Z7 embed info in .obj files 'ExceptionHandling': 0, # /EHsc diff --git a/deps/acorn/acorn-walk/CHANGELOG.md b/deps/acorn/acorn-walk/CHANGELOG.md index a9382d0db9abef..30ec5a5eec9911 100644 --- a/deps/acorn/acorn-walk/CHANGELOG.md +++ b/deps/acorn/acorn-walk/CHANGELOG.md @@ -1,3 +1,15 @@ +## 8.2.0 (2021-09-06) + +### New features + +Add support for walking ES2022 class static blocks. + +## 8.1.1 (2021-06-29) + +### Bug fixes + +Include `base` in the type declarations. + ## 8.1.0 (2021-04-24) ### New features diff --git a/deps/acorn/acorn-walk/dist/walk.d.ts b/deps/acorn/acorn-walk/dist/walk.d.ts index 00cc005f1245c5..2d81f01c166875 100644 --- a/deps/acorn/acorn-walk/dist/walk.d.ts +++ b/deps/acorn/acorn-walk/dist/walk.d.ts @@ -109,4 +109,6 @@ declare module "acorn-walk" { ): Found | undefined; export const findNodeAfter: typeof findNodeAround; + + export const base: RecursiveVisitors; } diff --git a/deps/acorn/acorn-walk/dist/walk.js b/deps/acorn/acorn-walk/dist/walk.js index 5582c907595e11..a7f81b0061a750 100644 --- a/deps/acorn/acorn-walk/dist/walk.js +++ b/deps/acorn/acorn-walk/dist/walk.js @@ -190,7 +190,7 @@ var base = {}; - base.Program = base.BlockStatement = function (node, st, c) { + base.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) { for (var i = 0, list = node.body; i < list.length; i += 1) { var stmt = list[i]; diff --git a/deps/acorn/acorn-walk/dist/walk.mjs b/deps/acorn/acorn-walk/dist/walk.mjs index ea5d4b0bc2041f..89dd1f1f4f3557 100644 --- a/deps/acorn/acorn-walk/dist/walk.mjs +++ b/deps/acorn/acorn-walk/dist/walk.mjs @@ -184,7 +184,7 @@ function ignore(_node, _st, _c) {} var base = {}; -base.Program = base.BlockStatement = function (node, st, c) { +base.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) { for (var i = 0, list = node.body; i < list.length; i += 1) { var stmt = list[i]; diff --git a/deps/acorn/acorn-walk/package.json b/deps/acorn/acorn-walk/package.json index 118bb0be2c72f5..8d75b9711c2e35 100644 --- a/deps/acorn/acorn-walk/package.json +++ b/deps/acorn/acorn-walk/package.json @@ -16,7 +16,7 @@ ], "./package.json": "./package.json" }, - "version": "8.1.0", + "version": "8.2.0", "engines": {"node": ">=0.4.0"}, "maintainers": [ { diff --git a/deps/acorn/acorn/CHANGELOG.md b/deps/acorn/acorn/CHANGELOG.md index d69ad881253118..117c898c8ad156 100644 --- a/deps/acorn/acorn/CHANGELOG.md +++ b/deps/acorn/acorn/CHANGELOG.md @@ -1,3 +1,23 @@ +## 8.5.0 (2021-09-06) + +### Bug fixes + +Improve context-dependent tokenization in a number of corner cases. + +Fix location tracking after a 0x2028 or 0x2029 character in a string literal (which before did not increase the line number). + +Fix an issue where arrow function bodies in for loop context would inappropriately consume `in` operators. + +Fix wrong end locations stored on SequenceExpression nodes. + +Implement restriction that `for`/`of` loop LHS can't start with `let`. + +### New features + +Add support for ES2022 class static blocks. + +Allow multiple input files to be passed to the CLI tool. + ## 8.4.1 (2021-06-24) ### Bug fixes diff --git a/deps/acorn/acorn/README.md b/deps/acorn/acorn/README.md index f27a99444b6f3f..601e86c8fddfdb 100644 --- a/deps/acorn/acorn/README.md +++ b/deps/acorn/acorn/README.md @@ -54,7 +54,7 @@ required): - **ecmaVersion**: Indicates the ECMAScript version to parse. Must be either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 (2019), - 11 (2020), 12 (2021, partial support), 13 (2022, partial support) + 11 (2020), 12 (2021), 13 (2022, partial support) or `"latest"` (the latest the library supports). This influences support for strict mode, the set of reserved words, and support for new syntax features. diff --git a/deps/acorn/acorn/dist/acorn.d.ts b/deps/acorn/acorn/dist/acorn.d.ts index 8e8fbbcb426c3c..861b357fea3a64 100644 --- a/deps/acorn/acorn/dist/acorn.d.ts +++ b/deps/acorn/acorn/dist/acorn.d.ts @@ -173,6 +173,9 @@ declare namespace acorn { p_expr: TokContext q_tmpl: TokContext f_expr: TokContext + f_stat: TokContext + f_expr_gen: TokContext + f_gen: TokContext } function isIdentifierStart(code: number, astral?: boolean): boolean diff --git a/deps/acorn/acorn/dist/acorn.js b/deps/acorn/acorn/dist/acorn.js index af24e36cf16d2e..96e3b82d834408 100644 --- a/deps/acorn/acorn/dist/acorn.js +++ b/deps/acorn/acorn/dist/acorn.js @@ -252,8 +252,8 @@ var lineBreak = /\r\n?|\n|\u2028|\u2029/; var lineBreakG = new RegExp(lineBreak.source, "g"); - function isNewLine(code, ecma2019String) { - return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029)) + function isNewLine(code) { + return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 } var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; @@ -464,13 +464,14 @@ var SCOPE_TOP = 1, SCOPE_FUNCTION = 2, - SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION, SCOPE_ASYNC = 4, SCOPE_GENERATOR = 8, SCOPE_ARROW = 16, SCOPE_SIMPLE_CATCH = 32, SCOPE_SUPER = 64, - SCOPE_DIRECT_SUPER = 128; + SCOPE_DIRECT_SUPER = 128, + SCOPE_CLASS_STATIC_BLOCK = 256, + SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK; function functionFlags(async, generator) { return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) @@ -570,7 +571,7 @@ this.privateNameStack = []; }; - var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },inNonArrowFunction: { configurable: true } }; + var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } }; Parser.prototype.parse = function parse () { var node = this.options.program || this.startNode(); @@ -584,7 +585,7 @@ prototypeAccessors.canAwait.get = function () { for (var i = this.scopeStack.length - 1; i >= 0; i--) { var scope = this.scopeStack[i]; - if (scope.inClassFieldInit) { return false } + if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK) { return false } if (scope.flags & SCOPE_FUNCTION) { return (scope.flags & SCOPE_ASYNC) > 0 } } return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction @@ -597,11 +598,14 @@ }; prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; - prototypeAccessors.inNonArrowFunction.get = function () { + prototypeAccessors.allowNewDotTarget.get = function () { var ref = this.currentThisScope(); var flags = ref.flags; var inClassFieldInit = ref.inClassFieldInit; - return (flags & SCOPE_FUNCTION) > 0 || inClassFieldInit + return (flags & (SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit + }; + prototypeAccessors.inClassStaticBlock.get = function () { + return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0 }; Parser.extend = function extend () { @@ -1010,14 +1014,16 @@ if (awaitAt > -1) { this.unexpected(awaitAt); } return this.parseFor(node, init$1) } + var startsWithLet = this.isContextual("let"), isForOf = false; var refDestructuringErrors = new DestructuringErrors; var init = this.parseExpression(awaitAt > -1 ? "await" : true, refDestructuringErrors); - if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { + if (this.type === types._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { if (this.options.ecmaVersion >= 9) { if (this.type === types._in) { if (awaitAt > -1) { this.unexpected(awaitAt); } } else { node.await = awaitAt > -1; } } + if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } this.toAssignable(init, false, refDestructuringErrors); this.checkLValPattern(init); return this.parseForIn(node, init) @@ -1300,7 +1306,7 @@ // `statement & FUNC_STATEMENT`). // Remove `allowExpressionBody` for 7.0.0, as it is only called with false - pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) { + pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) { this.initFunction(node); if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { if (this.type === types.star && (statement & FUNC_HANGING_STATEMENT)) @@ -1330,7 +1336,7 @@ { node.id = this.type === types.name ? this.parseIdent() : null; } this.parseFunctionParams(node); - this.parseFunctionBody(node, allowExpressionBody, false); + this.parseFunctionBody(node, allowExpressionBody, false, forInit); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; @@ -1369,7 +1375,7 @@ if (element.type === "MethodDefinition" && element.kind === "constructor") { if (hadConstructor) { this.raise(element.start, "Duplicate constructor in the same class"); } hadConstructor = true; - } else if (element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { + } else if (element.key && element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { this.raiseRecoverable(element.key.start, ("Identifier '#" + (element.key.name) + "' has already been declared")); } } @@ -1390,16 +1396,21 @@ var isGenerator = false; var isAsync = false; var kind = "method"; + var isStatic = false; - // Parse modifiers - node.static = false; if (this.eatContextual("static")) { + // Parse static init block + if (ecmaVersion >= 13 && this.eat(types.braceL)) { + this.parseClassStaticBlock(node); + return node + } if (this.isClassElementNameStart() || this.type === types.star) { - node.static = true; + isStatic = true; } else { keyName = "static"; } } + node.static = isStatic; if (!keyName && ecmaVersion >= 8 && this.eatContextual("async")) { if ((this.isClassElementNameStart() || this.type === types.star) && !this.canInsertSemicolon()) { isAsync = true; @@ -1517,6 +1528,23 @@ return this.finishNode(field, "PropertyDefinition") }; + pp$1.parseClassStaticBlock = function(node) { + node.body = []; + + var oldLabels = this.labels; + this.labels = []; + this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); + while (this.type !== types.braceR) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + this.next(); + this.exitScope(); + this.labels = oldLabels; + + return this.finishNode(node, "StaticBlock") + }; + pp$1.parseClassId = function(node, isStatement) { if (this.type === types.name) { node.id = this.parseIdent(); @@ -1530,7 +1558,7 @@ }; pp$1.parseClassSuper = function(node) { - node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null; + node.superClass = this.eat(types._extends) ? this.parseExprSubscripts(false) : null; }; pp$1.enterClassBody = function() { @@ -2139,16 +2167,170 @@ } }; - // A recursive descent parser operates by defining functions for all + // The algorithm used to determine whether a regexp can appear at a + + var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + this.generator = !!generator; + }; + + var types$1 = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", false), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), + f_stat: new TokContext("function", false), + f_expr: new TokContext("function", true), + f_expr_gen: new TokContext("function", true, false, null, true), + f_gen: new TokContext("function", false, false, null, true) + }; var pp$3 = Parser.prototype; + pp$3.initialContext = function() { + return [types$1.b_stat] + }; + + pp$3.curContext = function() { + return this.context[this.context.length - 1] + }; + + pp$3.braceIsBlock = function(prevType) { + var parent = this.curContext(); + if (parent === types$1.f_expr || parent === types$1.f_stat) + { return true } + if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) + { return !parent.isExpr } + + // The check for `tt.name && exprAllowed` detects whether we are + // after a `yield` or `of` construct. See the `updateContext` for + // `tt.name`. + if (prevType === types._return || prevType === types.name && this.exprAllowed) + { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } + if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) + { return true } + if (prevType === types.braceL) + { return parent === types$1.b_stat } + if (prevType === types._var || prevType === types._const || prevType === types.name) + { return false } + return !this.exprAllowed + }; + + pp$3.inGeneratorContext = function() { + for (var i = this.context.length - 1; i >= 1; i--) { + var context = this.context[i]; + if (context.token === "function") + { return context.generator } + } + return false + }; + + pp$3.updateContext = function(prevType) { + var update, type = this.type; + if (type.keyword && prevType === types.dot) + { this.exprAllowed = false; } + else if (update = type.updateContext) + { update.call(this, prevType); } + else + { this.exprAllowed = type.beforeExpr; } + }; + + // Used to handle egde case when token context could not be inferred correctly in tokenize phase + pp$3.overrideContext = function(tokenCtx) { + if (this.curContext() !== tokenCtx) { + this.context[this.context.length - 1] = tokenCtx; + } + }; + + // Token-specific context update code + + types.parenR.updateContext = types.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return + } + var out = this.context.pop(); + if (out === types$1.b_stat && this.curContext().token === "function") { + out = this.context.pop(); + } + this.exprAllowed = !out.isExpr; + }; + + types.braceL.updateContext = function(prevType) { + this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr); + this.exprAllowed = true; + }; + + types.dollarBraceL.updateContext = function() { + this.context.push(types$1.b_tmpl); + this.exprAllowed = true; + }; + + types.parenL.updateContext = function(prevType) { + var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; + this.context.push(statementParens ? types$1.p_stat : types$1.p_expr); + this.exprAllowed = true; + }; + + types.incDec.updateContext = function() { + // tokExprAllowed stays unchanged + }; + + types._function.updateContext = types._class.updateContext = function(prevType) { + if (prevType.beforeExpr && prevType !== types._else && + !(prevType === types.semi && this.curContext() !== types$1.p_stat) && + !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && + !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) + { this.context.push(types$1.f_expr); } + else + { this.context.push(types$1.f_stat); } + this.exprAllowed = false; + }; + + types.backQuote.updateContext = function() { + if (this.curContext() === types$1.q_tmpl) + { this.context.pop(); } + else + { this.context.push(types$1.q_tmpl); } + this.exprAllowed = false; + }; + + types.star.updateContext = function(prevType) { + if (prevType === types._function) { + var index = this.context.length - 1; + if (this.context[index] === types$1.f_expr) + { this.context[index] = types$1.f_expr_gen; } + else + { this.context[index] = types$1.f_gen; } + } + this.exprAllowed = true; + }; + + types.name.updateContext = function(prevType) { + var allowed = false; + if (this.options.ecmaVersion >= 6 && prevType !== types.dot) { + if (this.value === "of" && !this.exprAllowed || + this.value === "yield" && this.inGeneratorContext()) + { allowed = true; } + } + this.exprAllowed = allowed; + }; + + // A recursive descent parser operates by defining functions for all + + var pp$4 = Parser.prototype; + // Check if property name clashes with already added. // Object/class getters and setters are not allowed to clash — // either with each other or with an init property — and in // strict mode, init properties are also not allowed to be repeated. - pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { + pp$4.checkPropClash = function(prop, propHash, refDestructuringErrors) { if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") { return } if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) @@ -2210,7 +2392,7 @@ // and object pattern might appear (so it's possible to raise // delayed syntax error at correct position). - pp$3.parseExpression = function(forInit, refDestructuringErrors) { + pp$4.parseExpression = function(forInit, refDestructuringErrors) { var startPos = this.start, startLoc = this.startLoc; var expr = this.parseMaybeAssign(forInit, refDestructuringErrors); if (this.type === types.comma) { @@ -2225,7 +2407,7 @@ // Parse an assignment expression. This includes applications of // operators like `+=`. - pp$3.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { + pp$4.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { if (this.isContextual("yield")) { if (this.inGenerator) { return this.parseYield(forInit) } // The tokenizer will assume an expression is allowed after @@ -2278,7 +2460,7 @@ // Parse a ternary conditional (`?:`) operator. - pp$3.parseMaybeConditional = function(forInit, refDestructuringErrors) { + pp$4.parseMaybeConditional = function(forInit, refDestructuringErrors) { var startPos = this.start, startLoc = this.startLoc; var expr = this.parseExprOps(forInit, refDestructuringErrors); if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } @@ -2295,9 +2477,9 @@ // Start the precedence parser. - pp$3.parseExprOps = function(forInit, refDestructuringErrors) { + pp$4.parseExprOps = function(forInit, refDestructuringErrors) { var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeUnary(refDestructuringErrors, false); + var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit); if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit) }; @@ -2308,7 +2490,7 @@ // defer further parser to one of its callers when it encounters an // operator that has a lower precedence than the set it is parsing. - pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { + pp$4.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { var prec = this.type.binop; if (prec != null && (!forInit || this.type !== types._in)) { if (prec > minPrec) { @@ -2322,7 +2504,7 @@ var op = this.value; this.next(); var startPos = this.start, startLoc = this.startLoc; - var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, forInit); + var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit); var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); if ((logical && this.type === types.coalesce) || (coalesce && (this.type === types.logicalOR || this.type === types.logicalAND))) { this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); @@ -2333,7 +2515,7 @@ return left }; - pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { + pp$4.buildBinary = function(startPos, startLoc, left, right, op, logical) { var node = this.startNodeAt(startPos, startLoc); node.left = left; node.operator = op; @@ -2343,17 +2525,17 @@ // Parse unary operators, both prefix and postfix. - pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec) { + pp$4.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) { var startPos = this.start, startLoc = this.startLoc, expr; if (this.isContextual("await") && this.canAwait) { - expr = this.parseAwait(); + expr = this.parseAwait(forInit); sawUnary = true; } else if (this.type.prefix) { var node = this.startNode(), update = this.type === types.incDec; node.operator = this.value; node.prefix = true; this.next(); - node.argument = this.parseMaybeUnary(null, true, update); + node.argument = this.parseMaybeUnary(null, true, update, forInit); this.checkExpressionErrors(refDestructuringErrors, true); if (update) { this.checkLValSimple(node.argument); } else if (this.strict && node.operator === "delete" && @@ -2364,7 +2546,7 @@ else { sawUnary = true; } expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); } else { - expr = this.parseExprSubscripts(refDestructuringErrors); + expr = this.parseExprSubscripts(refDestructuringErrors, forInit); if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } while (this.type.postfix && !this.canInsertSemicolon()) { var node$1 = this.startNodeAt(startPos, startLoc); @@ -2381,7 +2563,7 @@ if (sawUnary) { this.unexpected(this.lastTokStart); } else - { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) } + { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), "**", false) } } else { return expr } @@ -2396,12 +2578,12 @@ // Parse call, dot, and `[]`-subscript expressions. - pp$3.parseExprSubscripts = function(refDestructuringErrors) { + pp$4.parseExprSubscripts = function(refDestructuringErrors, forInit) { var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprAtom(refDestructuringErrors); + var expr = this.parseExprAtom(refDestructuringErrors, forInit); if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") { return expr } - var result = this.parseSubscripts(expr, startPos, startLoc); + var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit); if (refDestructuringErrors && result.type === "MemberExpression") { if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } @@ -2410,14 +2592,14 @@ return result }; - pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { + pp$4.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) { var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.potentialArrowAt === base.start; var optionalChained = false; while (true) { - var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained); + var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit); if (element.optional) { optionalChained = true; } if (element === base || element.type === "ArrowFunctionExpression") { @@ -2433,7 +2615,7 @@ } }; - pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained) { + pp$4.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) { var optionalSupported = this.options.ecmaVersion >= 11; var optional = optionalSupported && this.eat(types.questionDot); if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } @@ -2469,7 +2651,7 @@ this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; this.awaitIdentPos = oldAwaitIdentPos; - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true) + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit) } this.checkExpressionErrors(refDestructuringErrors, true); this.yieldPos = oldYieldPos || this.yieldPos; @@ -2499,7 +2681,7 @@ // `new`, or an expression wrapped in punctuation like `()`, `[]`, // or `{}`. - pp$3.parseExprAtom = function(refDestructuringErrors) { + pp$4.parseExprAtom = function(refDestructuringErrors, forInit) { // If a division operator appears in an expression position, the // tokenizer got confused, and we force it to read a regexp instead. if (this.type === types.slash) { this.readRegexp(); } @@ -2531,17 +2713,19 @@ case types.name: var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; var id = this.parseIdent(false); - if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) - { return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) } + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) { + this.overrideContext(types$1.f_expr); + return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit) + } if (canBeArrow && !this.canInsertSemicolon()) { if (this.eat(types.arrow)) - { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) } + { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) } if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc && (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) { id = this.parseIdent(false); if (this.canInsertSemicolon() || !this.eat(types.arrow)) { this.unexpected(); } - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit) } } return id @@ -2563,7 +2747,7 @@ return this.finishNode(node, "Literal") case types.parenL: - var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow); + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit); if (refDestructuringErrors) { if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) { refDestructuringErrors.parenthesizedAssign = start; } @@ -2579,6 +2763,7 @@ return this.finishNode(node, "ArrayExpression") case types.braceL: + this.overrideContext(types$1.b_expr); return this.parseObj(false, refDestructuringErrors) case types._function: @@ -2607,7 +2792,7 @@ } }; - pp$3.parseExprImport = function() { + pp$4.parseExprImport = function() { var node = this.startNode(); // Consume `import` as an identifier for `import.meta`. @@ -2626,7 +2811,7 @@ } }; - pp$3.parseDynamicImport = function(node) { + pp$4.parseDynamicImport = function(node) { this.next(); // skip `(` // Parse node.source. @@ -2645,7 +2830,7 @@ return this.finishNode(node, "ImportExpression") }; - pp$3.parseImportMeta = function(node) { + pp$4.parseImportMeta = function(node) { this.next(); // skip `.` var containsEsc = this.containsEsc; @@ -2661,7 +2846,7 @@ return this.finishNode(node, "MetaProperty") }; - pp$3.parseLiteral = function(value) { + pp$4.parseLiteral = function(value) { var node = this.startNode(); node.value = value; node.raw = this.input.slice(this.start, this.end); @@ -2670,14 +2855,14 @@ return this.finishNode(node, "Literal") }; - pp$3.parseParenExpression = function() { + pp$4.parseParenExpression = function() { this.expect(types.parenL); var val = this.parseExpression(); this.expect(types.parenR); return val }; - pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { + pp$4.parseParenAndDistinguishExpression = function(canBeArrow, forInit) { var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; if (this.options.ecmaVersion >= 6) { this.next(); @@ -2702,7 +2887,7 @@ exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); } } - var innerEndPos = this.start, innerEndLoc = this.startLoc; + var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc; this.expect(types.parenR); if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { @@ -2710,7 +2895,7 @@ this.checkYieldAwaitInDefaultParams(); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; - return this.parseParenArrowList(startPos, startLoc, exprList) + return this.parseParenArrowList(startPos, startLoc, exprList, forInit) } if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } @@ -2739,12 +2924,12 @@ } }; - pp$3.parseParenItem = function(item) { + pp$4.parseParenItem = function(item) { return item }; - pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) + pp$4.parseParenArrowList = function(startPos, startLoc, exprList, forInit) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, forInit) }; // New's precedence is slightly tricky. It must allow its argument to @@ -2755,7 +2940,7 @@ var empty$1 = []; - pp$3.parseNew = function() { + pp$4.parseNew = function() { if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } var node = this.startNode(); var meta = this.parseIdent(true); @@ -2767,12 +2952,12 @@ { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } if (containsEsc) { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } - if (!this.inNonArrowFunction) - { this.raiseRecoverable(node.start, "'new.target' can only be used in functions"); } + if (!this.allowNewDotTarget) + { this.raiseRecoverable(node.start, "'new.target' can only be used in functions and class static block"); } return this.finishNode(node, "MetaProperty") } var startPos = this.start, startLoc = this.startLoc, isImport = this.type === types._import; - node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true, false); if (isImport && node.callee.type === "ImportExpression") { this.raise(startPos, "Cannot use new with import()"); } @@ -2783,7 +2968,7 @@ // Parse template expression. - pp$3.parseTemplateElement = function(ref) { + pp$4.parseTemplateElement = function(ref) { var isTagged = ref.isTagged; var elem = this.startNode(); @@ -2806,7 +2991,7 @@ return this.finishNode(elem, "TemplateElement") }; - pp$3.parseTemplate = function(ref) { + pp$4.parseTemplate = function(ref) { if ( ref === void 0 ) ref = {}; var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; @@ -2826,7 +3011,7 @@ return this.finishNode(node, "TemplateLiteral") }; - pp$3.isAsyncProp = function(prop) { + pp$4.isAsyncProp = function(prop) { return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.type === types.name || this.type === types.num || this.type === types.string || this.type === types.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types.star)) && !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) @@ -2834,7 +3019,7 @@ // Parse an object literal or binding pattern. - pp$3.parseObj = function(isPattern, refDestructuringErrors) { + pp$4.parseObj = function(isPattern, refDestructuringErrors) { var node = this.startNode(), first = true, propHash = {}; node.properties = []; this.next(); @@ -2851,7 +3036,7 @@ return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") }; - pp$3.parseProperty = function(isPattern, refDestructuringErrors) { + pp$4.parseProperty = function(isPattern, refDestructuringErrors) { var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) { if (isPattern) { @@ -2902,7 +3087,7 @@ return this.finishNode(prop, "Property") }; - pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { + pp$4.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { if ((isGenerator || isAsync) && this.type === types.colon) { this.unexpected(); } @@ -2952,7 +3137,7 @@ } else { this.unexpected(); } }; - pp$3.parsePropertyName = function(prop) { + pp$4.parsePropertyName = function(prop) { if (this.options.ecmaVersion >= 6) { if (this.eat(types.bracketL)) { prop.computed = true; @@ -2968,7 +3153,7 @@ // Initialize empty function node. - pp$3.initFunction = function(node) { + pp$4.initFunction = function(node) { node.id = null; if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } if (this.options.ecmaVersion >= 8) { node.async = false; } @@ -2976,7 +3161,7 @@ // Parse object or class method. - pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { + pp$4.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; this.initFunction(node); @@ -2993,7 +3178,7 @@ this.expect(types.parenL); node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); this.checkYieldAwaitInDefaultParams(); - this.parseFunctionBody(node, false, true); + this.parseFunctionBody(node, false, true, false); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; @@ -3003,7 +3188,7 @@ // Parse arrow function expression with given parameters. - pp$3.parseArrowExpression = function(node, params, isAsync) { + pp$4.parseArrowExpression = function(node, params, isAsync, forInit) { var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); @@ -3015,7 +3200,7 @@ this.awaitIdentPos = 0; node.params = this.toAssignableList(params, true); - this.parseFunctionBody(node, true, false); + this.parseFunctionBody(node, true, false, forInit); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; @@ -3025,12 +3210,12 @@ // Parse function body and check parameters. - pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) { + pp$4.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) { var isExpression = isArrowFunction && this.type !== types.braceL; var oldStrict = this.strict, useStrict = false; if (isExpression) { - node.body = this.parseMaybeAssign(); + node.body = this.parseMaybeAssign(forInit); node.expression = true; this.checkParams(node, false); } else { @@ -3062,7 +3247,7 @@ this.exitScope(); }; - pp$3.isSimpleParamList = function(params) { + pp$4.isSimpleParamList = function(params) { for (var i = 0, list = params; i < list.length; i += 1) { var param = list[i]; @@ -3075,7 +3260,7 @@ // Checks function params for various disallowed patterns such as using "eval" // or "arguments" and duplicate parameters. - pp$3.checkParams = function(node, allowDuplicates) { + pp$4.checkParams = function(node, allowDuplicates) { var nameHash = Object.create(null); for (var i = 0, list = node.params; i < list.length; i += 1) { @@ -3091,7 +3276,7 @@ // nothing in between them to be parsed as `null` (which is needed // for array literals). - pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { + pp$4.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { var elts = [], first = true; while (!this.eat(close)) { if (!first) { @@ -3114,7 +3299,7 @@ return elts }; - pp$3.checkUnreserved = function(ref) { + pp$4.checkUnreserved = function(ref) { var start = ref.start; var end = ref.end; var name = ref.name; @@ -3125,6 +3310,8 @@ { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } if (this.currentThisScope().inClassFieldInit && name === "arguments") { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); } + if (this.inClassStaticBlock && (name === "arguments" || name === "await")) + { this.raise(start, ("Cannot use " + name + " in class static initialization block")); } if (this.keywords.test(name)) { this.raise(start, ("Unexpected keyword '" + name + "'")); } if (this.options.ecmaVersion < 6 && @@ -3141,7 +3328,7 @@ // when parsing properties), it will also convert keywords into // identifiers. - pp$3.parseIdent = function(liberal, isBinding) { + pp$4.parseIdent = function(liberal, isBinding) { var node = this.startNode(); if (this.type === types.name) { node.name = this.value; @@ -3169,7 +3356,7 @@ return node }; - pp$3.parsePrivateIdent = function() { + pp$4.parsePrivateIdent = function() { var node = this.startNode(); if (this.type === types.privateId) { node.name = this.value; @@ -3191,7 +3378,7 @@ // Parses yield expression inside generator. - pp$3.parseYield = function(forInit) { + pp$4.parseYield = function(forInit) { if (!this.yieldPos) { this.yieldPos = this.start; } var node = this.startNode(); @@ -3206,16 +3393,16 @@ return this.finishNode(node, "YieldExpression") }; - pp$3.parseAwait = function() { + pp$4.parseAwait = function(forInit) { if (!this.awaitPos) { this.awaitPos = this.start; } var node = this.startNode(); this.next(); - node.argument = this.parseMaybeUnary(null, true); + node.argument = this.parseMaybeUnary(null, true, false, forInit); return this.finishNode(node, "AwaitExpression") }; - var pp$4 = Parser.prototype; + var pp$5 = Parser.prototype; // This function is used to raise exceptions on parse errors. It // takes an offset integer (into the current `input`) to indicate @@ -3223,7 +3410,7 @@ // of the error message, and then raises a `SyntaxError` with that // message. - pp$4.raise = function(pos, message) { + pp$5.raise = function(pos, message) { var loc = getLineInfo(this.input, pos); message += " (" + loc.line + ":" + loc.column + ")"; var err = new SyntaxError(message); @@ -3231,15 +3418,15 @@ throw err }; - pp$4.raiseRecoverable = pp$4.raise; + pp$5.raiseRecoverable = pp$5.raise; - pp$4.curPosition = function() { + pp$5.curPosition = function() { if (this.options.locations) { return new Position(this.curLine, this.pos - this.lineStart) } }; - var pp$5 = Parser.prototype; + var pp$6 = Parser.prototype; var Scope = function Scope(flags) { this.flags = flags; @@ -3255,22 +3442,22 @@ // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. - pp$5.enterScope = function(flags) { + pp$6.enterScope = function(flags) { this.scopeStack.push(new Scope(flags)); }; - pp$5.exitScope = function() { + pp$6.exitScope = function() { this.scopeStack.pop(); }; // The spec says: // > At the top level of a function, or script, function declarations are // > treated like var declarations rather than like lexical declarations. - pp$5.treatFunctionsAsVarInScope = function(scope) { + pp$6.treatFunctionsAsVarInScope = function(scope) { return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) }; - pp$5.declareName = function(name, bindingType, pos) { + pp$6.declareName = function(name, bindingType, pos) { var redeclared = false; if (bindingType === BIND_LEXICAL) { var scope = this.currentScope(); @@ -3305,7 +3492,7 @@ if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } }; - pp$5.checkLocalExport = function(id) { + pp$6.checkLocalExport = function(id) { // scope.functions must be empty as Module code is always strict. if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1) { @@ -3313,11 +3500,11 @@ } }; - pp$5.currentScope = function() { + pp$6.currentScope = function() { return this.scopeStack[this.scopeStack.length - 1] }; - pp$5.currentVarScope = function() { + pp$6.currentVarScope = function() { for (var i = this.scopeStack.length - 1;; i--) { var scope = this.scopeStack[i]; if (scope.flags & SCOPE_VAR) { return scope } @@ -3325,7 +3512,7 @@ }; // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. - pp$5.currentThisScope = function() { + pp$6.currentThisScope = function() { for (var i = this.scopeStack.length - 1;; i--) { var scope = this.scopeStack[i]; if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope } @@ -3346,13 +3533,13 @@ // Start an AST node, attaching a start offset. - var pp$6 = Parser.prototype; + var pp$7 = Parser.prototype; - pp$6.startNode = function() { + pp$7.startNode = function() { return new Node(this, this.start, this.startLoc) }; - pp$6.startNodeAt = function(pos, loc) { + pp$7.startNodeAt = function(pos, loc) { return new Node(this, pos, loc) }; @@ -3368,165 +3555,22 @@ return node } - pp$6.finishNode = function(node, type) { + pp$7.finishNode = function(node, type) { return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) }; // Finish node at given position - pp$6.finishNodeAt = function(node, type, pos, loc) { + pp$7.finishNodeAt = function(node, type, pos, loc) { return finishNodeAt.call(this, node, type, pos, loc) }; - pp$6.copyNode = function(node) { + pp$7.copyNode = function(node) { var newNode = new Node(this, node.start, this.startLoc); for (var prop in node) { newNode[prop] = node[prop]; } return newNode }; - // The algorithm used to determine whether a regexp can appear at a - - var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { - this.token = token; - this.isExpr = !!isExpr; - this.preserveSpace = !!preserveSpace; - this.override = override; - this.generator = !!generator; - }; - - var types$1 = { - b_stat: new TokContext("{", false), - b_expr: new TokContext("{", true), - b_tmpl: new TokContext("${", false), - p_stat: new TokContext("(", false), - p_expr: new TokContext("(", true), - q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), - f_stat: new TokContext("function", false), - f_expr: new TokContext("function", true), - f_expr_gen: new TokContext("function", true, false, null, true), - f_gen: new TokContext("function", false, false, null, true) - }; - - var pp$7 = Parser.prototype; - - pp$7.initialContext = function() { - return [types$1.b_stat] - }; - - pp$7.braceIsBlock = function(prevType) { - var parent = this.curContext(); - if (parent === types$1.f_expr || parent === types$1.f_stat) - { return true } - if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) - { return !parent.isExpr } - - // The check for `tt.name && exprAllowed` detects whether we are - // after a `yield` or `of` construct. See the `updateContext` for - // `tt.name`. - if (prevType === types._return || prevType === types.name && this.exprAllowed) - { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } - if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) - { return true } - if (prevType === types.braceL) - { return parent === types$1.b_stat } - if (prevType === types._var || prevType === types._const || prevType === types.name) - { return false } - return !this.exprAllowed - }; - - pp$7.inGeneratorContext = function() { - for (var i = this.context.length - 1; i >= 1; i--) { - var context = this.context[i]; - if (context.token === "function") - { return context.generator } - } - return false - }; - - pp$7.updateContext = function(prevType) { - var update, type = this.type; - if (type.keyword && prevType === types.dot) - { this.exprAllowed = false; } - else if (update = type.updateContext) - { update.call(this, prevType); } - else - { this.exprAllowed = type.beforeExpr; } - }; - - // Token-specific context update code - - types.parenR.updateContext = types.braceR.updateContext = function() { - if (this.context.length === 1) { - this.exprAllowed = true; - return - } - var out = this.context.pop(); - if (out === types$1.b_stat && this.curContext().token === "function") { - out = this.context.pop(); - } - this.exprAllowed = !out.isExpr; - }; - - types.braceL.updateContext = function(prevType) { - this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr); - this.exprAllowed = true; - }; - - types.dollarBraceL.updateContext = function() { - this.context.push(types$1.b_tmpl); - this.exprAllowed = true; - }; - - types.parenL.updateContext = function(prevType) { - var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; - this.context.push(statementParens ? types$1.p_stat : types$1.p_expr); - this.exprAllowed = true; - }; - - types.incDec.updateContext = function() { - // tokExprAllowed stays unchanged - }; - - types._function.updateContext = types._class.updateContext = function(prevType) { - if (prevType.beforeExpr && prevType !== types._else && - !(prevType === types.semi && this.curContext() !== types$1.p_stat) && - !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && - !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) - { this.context.push(types$1.f_expr); } - else - { this.context.push(types$1.f_stat); } - this.exprAllowed = false; - }; - - types.backQuote.updateContext = function() { - if (this.curContext() === types$1.q_tmpl) - { this.context.pop(); } - else - { this.context.push(types$1.q_tmpl); } - this.exprAllowed = false; - }; - - types.star.updateContext = function(prevType) { - if (prevType === types._function) { - var index = this.context.length - 1; - if (this.context[index] === types$1.f_expr) - { this.context[index] = types$1.f_expr_gen; } - else - { this.context[index] = types$1.f_gen; } - } - this.exprAllowed = true; - }; - - types.name.updateContext = function(prevType) { - var allowed = false; - if (this.options.ecmaVersion >= 6 && prevType !== types.dot) { - if (this.value === "of" && !this.exprAllowed || - this.value === "yield" && this.inGeneratorContext()) - { allowed = true; } - } - this.exprAllowed = allowed; - }; - // This file contains Unicode properties extracted from the ECMAScript // specification. The lists are extracted like so: // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) @@ -4697,10 +4741,6 @@ // Toggle strict mode. Re-reads the next number or string to please // pedantic tests (`"use strict"; 010;` should fail). - pp$9.curContext = function() { - return this.context[this.context.length - 1] - }; - // Read a single token, updating the parser object's token-related // properties. @@ -5220,8 +5260,15 @@ out += this.input.slice(chunkStart, this.pos); out += this.readEscapedChar(false); chunkStart = this.pos; + } else if (ch === 0x2028 || ch === 0x2029) { + if (this.options.ecmaVersion < 10) { this.raise(this.start, "Unterminated string constant"); } + ++this.pos; + if (this.options.locations) { + this.curLine++; + this.lineStart = this.pos; + } } else { - if (isNewLine(ch, this.options.ecmaVersion >= 10)) { this.raise(this.start, "Unterminated string constant"); } + if (isNewLine(ch)) { this.raise(this.start, "Unterminated string constant"); } ++this.pos; } } @@ -5447,7 +5494,7 @@ // Acorn is a tiny, fast JavaScript parser written in JavaScript. - var version = "8.4.1"; + var version = "8.5.0"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/dist/acorn.mjs b/deps/acorn/acorn/dist/acorn.mjs index 30833d4fdf9f75..96a8294589badc 100644 --- a/deps/acorn/acorn/dist/acorn.mjs +++ b/deps/acorn/acorn/dist/acorn.mjs @@ -246,8 +246,8 @@ var types = { var lineBreak = /\r\n?|\n|\u2028|\u2029/; var lineBreakG = new RegExp(lineBreak.source, "g"); -function isNewLine(code, ecma2019String) { - return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029)) +function isNewLine(code) { + return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 } var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; @@ -458,13 +458,14 @@ function pushComment(options, array) { var SCOPE_TOP = 1, SCOPE_FUNCTION = 2, - SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION, SCOPE_ASYNC = 4, SCOPE_GENERATOR = 8, SCOPE_ARROW = 16, SCOPE_SIMPLE_CATCH = 32, SCOPE_SUPER = 64, - SCOPE_DIRECT_SUPER = 128; + SCOPE_DIRECT_SUPER = 128, + SCOPE_CLASS_STATIC_BLOCK = 256, + SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK; function functionFlags(async, generator) { return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) @@ -564,7 +565,7 @@ var Parser = function Parser(options, input, startPos) { this.privateNameStack = []; }; -var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },inNonArrowFunction: { configurable: true } }; +var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } }; Parser.prototype.parse = function parse () { var node = this.options.program || this.startNode(); @@ -578,7 +579,7 @@ prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().fl prototypeAccessors.canAwait.get = function () { for (var i = this.scopeStack.length - 1; i >= 0; i--) { var scope = this.scopeStack[i]; - if (scope.inClassFieldInit) { return false } + if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK) { return false } if (scope.flags & SCOPE_FUNCTION) { return (scope.flags & SCOPE_ASYNC) > 0 } } return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction @@ -591,11 +592,14 @@ prototypeAccessors.allowSuper.get = function () { }; prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; -prototypeAccessors.inNonArrowFunction.get = function () { +prototypeAccessors.allowNewDotTarget.get = function () { var ref = this.currentThisScope(); var flags = ref.flags; var inClassFieldInit = ref.inClassFieldInit; - return (flags & SCOPE_FUNCTION) > 0 || inClassFieldInit + return (flags & (SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit +}; +prototypeAccessors.inClassStaticBlock.get = function () { + return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0 }; Parser.extend = function extend () { @@ -1004,14 +1008,16 @@ pp$1.parseForStatement = function(node) { if (awaitAt > -1) { this.unexpected(awaitAt); } return this.parseFor(node, init$1) } + var startsWithLet = this.isContextual("let"), isForOf = false; var refDestructuringErrors = new DestructuringErrors; var init = this.parseExpression(awaitAt > -1 ? "await" : true, refDestructuringErrors); - if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { + if (this.type === types._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { if (this.options.ecmaVersion >= 9) { if (this.type === types._in) { if (awaitAt > -1) { this.unexpected(awaitAt); } } else { node.await = awaitAt > -1; } } + if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } this.toAssignable(init, false, refDestructuringErrors); this.checkLValPattern(init); return this.parseForIn(node, init) @@ -1294,7 +1300,7 @@ var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; // `statement & FUNC_STATEMENT`). // Remove `allowExpressionBody` for 7.0.0, as it is only called with false -pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) { +pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) { this.initFunction(node); if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { if (this.type === types.star && (statement & FUNC_HANGING_STATEMENT)) @@ -1324,7 +1330,7 @@ pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) { { node.id = this.type === types.name ? this.parseIdent() : null; } this.parseFunctionParams(node); - this.parseFunctionBody(node, allowExpressionBody, false); + this.parseFunctionBody(node, allowExpressionBody, false, forInit); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; @@ -1363,7 +1369,7 @@ pp$1.parseClass = function(node, isStatement) { if (element.type === "MethodDefinition" && element.kind === "constructor") { if (hadConstructor) { this.raise(element.start, "Duplicate constructor in the same class"); } hadConstructor = true; - } else if (element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { + } else if (element.key && element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { this.raiseRecoverable(element.key.start, ("Identifier '#" + (element.key.name) + "' has already been declared")); } } @@ -1384,16 +1390,21 @@ pp$1.parseClassElement = function(constructorAllowsSuper) { var isGenerator = false; var isAsync = false; var kind = "method"; + var isStatic = false; - // Parse modifiers - node.static = false; if (this.eatContextual("static")) { + // Parse static init block + if (ecmaVersion >= 13 && this.eat(types.braceL)) { + this.parseClassStaticBlock(node); + return node + } if (this.isClassElementNameStart() || this.type === types.star) { - node.static = true; + isStatic = true; } else { keyName = "static"; } } + node.static = isStatic; if (!keyName && ecmaVersion >= 8 && this.eatContextual("async")) { if ((this.isClassElementNameStart() || this.type === types.star) && !this.canInsertSemicolon()) { isAsync = true; @@ -1511,6 +1522,23 @@ pp$1.parseClassField = function(field) { return this.finishNode(field, "PropertyDefinition") }; +pp$1.parseClassStaticBlock = function(node) { + node.body = []; + + var oldLabels = this.labels; + this.labels = []; + this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); + while (this.type !== types.braceR) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + this.next(); + this.exitScope(); + this.labels = oldLabels; + + return this.finishNode(node, "StaticBlock") +}; + pp$1.parseClassId = function(node, isStatement) { if (this.type === types.name) { node.id = this.parseIdent(); @@ -1524,7 +1552,7 @@ pp$1.parseClassId = function(node, isStatement) { }; pp$1.parseClassSuper = function(node) { - node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null; + node.superClass = this.eat(types._extends) ? this.parseExprSubscripts(false) : null; }; pp$1.enterClassBody = function() { @@ -2133,16 +2161,170 @@ pp$2.checkLValInnerPattern = function(expr, bindingType, checkClashes) { } }; -// A recursive descent parser operates by defining functions for all +// The algorithm used to determine whether a regexp can appear at a + +var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + this.generator = !!generator; +}; + +var types$1 = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", false), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), + f_stat: new TokContext("function", false), + f_expr: new TokContext("function", true), + f_expr_gen: new TokContext("function", true, false, null, true), + f_gen: new TokContext("function", false, false, null, true) +}; var pp$3 = Parser.prototype; +pp$3.initialContext = function() { + return [types$1.b_stat] +}; + +pp$3.curContext = function() { + return this.context[this.context.length - 1] +}; + +pp$3.braceIsBlock = function(prevType) { + var parent = this.curContext(); + if (parent === types$1.f_expr || parent === types$1.f_stat) + { return true } + if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) + { return !parent.isExpr } + + // The check for `tt.name && exprAllowed` detects whether we are + // after a `yield` or `of` construct. See the `updateContext` for + // `tt.name`. + if (prevType === types._return || prevType === types.name && this.exprAllowed) + { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } + if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) + { return true } + if (prevType === types.braceL) + { return parent === types$1.b_stat } + if (prevType === types._var || prevType === types._const || prevType === types.name) + { return false } + return !this.exprAllowed +}; + +pp$3.inGeneratorContext = function() { + for (var i = this.context.length - 1; i >= 1; i--) { + var context = this.context[i]; + if (context.token === "function") + { return context.generator } + } + return false +}; + +pp$3.updateContext = function(prevType) { + var update, type = this.type; + if (type.keyword && prevType === types.dot) + { this.exprAllowed = false; } + else if (update = type.updateContext) + { update.call(this, prevType); } + else + { this.exprAllowed = type.beforeExpr; } +}; + +// Used to handle egde case when token context could not be inferred correctly in tokenize phase +pp$3.overrideContext = function(tokenCtx) { + if (this.curContext() !== tokenCtx) { + this.context[this.context.length - 1] = tokenCtx; + } +}; + +// Token-specific context update code + +types.parenR.updateContext = types.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return + } + var out = this.context.pop(); + if (out === types$1.b_stat && this.curContext().token === "function") { + out = this.context.pop(); + } + this.exprAllowed = !out.isExpr; +}; + +types.braceL.updateContext = function(prevType) { + this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr); + this.exprAllowed = true; +}; + +types.dollarBraceL.updateContext = function() { + this.context.push(types$1.b_tmpl); + this.exprAllowed = true; +}; + +types.parenL.updateContext = function(prevType) { + var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; + this.context.push(statementParens ? types$1.p_stat : types$1.p_expr); + this.exprAllowed = true; +}; + +types.incDec.updateContext = function() { + // tokExprAllowed stays unchanged +}; + +types._function.updateContext = types._class.updateContext = function(prevType) { + if (prevType.beforeExpr && prevType !== types._else && + !(prevType === types.semi && this.curContext() !== types$1.p_stat) && + !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && + !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) + { this.context.push(types$1.f_expr); } + else + { this.context.push(types$1.f_stat); } + this.exprAllowed = false; +}; + +types.backQuote.updateContext = function() { + if (this.curContext() === types$1.q_tmpl) + { this.context.pop(); } + else + { this.context.push(types$1.q_tmpl); } + this.exprAllowed = false; +}; + +types.star.updateContext = function(prevType) { + if (prevType === types._function) { + var index = this.context.length - 1; + if (this.context[index] === types$1.f_expr) + { this.context[index] = types$1.f_expr_gen; } + else + { this.context[index] = types$1.f_gen; } + } + this.exprAllowed = true; +}; + +types.name.updateContext = function(prevType) { + var allowed = false; + if (this.options.ecmaVersion >= 6 && prevType !== types.dot) { + if (this.value === "of" && !this.exprAllowed || + this.value === "yield" && this.inGeneratorContext()) + { allowed = true; } + } + this.exprAllowed = allowed; +}; + +// A recursive descent parser operates by defining functions for all + +var pp$4 = Parser.prototype; + // Check if property name clashes with already added. // Object/class getters and setters are not allowed to clash — // either with each other or with an init property — and in // strict mode, init properties are also not allowed to be repeated. -pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { +pp$4.checkPropClash = function(prop, propHash, refDestructuringErrors) { if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") { return } if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) @@ -2204,7 +2386,7 @@ pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { // and object pattern might appear (so it's possible to raise // delayed syntax error at correct position). -pp$3.parseExpression = function(forInit, refDestructuringErrors) { +pp$4.parseExpression = function(forInit, refDestructuringErrors) { var startPos = this.start, startLoc = this.startLoc; var expr = this.parseMaybeAssign(forInit, refDestructuringErrors); if (this.type === types.comma) { @@ -2219,7 +2401,7 @@ pp$3.parseExpression = function(forInit, refDestructuringErrors) { // Parse an assignment expression. This includes applications of // operators like `+=`. -pp$3.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { +pp$4.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { if (this.isContextual("yield")) { if (this.inGenerator) { return this.parseYield(forInit) } // The tokenizer will assume an expression is allowed after @@ -2272,7 +2454,7 @@ pp$3.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse // Parse a ternary conditional (`?:`) operator. -pp$3.parseMaybeConditional = function(forInit, refDestructuringErrors) { +pp$4.parseMaybeConditional = function(forInit, refDestructuringErrors) { var startPos = this.start, startLoc = this.startLoc; var expr = this.parseExprOps(forInit, refDestructuringErrors); if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } @@ -2289,9 +2471,9 @@ pp$3.parseMaybeConditional = function(forInit, refDestructuringErrors) { // Start the precedence parser. -pp$3.parseExprOps = function(forInit, refDestructuringErrors) { +pp$4.parseExprOps = function(forInit, refDestructuringErrors) { var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeUnary(refDestructuringErrors, false); + var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit); if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit) }; @@ -2302,7 +2484,7 @@ pp$3.parseExprOps = function(forInit, refDestructuringErrors) { // defer further parser to one of its callers when it encounters an // operator that has a lower precedence than the set it is parsing. -pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { +pp$4.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { var prec = this.type.binop; if (prec != null && (!forInit || this.type !== types._in)) { if (prec > minPrec) { @@ -2316,7 +2498,7 @@ pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) var op = this.value; this.next(); var startPos = this.start, startLoc = this.startLoc; - var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, forInit); + var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit); var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); if ((logical && this.type === types.coalesce) || (coalesce && (this.type === types.logicalOR || this.type === types.logicalAND))) { this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); @@ -2327,7 +2509,7 @@ pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) return left }; -pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { +pp$4.buildBinary = function(startPos, startLoc, left, right, op, logical) { var node = this.startNodeAt(startPos, startLoc); node.left = left; node.operator = op; @@ -2337,17 +2519,17 @@ pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { // Parse unary operators, both prefix and postfix. -pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec) { +pp$4.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) { var startPos = this.start, startLoc = this.startLoc, expr; if (this.isContextual("await") && this.canAwait) { - expr = this.parseAwait(); + expr = this.parseAwait(forInit); sawUnary = true; } else if (this.type.prefix) { var node = this.startNode(), update = this.type === types.incDec; node.operator = this.value; node.prefix = true; this.next(); - node.argument = this.parseMaybeUnary(null, true, update); + node.argument = this.parseMaybeUnary(null, true, update, forInit); this.checkExpressionErrors(refDestructuringErrors, true); if (update) { this.checkLValSimple(node.argument); } else if (this.strict && node.operator === "delete" && @@ -2358,7 +2540,7 @@ pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec) { else { sawUnary = true; } expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); } else { - expr = this.parseExprSubscripts(refDestructuringErrors); + expr = this.parseExprSubscripts(refDestructuringErrors, forInit); if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } while (this.type.postfix && !this.canInsertSemicolon()) { var node$1 = this.startNodeAt(startPos, startLoc); @@ -2375,7 +2557,7 @@ pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec) { if (sawUnary) { this.unexpected(this.lastTokStart); } else - { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) } + { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), "**", false) } } else { return expr } @@ -2390,12 +2572,12 @@ function isPrivateFieldAccess(node) { // Parse call, dot, and `[]`-subscript expressions. -pp$3.parseExprSubscripts = function(refDestructuringErrors) { +pp$4.parseExprSubscripts = function(refDestructuringErrors, forInit) { var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprAtom(refDestructuringErrors); + var expr = this.parseExprAtom(refDestructuringErrors, forInit); if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") { return expr } - var result = this.parseSubscripts(expr, startPos, startLoc); + var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit); if (refDestructuringErrors && result.type === "MemberExpression") { if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } @@ -2404,14 +2586,14 @@ pp$3.parseExprSubscripts = function(refDestructuringErrors) { return result }; -pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { +pp$4.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) { var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.potentialArrowAt === base.start; var optionalChained = false; while (true) { - var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained); + var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit); if (element.optional) { optionalChained = true; } if (element === base || element.type === "ArrowFunctionExpression") { @@ -2427,7 +2609,7 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { } }; -pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained) { +pp$4.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) { var optionalSupported = this.options.ecmaVersion >= 11; var optional = optionalSupported && this.eat(types.questionDot); if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } @@ -2463,7 +2645,7 @@ pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArro this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; this.awaitIdentPos = oldAwaitIdentPos; - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true) + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit) } this.checkExpressionErrors(refDestructuringErrors, true); this.yieldPos = oldYieldPos || this.yieldPos; @@ -2493,7 +2675,7 @@ pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArro // `new`, or an expression wrapped in punctuation like `()`, `[]`, // or `{}`. -pp$3.parseExprAtom = function(refDestructuringErrors) { +pp$4.parseExprAtom = function(refDestructuringErrors, forInit) { // If a division operator appears in an expression position, the // tokenizer got confused, and we force it to read a regexp instead. if (this.type === types.slash) { this.readRegexp(); } @@ -2525,17 +2707,19 @@ pp$3.parseExprAtom = function(refDestructuringErrors) { case types.name: var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; var id = this.parseIdent(false); - if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) - { return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) } + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) { + this.overrideContext(types$1.f_expr); + return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit) + } if (canBeArrow && !this.canInsertSemicolon()) { if (this.eat(types.arrow)) - { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) } + { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) } if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc && (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) { id = this.parseIdent(false); if (this.canInsertSemicolon() || !this.eat(types.arrow)) { this.unexpected(); } - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit) } } return id @@ -2557,7 +2741,7 @@ pp$3.parseExprAtom = function(refDestructuringErrors) { return this.finishNode(node, "Literal") case types.parenL: - var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow); + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit); if (refDestructuringErrors) { if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) { refDestructuringErrors.parenthesizedAssign = start; } @@ -2573,6 +2757,7 @@ pp$3.parseExprAtom = function(refDestructuringErrors) { return this.finishNode(node, "ArrayExpression") case types.braceL: + this.overrideContext(types$1.b_expr); return this.parseObj(false, refDestructuringErrors) case types._function: @@ -2601,7 +2786,7 @@ pp$3.parseExprAtom = function(refDestructuringErrors) { } }; -pp$3.parseExprImport = function() { +pp$4.parseExprImport = function() { var node = this.startNode(); // Consume `import` as an identifier for `import.meta`. @@ -2620,7 +2805,7 @@ pp$3.parseExprImport = function() { } }; -pp$3.parseDynamicImport = function(node) { +pp$4.parseDynamicImport = function(node) { this.next(); // skip `(` // Parse node.source. @@ -2639,7 +2824,7 @@ pp$3.parseDynamicImport = function(node) { return this.finishNode(node, "ImportExpression") }; -pp$3.parseImportMeta = function(node) { +pp$4.parseImportMeta = function(node) { this.next(); // skip `.` var containsEsc = this.containsEsc; @@ -2655,7 +2840,7 @@ pp$3.parseImportMeta = function(node) { return this.finishNode(node, "MetaProperty") }; -pp$3.parseLiteral = function(value) { +pp$4.parseLiteral = function(value) { var node = this.startNode(); node.value = value; node.raw = this.input.slice(this.start, this.end); @@ -2664,14 +2849,14 @@ pp$3.parseLiteral = function(value) { return this.finishNode(node, "Literal") }; -pp$3.parseParenExpression = function() { +pp$4.parseParenExpression = function() { this.expect(types.parenL); var val = this.parseExpression(); this.expect(types.parenR); return val }; -pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { +pp$4.parseParenAndDistinguishExpression = function(canBeArrow, forInit) { var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; if (this.options.ecmaVersion >= 6) { this.next(); @@ -2696,7 +2881,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); } } - var innerEndPos = this.start, innerEndLoc = this.startLoc; + var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc; this.expect(types.parenR); if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { @@ -2704,7 +2889,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { this.checkYieldAwaitInDefaultParams(); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; - return this.parseParenArrowList(startPos, startLoc, exprList) + return this.parseParenArrowList(startPos, startLoc, exprList, forInit) } if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } @@ -2733,12 +2918,12 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { } }; -pp$3.parseParenItem = function(item) { +pp$4.parseParenItem = function(item) { return item }; -pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) +pp$4.parseParenArrowList = function(startPos, startLoc, exprList, forInit) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, forInit) }; // New's precedence is slightly tricky. It must allow its argument to @@ -2749,7 +2934,7 @@ pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { var empty$1 = []; -pp$3.parseNew = function() { +pp$4.parseNew = function() { if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } var node = this.startNode(); var meta = this.parseIdent(true); @@ -2761,12 +2946,12 @@ pp$3.parseNew = function() { { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } if (containsEsc) { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } - if (!this.inNonArrowFunction) - { this.raiseRecoverable(node.start, "'new.target' can only be used in functions"); } + if (!this.allowNewDotTarget) + { this.raiseRecoverable(node.start, "'new.target' can only be used in functions and class static block"); } return this.finishNode(node, "MetaProperty") } var startPos = this.start, startLoc = this.startLoc, isImport = this.type === types._import; - node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true, false); if (isImport && node.callee.type === "ImportExpression") { this.raise(startPos, "Cannot use new with import()"); } @@ -2777,7 +2962,7 @@ pp$3.parseNew = function() { // Parse template expression. -pp$3.parseTemplateElement = function(ref) { +pp$4.parseTemplateElement = function(ref) { var isTagged = ref.isTagged; var elem = this.startNode(); @@ -2800,7 +2985,7 @@ pp$3.parseTemplateElement = function(ref) { return this.finishNode(elem, "TemplateElement") }; -pp$3.parseTemplate = function(ref) { +pp$4.parseTemplate = function(ref) { if ( ref === void 0 ) ref = {}; var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; @@ -2820,7 +3005,7 @@ pp$3.parseTemplate = function(ref) { return this.finishNode(node, "TemplateLiteral") }; -pp$3.isAsyncProp = function(prop) { +pp$4.isAsyncProp = function(prop) { return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.type === types.name || this.type === types.num || this.type === types.string || this.type === types.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types.star)) && !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) @@ -2828,7 +3013,7 @@ pp$3.isAsyncProp = function(prop) { // Parse an object literal or binding pattern. -pp$3.parseObj = function(isPattern, refDestructuringErrors) { +pp$4.parseObj = function(isPattern, refDestructuringErrors) { var node = this.startNode(), first = true, propHash = {}; node.properties = []; this.next(); @@ -2845,7 +3030,7 @@ pp$3.parseObj = function(isPattern, refDestructuringErrors) { return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") }; -pp$3.parseProperty = function(isPattern, refDestructuringErrors) { +pp$4.parseProperty = function(isPattern, refDestructuringErrors) { var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) { if (isPattern) { @@ -2896,7 +3081,7 @@ pp$3.parseProperty = function(isPattern, refDestructuringErrors) { return this.finishNode(prop, "Property") }; -pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { +pp$4.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { if ((isGenerator || isAsync) && this.type === types.colon) { this.unexpected(); } @@ -2946,7 +3131,7 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP } else { this.unexpected(); } }; -pp$3.parsePropertyName = function(prop) { +pp$4.parsePropertyName = function(prop) { if (this.options.ecmaVersion >= 6) { if (this.eat(types.bracketL)) { prop.computed = true; @@ -2962,7 +3147,7 @@ pp$3.parsePropertyName = function(prop) { // Initialize empty function node. -pp$3.initFunction = function(node) { +pp$4.initFunction = function(node) { node.id = null; if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } if (this.options.ecmaVersion >= 8) { node.async = false; } @@ -2970,7 +3155,7 @@ pp$3.initFunction = function(node) { // Parse object or class method. -pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { +pp$4.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; this.initFunction(node); @@ -2987,7 +3172,7 @@ pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { this.expect(types.parenL); node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); this.checkYieldAwaitInDefaultParams(); - this.parseFunctionBody(node, false, true); + this.parseFunctionBody(node, false, true, false); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; @@ -2997,7 +3182,7 @@ pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { // Parse arrow function expression with given parameters. -pp$3.parseArrowExpression = function(node, params, isAsync) { +pp$4.parseArrowExpression = function(node, params, isAsync, forInit) { var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); @@ -3009,7 +3194,7 @@ pp$3.parseArrowExpression = function(node, params, isAsync) { this.awaitIdentPos = 0; node.params = this.toAssignableList(params, true); - this.parseFunctionBody(node, true, false); + this.parseFunctionBody(node, true, false, forInit); this.yieldPos = oldYieldPos; this.awaitPos = oldAwaitPos; @@ -3019,12 +3204,12 @@ pp$3.parseArrowExpression = function(node, params, isAsync) { // Parse function body and check parameters. -pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) { +pp$4.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) { var isExpression = isArrowFunction && this.type !== types.braceL; var oldStrict = this.strict, useStrict = false; if (isExpression) { - node.body = this.parseMaybeAssign(); + node.body = this.parseMaybeAssign(forInit); node.expression = true; this.checkParams(node, false); } else { @@ -3056,7 +3241,7 @@ pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) { this.exitScope(); }; -pp$3.isSimpleParamList = function(params) { +pp$4.isSimpleParamList = function(params) { for (var i = 0, list = params; i < list.length; i += 1) { var param = list[i]; @@ -3069,7 +3254,7 @@ pp$3.isSimpleParamList = function(params) { // Checks function params for various disallowed patterns such as using "eval" // or "arguments" and duplicate parameters. -pp$3.checkParams = function(node, allowDuplicates) { +pp$4.checkParams = function(node, allowDuplicates) { var nameHash = Object.create(null); for (var i = 0, list = node.params; i < list.length; i += 1) { @@ -3085,7 +3270,7 @@ pp$3.checkParams = function(node, allowDuplicates) { // nothing in between them to be parsed as `null` (which is needed // for array literals). -pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { +pp$4.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { var elts = [], first = true; while (!this.eat(close)) { if (!first) { @@ -3108,7 +3293,7 @@ pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestruct return elts }; -pp$3.checkUnreserved = function(ref) { +pp$4.checkUnreserved = function(ref) { var start = ref.start; var end = ref.end; var name = ref.name; @@ -3119,6 +3304,8 @@ pp$3.checkUnreserved = function(ref) { { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } if (this.currentThisScope().inClassFieldInit && name === "arguments") { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); } + if (this.inClassStaticBlock && (name === "arguments" || name === "await")) + { this.raise(start, ("Cannot use " + name + " in class static initialization block")); } if (this.keywords.test(name)) { this.raise(start, ("Unexpected keyword '" + name + "'")); } if (this.options.ecmaVersion < 6 && @@ -3135,7 +3322,7 @@ pp$3.checkUnreserved = function(ref) { // when parsing properties), it will also convert keywords into // identifiers. -pp$3.parseIdent = function(liberal, isBinding) { +pp$4.parseIdent = function(liberal, isBinding) { var node = this.startNode(); if (this.type === types.name) { node.name = this.value; @@ -3163,7 +3350,7 @@ pp$3.parseIdent = function(liberal, isBinding) { return node }; -pp$3.parsePrivateIdent = function() { +pp$4.parsePrivateIdent = function() { var node = this.startNode(); if (this.type === types.privateId) { node.name = this.value; @@ -3185,7 +3372,7 @@ pp$3.parsePrivateIdent = function() { // Parses yield expression inside generator. -pp$3.parseYield = function(forInit) { +pp$4.parseYield = function(forInit) { if (!this.yieldPos) { this.yieldPos = this.start; } var node = this.startNode(); @@ -3200,16 +3387,16 @@ pp$3.parseYield = function(forInit) { return this.finishNode(node, "YieldExpression") }; -pp$3.parseAwait = function() { +pp$4.parseAwait = function(forInit) { if (!this.awaitPos) { this.awaitPos = this.start; } var node = this.startNode(); this.next(); - node.argument = this.parseMaybeUnary(null, true); + node.argument = this.parseMaybeUnary(null, true, false, forInit); return this.finishNode(node, "AwaitExpression") }; -var pp$4 = Parser.prototype; +var pp$5 = Parser.prototype; // This function is used to raise exceptions on parse errors. It // takes an offset integer (into the current `input`) to indicate @@ -3217,7 +3404,7 @@ var pp$4 = Parser.prototype; // of the error message, and then raises a `SyntaxError` with that // message. -pp$4.raise = function(pos, message) { +pp$5.raise = function(pos, message) { var loc = getLineInfo(this.input, pos); message += " (" + loc.line + ":" + loc.column + ")"; var err = new SyntaxError(message); @@ -3225,15 +3412,15 @@ pp$4.raise = function(pos, message) { throw err }; -pp$4.raiseRecoverable = pp$4.raise; +pp$5.raiseRecoverable = pp$5.raise; -pp$4.curPosition = function() { +pp$5.curPosition = function() { if (this.options.locations) { return new Position(this.curLine, this.pos - this.lineStart) } }; -var pp$5 = Parser.prototype; +var pp$6 = Parser.prototype; var Scope = function Scope(flags) { this.flags = flags; @@ -3249,22 +3436,22 @@ var Scope = function Scope(flags) { // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. -pp$5.enterScope = function(flags) { +pp$6.enterScope = function(flags) { this.scopeStack.push(new Scope(flags)); }; -pp$5.exitScope = function() { +pp$6.exitScope = function() { this.scopeStack.pop(); }; // The spec says: // > At the top level of a function, or script, function declarations are // > treated like var declarations rather than like lexical declarations. -pp$5.treatFunctionsAsVarInScope = function(scope) { +pp$6.treatFunctionsAsVarInScope = function(scope) { return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) }; -pp$5.declareName = function(name, bindingType, pos) { +pp$6.declareName = function(name, bindingType, pos) { var redeclared = false; if (bindingType === BIND_LEXICAL) { var scope = this.currentScope(); @@ -3299,7 +3486,7 @@ pp$5.declareName = function(name, bindingType, pos) { if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } }; -pp$5.checkLocalExport = function(id) { +pp$6.checkLocalExport = function(id) { // scope.functions must be empty as Module code is always strict. if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1) { @@ -3307,11 +3494,11 @@ pp$5.checkLocalExport = function(id) { } }; -pp$5.currentScope = function() { +pp$6.currentScope = function() { return this.scopeStack[this.scopeStack.length - 1] }; -pp$5.currentVarScope = function() { +pp$6.currentVarScope = function() { for (var i = this.scopeStack.length - 1;; i--) { var scope = this.scopeStack[i]; if (scope.flags & SCOPE_VAR) { return scope } @@ -3319,7 +3506,7 @@ pp$5.currentVarScope = function() { }; // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. -pp$5.currentThisScope = function() { +pp$6.currentThisScope = function() { for (var i = this.scopeStack.length - 1;; i--) { var scope = this.scopeStack[i]; if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope } @@ -3340,13 +3527,13 @@ var Node = function Node(parser, pos, loc) { // Start an AST node, attaching a start offset. -var pp$6 = Parser.prototype; +var pp$7 = Parser.prototype; -pp$6.startNode = function() { +pp$7.startNode = function() { return new Node(this, this.start, this.startLoc) }; -pp$6.startNodeAt = function(pos, loc) { +pp$7.startNodeAt = function(pos, loc) { return new Node(this, pos, loc) }; @@ -3362,165 +3549,22 @@ function finishNodeAt(node, type, pos, loc) { return node } -pp$6.finishNode = function(node, type) { +pp$7.finishNode = function(node, type) { return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) }; // Finish node at given position -pp$6.finishNodeAt = function(node, type, pos, loc) { +pp$7.finishNodeAt = function(node, type, pos, loc) { return finishNodeAt.call(this, node, type, pos, loc) }; -pp$6.copyNode = function(node) { +pp$7.copyNode = function(node) { var newNode = new Node(this, node.start, this.startLoc); for (var prop in node) { newNode[prop] = node[prop]; } return newNode }; -// The algorithm used to determine whether a regexp can appear at a - -var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { - this.token = token; - this.isExpr = !!isExpr; - this.preserveSpace = !!preserveSpace; - this.override = override; - this.generator = !!generator; -}; - -var types$1 = { - b_stat: new TokContext("{", false), - b_expr: new TokContext("{", true), - b_tmpl: new TokContext("${", false), - p_stat: new TokContext("(", false), - p_expr: new TokContext("(", true), - q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), - f_stat: new TokContext("function", false), - f_expr: new TokContext("function", true), - f_expr_gen: new TokContext("function", true, false, null, true), - f_gen: new TokContext("function", false, false, null, true) -}; - -var pp$7 = Parser.prototype; - -pp$7.initialContext = function() { - return [types$1.b_stat] -}; - -pp$7.braceIsBlock = function(prevType) { - var parent = this.curContext(); - if (parent === types$1.f_expr || parent === types$1.f_stat) - { return true } - if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) - { return !parent.isExpr } - - // The check for `tt.name && exprAllowed` detects whether we are - // after a `yield` or `of` construct. See the `updateContext` for - // `tt.name`. - if (prevType === types._return || prevType === types.name && this.exprAllowed) - { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } - if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) - { return true } - if (prevType === types.braceL) - { return parent === types$1.b_stat } - if (prevType === types._var || prevType === types._const || prevType === types.name) - { return false } - return !this.exprAllowed -}; - -pp$7.inGeneratorContext = function() { - for (var i = this.context.length - 1; i >= 1; i--) { - var context = this.context[i]; - if (context.token === "function") - { return context.generator } - } - return false -}; - -pp$7.updateContext = function(prevType) { - var update, type = this.type; - if (type.keyword && prevType === types.dot) - { this.exprAllowed = false; } - else if (update = type.updateContext) - { update.call(this, prevType); } - else - { this.exprAllowed = type.beforeExpr; } -}; - -// Token-specific context update code - -types.parenR.updateContext = types.braceR.updateContext = function() { - if (this.context.length === 1) { - this.exprAllowed = true; - return - } - var out = this.context.pop(); - if (out === types$1.b_stat && this.curContext().token === "function") { - out = this.context.pop(); - } - this.exprAllowed = !out.isExpr; -}; - -types.braceL.updateContext = function(prevType) { - this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr); - this.exprAllowed = true; -}; - -types.dollarBraceL.updateContext = function() { - this.context.push(types$1.b_tmpl); - this.exprAllowed = true; -}; - -types.parenL.updateContext = function(prevType) { - var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; - this.context.push(statementParens ? types$1.p_stat : types$1.p_expr); - this.exprAllowed = true; -}; - -types.incDec.updateContext = function() { - // tokExprAllowed stays unchanged -}; - -types._function.updateContext = types._class.updateContext = function(prevType) { - if (prevType.beforeExpr && prevType !== types._else && - !(prevType === types.semi && this.curContext() !== types$1.p_stat) && - !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && - !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) - { this.context.push(types$1.f_expr); } - else - { this.context.push(types$1.f_stat); } - this.exprAllowed = false; -}; - -types.backQuote.updateContext = function() { - if (this.curContext() === types$1.q_tmpl) - { this.context.pop(); } - else - { this.context.push(types$1.q_tmpl); } - this.exprAllowed = false; -}; - -types.star.updateContext = function(prevType) { - if (prevType === types._function) { - var index = this.context.length - 1; - if (this.context[index] === types$1.f_expr) - { this.context[index] = types$1.f_expr_gen; } - else - { this.context[index] = types$1.f_gen; } - } - this.exprAllowed = true; -}; - -types.name.updateContext = function(prevType) { - var allowed = false; - if (this.options.ecmaVersion >= 6 && prevType !== types.dot) { - if (this.value === "of" && !this.exprAllowed || - this.value === "yield" && this.inGeneratorContext()) - { allowed = true; } - } - this.exprAllowed = allowed; -}; - // This file contains Unicode properties extracted from the ECMAScript // specification. The lists are extracted like so: // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) @@ -4691,10 +4735,6 @@ if (typeof Symbol !== "undefined") // Toggle strict mode. Re-reads the next number or string to please // pedantic tests (`"use strict"; 010;` should fail). -pp$9.curContext = function() { - return this.context[this.context.length - 1] -}; - // Read a single token, updating the parser object's token-related // properties. @@ -5214,8 +5254,15 @@ pp$9.readString = function(quote) { out += this.input.slice(chunkStart, this.pos); out += this.readEscapedChar(false); chunkStart = this.pos; + } else if (ch === 0x2028 || ch === 0x2029) { + if (this.options.ecmaVersion < 10) { this.raise(this.start, "Unterminated string constant"); } + ++this.pos; + if (this.options.locations) { + this.curLine++; + this.lineStart = this.pos; + } } else { - if (isNewLine(ch, this.options.ecmaVersion >= 10)) { this.raise(this.start, "Unterminated string constant"); } + if (isNewLine(ch)) { this.raise(this.start, "Unterminated string constant"); } ++this.pos; } } @@ -5441,7 +5488,7 @@ pp$9.readWord = function() { // Acorn is a tiny, fast JavaScript parser written in JavaScript. -var version = "8.4.1"; +var version = "8.5.0"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/dist/bin.js b/deps/acorn/acorn/dist/bin.js index 3c3ce22e520edc..d35d6ee9909209 100644 --- a/deps/acorn/acorn/dist/bin.js +++ b/deps/acorn/acorn/dist/bin.js @@ -4,21 +4,24 @@ var path = require('path'); var fs = require('fs'); var acorn = require('./acorn.js'); -var infile, forceFile, silent = false, compact = false, tokenize = false; +var inputFilePaths = [], forceFileName = false, fileMode = false, silent = false, compact = false, tokenize = false; 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] [--] [infile]"); + print(" [--tokenize] [--locations] [---allow-hash-bang] [--allow-await-outside-function] [--compact] [--silent] [--module] [--help] [--] [...]"); process.exit(status); } for (var i = 2; i < process.argv.length; ++i) { var arg = process.argv[i]; - if ((arg === "-" || arg[0] !== "-") && !infile) { infile = arg; } - else if (arg === "--" && !infile && i + 2 === process.argv.length) { forceFile = infile = process.argv[++i]; } - else if (arg === "--locations") { options.locations = true; } + if (arg[0] !== "-" || arg === "-") { inputFilePaths.push(arg); } + else if (arg === "--") { + inputFilePaths.push.apply(inputFilePaths, process.argv.slice(i + 1)); + forceFileName = true; + break + } else if (arg === "--locations") { options.locations = true; } else if (arg === "--allow-hash-bang") { options.allowHashBang = true; } else if (arg === "--allow-await-outside-function") { options.allowAwaitOutsideFunction = true; } else if (arg === "--silent") { silent = true; } @@ -35,31 +38,34 @@ for (var i = 2; i < process.argv.length; ++i) { } } -function run(code) { - var result; +function run(codeList) { + var result = [], fileIdx = 0; try { - if (!tokenize) { - result = acorn.parse(code, options); - } else { - result = []; - var tokenizer = acorn.tokenizer(code, options), token; - do { - token = tokenizer.getToken(); - result.push(token); - } while (token.type !== acorn.tokTypes.eof) - } + codeList.forEach(function (code, idx) { + fileIdx = idx; + if (!tokenize) { + result = acorn.parse(code, options); + options.program = result; + } else { + var tokenizer = acorn.tokenizer(code, options), token; + do { + token = tokenizer.getToken(); + result.push(token); + } while (token.type !== acorn.tokTypes.eof) + } + }); } catch (e) { - console.error(infile && infile !== "-" ? e.message.replace(/\(\d+:\d+\)$/, function (m) { return m.slice(0, 1) + infile + " " + m.slice(1); }) : e.message); + console.error(fileMode ? e.message.replace(/\(\d+:\d+\)$/, function (m) { return m.slice(0, 1) + inputFilePaths[fileIdx] + " " + m.slice(1); }) : e.message); process.exit(1); } if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); } } -if (forceFile || infile && infile !== "-") { - run(fs.readFileSync(infile, "utf8")); +if (fileMode = inputFilePaths.length && (forceFileName || !inputFilePaths.includes("-") || inputFilePaths.length !== 1)) { + run(inputFilePaths.map(function (path) { return fs.readFileSync(path, "utf8"); })); } else { var code = ""; process.stdin.resume(); process.stdin.on("data", function (chunk) { return code += chunk; }); - process.stdin.on("end", function () { return run(code); }); + process.stdin.on("end", function () { return run([code]); }); } diff --git a/deps/acorn/acorn/package.json b/deps/acorn/acorn/package.json index c691734ec30e5c..138b7873d373b3 100644 --- a/deps/acorn/acorn/package.json +++ b/deps/acorn/acorn/package.json @@ -16,7 +16,7 @@ ], "./package.json": "./package.json" }, - "version": "8.4.1", + "version": "8.5.0", "engines": {"node": ">=0.4.0"}, "maintainers": [ { diff --git a/deps/npm/docs/content/commands/npm-deprecate.md b/deps/npm/docs/content/commands/npm-deprecate.md index 4888e42e8ba867..438a54ec6e4f36 100644 --- a/deps/npm/docs/content/commands/npm-deprecate.md +++ b/deps/npm/docs/content/commands/npm-deprecate.md @@ -76,4 +76,4 @@ password, npm will prompt on the command line for one. * [npm publish](/commands/npm-publish) * [npm registry](/using-npm/registry) * [npm owner](/commands/npm-owner) -* [npm owner](/commands/npm-adduser) +* [npm adduser](/commands/npm-adduser) diff --git a/deps/npm/docs/content/using-npm/scripts.md b/deps/npm/docs/content/using-npm/scripts.md index 2f2d53c1c2b64b..fba37c28600b3b 100644 --- a/deps/npm/docs/content/using-npm/scripts.md +++ b/deps/npm/docs/content/using-npm/scripts.md @@ -259,7 +259,7 @@ package.json file, then your package scripts would have the in your code with `process.env.npm_package_name` and `process.env.npm_package_version`, and so on for other fields. -See [`package-json.md`](/using-npm/package-json) for more on package configs. +See [`package-json.md`](/configuring-npm/package-json) for more on package configs. #### current lifecycle event diff --git a/deps/npm/docs/content/using-npm/workspaces.md b/deps/npm/docs/content/using-npm/workspaces.md index 7cc125b3c7a7cc..ae834c0cc7e225 100644 --- a/deps/npm/docs/content/using-npm/workspaces.md +++ b/deps/npm/docs/content/using-npm/workspaces.md @@ -176,6 +176,16 @@ npm run test --workspaces Will run the `test` script in both `./packages/a` and `./packages/b`. +### Ignoring missing scripts + +It is not required for all of the workspaces to implement scripts run with the `npm run` command. + +By running the command with the `--if-present` flag, npm will ignore workspaces missing target script. + +``` +npm run test --workspaces --if-present +``` + ### See also * [npm install](/commands/npm-install) diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html index 9544eb5b95efdb..5ed7165983bde9 100644 --- a/deps/npm/docs/output/commands/npm-deprecate.html +++ b/deps/npm/docs/output/commands/npm-deprecate.html @@ -194,7 +194,7 @@

See Also

  • npm publish
  • npm registry
  • npm owner
  • -
  • npm owner
  • +
  • npm adduser
  • diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index e45846324faac9..0ce0ef1e18a431 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -159,7 +159,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@7.21.1 /path/to/npm
    +
    npm@7.24.0 /path/to/npm
     └─┬ init-package-json@0.0.4
       └── promzard@0.1.5
     
    diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index a2feb42e43b6da..0956b0ef0d92a6 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -148,7 +148,7 @@

    Table of contents

    npm <command> [args]
     

    Version

    -

    7.21.1

    +

    7.24.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 diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html index 6dcf9a0416e4c2..1b4556a1f85dd1 100644 --- a/deps/npm/docs/output/using-npm/scripts.html +++ b/deps/npm/docs/output/using-npm/scripts.html @@ -379,7 +379,7 @@

    package.json vars

    npm_package_version set to “1.2.5”. You can access these variables in your code with process.env.npm_package_name and process.env.npm_package_version, and so on for other fields.

    -

    See package-json.md for more on package configs.

    +

    See package-json.md for more on package configs.

    current lifecycle event

    Lastly, the npm_lifecycle_event environment variable is set to whichever stage of the cycle is being executed. So, you could have a diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html index f0a5945d61153e..e4ce7a3840e058 100644 --- a/deps/npm/docs/output/using-npm/workspaces.html +++ b/deps/npm/docs/output/using-npm/workspaces.html @@ -141,7 +141,7 @@

    workspaces

    Table of contents

    - +

    Description

    @@ -264,6 +264,11 @@

    Running commands in the c
    npm run test --workspaces
     

    Will run the test script in both ./packages/a and ./packages/b.

    +

    Ignoring missing scripts

    +

    It is not required for all of the workspaces to implement scripts run with the npm run command.

    +

    By running the command with the --if-present flag, npm will ignore workspaces missing target script.

    +
    npm run test --workspaces --if-present
    +

    See also

    • npm install
    • diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js index 6611763978e611..99f75b71384fa6 100644 --- a/deps/npm/lib/install.js +++ b/deps/npm/lib/install.js @@ -8,6 +8,8 @@ const log = require('npmlog') const { resolve, join } = require('path') const Arborist = require('@npmcli/arborist') const runScript = require('@npmcli/run-script') +const pacote = require('pacote') +const checks = require('npm-install-checks') const ArboristWorkspaceCmd = require('./workspaces/arborist-cmd.js') class Install extends ArboristWorkspaceCmd { @@ -126,6 +128,24 @@ class Install extends ArboristWorkspaceCmd { const ignoreScripts = this.npm.config.get('ignore-scripts') const isGlobalInstall = this.npm.config.get('global') const where = isGlobalInstall ? globalTop : this.npm.prefix + const forced = this.npm.config.get('force') + const isDev = this.npm.config.get('dev') + const scriptShell = this.npm.config.get('script-shell') || undefined + + // be very strict about engines when trying to update npm itself + const npmInstall = args.find(arg => arg.startsWith('npm@') || arg === 'npm') + if (isGlobalInstall && npmInstall) { + const npmOptions = this.npm.flatOptions + const npmManifest = await pacote.manifest(npmInstall, npmOptions) + try { + checks.checkEngine(npmManifest, npmManifest.version, process.version) + } catch (e) { + if (forced) + this.npm.log.warn('install', `Forcing global npm install with incompatible version ${npmManifest.version} into node ${process.version}`) + else + throw e + } + } // don't try to install the prefix into itself args = args.filter(a => resolve(a) !== this.npm.prefix) @@ -135,7 +155,7 @@ class Install extends ArboristWorkspaceCmd { args = ['.'] // TODO: Add warnings for other deprecated flags? or remove this one? - if (this.npm.config.get('dev')) + if (isDev) log.warn('install', 'Usage of the `--dev` option is deprecated. Use `--include=dev` instead.') const opts = { @@ -150,7 +170,6 @@ class Install extends ArboristWorkspaceCmd { await arb.reify(opts) if (!args.length && !isGlobalInstall && !ignoreScripts) { - const scriptShell = this.npm.config.get('script-shell') || undefined const scripts = [ 'preinstall', 'install', diff --git a/deps/npm/lib/search/format-package-stream.js b/deps/npm/lib/search/format-package-stream.js index c88df5eb4be04d..fb7d81856d63f4 100644 --- a/deps/npm/lib/search/format-package-stream.js +++ b/deps/npm/lib/search/format-package-stream.js @@ -42,7 +42,7 @@ class JSONOutputStream extends Minipass { } end () { - super.write(this._didFirst ? ']\n' : '\n]\n') + super.write(this._didFirst ? ']\n' : '\n[]\n') super.end() } } diff --git a/deps/npm/lib/utils/config/definitions.js b/deps/npm/lib/utils/config/definitions.js index 092e0fc435cb4e..009f60a7bce61d 100644 --- a/deps/npm/lib/utils/config/definitions.js +++ b/deps/npm/lib/utils/config/definitions.js @@ -2053,10 +2053,14 @@ define('user-agent', { .replace(/\{workspaces\}/gi, inWorkspaces) .replace(/\{ci\}/gi, ciName ? `ci/${ciName}` : '') .trim() + + // We can't clobber the original or else subsequent flattening will fail + // (i.e. when we change the underlying config values) + // obj[key] = flatOptions.userAgent + // user-agent is a unique kind of config item that gets set from a template // and ends up translated. Because of this, the normal "should we set this // to process.env also doesn't work - obj[key] = flatOptions.userAgent process.env.npm_config_user_agent = flatOptions.userAgent }, }) @@ -2140,6 +2144,9 @@ define('workspace', { a workspace which does not yet exist, to create the folder and set it up as a brand new workspace within the project. `, + flatten: (key, obj, flatOptions) => { + definitions['user-agent'].flatten('user-agent', obj, flatOptions) + }, }) define('workspaces', { @@ -2151,6 +2158,9 @@ define('workspaces', { Enable running a command in the context of **all** the configured workspaces. `, + flatten: (key, obj, flatOptions) => { + definitions['user-agent'].flatten('user-agent', obj, flatOptions) + }, }) define('yes', { diff --git a/deps/npm/lib/utils/did-you-mean.js b/deps/npm/lib/utils/did-you-mean.js index 0cfdd035255eb1..c324253af24065 100644 --- a/deps/npm/lib/utils/did-you-mean.js +++ b/deps/npm/lib/utils/did-you-mean.js @@ -3,25 +3,26 @@ const readJson = require('read-package-json-fast') const { cmdList } = require('./cmd-list.js') const didYouMean = async (npm, path, scmd) => { - const bestCmd = cmdList + let best = cmdList .filter(cmd => distance(scmd, cmd) < scmd.length * 0.4 && scmd !== cmd) .map(str => ` npm ${str} # ${npm.commands[str].description}`) - const pkg = await readJson(`${path}/package.json`) - const { scripts } = pkg // We would already be suggesting this in `npm x` so omit them here const runScripts = ['stop', 'start', 'test', 'restart'] - const bestRun = Object.keys(scripts || {}) - .filter(cmd => distance(scmd, cmd) < scmd.length * 0.4 && - !runScripts.includes(cmd)) - .map(str => ` npm run ${str} # run the "${str}" package script`) - - const { bin } = pkg - const bestBin = Object.keys(bin || {}) - .filter(cmd => distance(scmd, cmd) < scmd.length * 0.4) - .map(str => ` npm exec ${str} # run the "${str}" command from either this or a remote npm package`) - - const best = [...bestCmd, ...bestRun, ...bestBin] + try { + const { bin, scripts } = await readJson(`${path}/package.json`) + best = best.concat( + Object.keys(scripts || {}) + .filter(cmd => distance(scmd, cmd) < scmd.length * 0.4 && + !runScripts.includes(cmd)) + .map(str => ` npm run ${str} # run the "${str}" package script`), + Object.keys(bin || {}) + .filter(cmd => distance(scmd, cmd) < scmd.length * 0.4) + .map(str => ` npm exec ${str} # run the "${str}" command from either this or a remote npm package`) + ) + } catch (_) { + // gracefully ignore not being in a folder w/ a package.json + } if (best.length === 0) return '' diff --git a/deps/npm/lib/utils/error-message.js b/deps/npm/lib/utils/error-message.js index da97195dd04f07..9343d37d541495 100644 --- a/deps/npm/lib/utils/error-message.js +++ b/deps/npm/lib/utils/error-message.js @@ -181,7 +181,7 @@ module.exports = (er, npm) => { const pkg = er.pkgid.replace(/(?!^)@.*$/, '') detail.push(['404', '']) - detail.push(['404', '', "'" + er.pkgid + "' is not in the npm registry."]) + detail.push(['404', '', `'${replaceInfo(er.pkgid)}' is not in this registry.`]) const valResult = nameValidator(pkg) @@ -367,7 +367,7 @@ module.exports = (er, npm) => { detail.push(['signal', er.signal]) if (er.cmd && Array.isArray(er.args)) - detail.push(['command', ...[er.cmd, ...er.args]]) + detail.push(['command', ...[er.cmd, ...er.args.map(replaceInfo)]]) if (er.stdout) detail.push(['', er.stdout.trim()]) diff --git a/deps/npm/lib/view.js b/deps/npm/lib/view.js index f4fc5974eeeca7..0124bfb7d35433 100644 --- a/deps/npm/lib/view.js +++ b/deps/npm/lib/view.js @@ -336,7 +336,7 @@ class View extends BaseCommand { email: color.cyan(manifest._npmUser.email), }), modified: !packument.time ? undefined - : color.yellow(relativeDate(packument.time[packument.version])), + : color.yellow(relativeDate(packument.time[manifest.version])), maintainers: (packument.maintainers || []).map((u) => unparsePerson({ name: color.yellow(u.name), email: color.cyan(u.email), diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 0039adcfbf739d..19a23676ded35f 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" "August 2021" "" "" +.TH "NPM\-ACCESS" "1" "September 2021" "" "" .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 59d9a5a4e43631..d413f5abcbdb10 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" "August 2021" "" "" +.TH "NPM\-ADDUSER" "1" "September 2021" "" "" .SH "NAME" \fBnpm-adduser\fR \- Add a registry user account .SS Synopsis diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index 404061180176b8..f2a56e3e5e1cc7 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-AUDIT" "1" "August 2021" "" "" +.TH "NPM\-AUDIT" "1" "September 2021" "" "" .SH "NAME" \fBnpm-audit\fR \- Run a security audit .SS Synopsis diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1 index b8d47968145607..19b1ce3fea5dd5 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" "August 2021" "" "" +.TH "NPM\-BIN" "1" "September 2021" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SS Synopsis diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 101ff35e096ed4..5be9bba84b8679 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" "August 2021" "" "" +.TH "NPM\-BUGS" "1" "September 2021" "" "" .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 fcb2981944777f..217d9e134bcd16 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CACHE" "1" "August 2021" "" "" +.TH "NPM\-CACHE" "1" "September 2021" "" "" .SH "NAME" \fBnpm-cache\fR \- Manipulates packages cache .SS Synopsis diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index ccc462be57f530..87b62f0cf2a4f8 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" "August 2021" "" "" +.TH "NPM\-CI" "1" "September 2021" "" "" .SH "NAME" \fBnpm-ci\fR \- Install a project with a clean slate .SS Synopsis diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 41fd2ae6037697..54a54e0a66e826 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" "August 2021" "" "" +.TH "NPM\-COMPLETION" "1" "September 2021" "" "" .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 d7dda135292905..1189328e3b3845 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" "August 2021" "" "" +.TH "NPM\-CONFIG" "1" "September 2021" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SS Synopsis diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index e4344ec0a29d77..0a9b62f7f2cd3b 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" "August 2021" "" "" +.TH "NPM\-DEDUPE" "1" "September 2021" "" "" .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 dbcfe389a2f249..83d2345b046399 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEPRECATE" "1" "August 2021" "" "" +.TH "NPM\-DEPRECATE" "1" "September 2021" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SS Synopsis @@ -86,6 +86,6 @@ npm help registry .IP \(bu 2 npm help owner .IP \(bu 2 -npm help owner +npm help adduser .RE diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1 index ecf97b316265ac..afb363733953b5 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" "August 2021" "" "" +.TH "NPM\-DIFF" "1" "September 2021" "" "" .SH "NAME" \fBnpm-diff\fR \- The registry diff command .SS Synopsis diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index edc4eace5ed0ca..5f019fa163235c 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DIST\-TAG" "1" "August 2021" "" "" +.TH "NPM\-DIST\-TAG" "1" "September 2021" "" "" .SH "NAME" \fBnpm-dist-tag\fR \- Modify package distribution tags .SS Synopsis diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index aa336e07883215..75a0fbc944104e 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" "August 2021" "" "" +.TH "NPM\-DOCS" "1" "September 2021" "" "" .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 bd27ec0b9996a3..ab3542bacd86b1 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" "August 2021" "" "" +.TH "NPM\-DOCTOR" "1" "September 2021" "" "" .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 be8b624c7d9315..c5bf4648197e01 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" "August 2021" "" "" +.TH "NPM\-EDIT" "1" "September 2021" "" "" .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 7543e2218061df..ebbc1b6e2ef97f 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" "August 2021" "" "" +.TH "NPM\-EXEC" "1" "September 2021" "" "" .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 90ec6eb458c771..67fc54527862b7 100644 --- a/deps/npm/man/man1/npm-explain.1 +++ b/deps/npm/man/man1/npm-explain.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EXPLAIN" "1" "August 2021" "" "" +.TH "NPM\-EXPLAIN" "1" "September 2021" "" "" .SH "NAME" \fBnpm-explain\fR \- Explain installed packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 0f7ef716ffd42e..3834eb6ac928c8 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" "August 2021" "" "" +.TH "NPM\-EXPLORE" "1" "September 2021" "" "" .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 82bc51c97d8d2c..35314bfe8f2e90 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" "August 2021" "" "" +.TH "NPM\-FIND\-DUPES" "1" "September 2021" "" "" .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 8beb4cca2677c8..ef42eeb69d121e 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,4 +1,4 @@ -.TH "NPM\-FUND" "1" "August 2021" "" "" +.TH "NPM\-FUND" "1" "September 2021" "" "" .SH "NAME" \fBnpm-fund\fR \- Retrieve funding information .SS Synopsis diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 5d7bd8fd58e731..52704c9f8b8e14 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" "August 2021" "" "" +.TH "NPM\-HELP\-SEARCH" "1" "September 2021" "" "" .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 6d7fafc4b819b0..0f5d3612e0a8ec 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" "August 2021" "" "" +.TH "NPM\-HELP" "1" "September 2021" "" "" .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 6135a720b51f05..f36a43dfc471dd 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" "August 2021" "" "" +.TH "NPM\-HOOK" "1" "September 2021" "" "" .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 010f06a88332f1..be2d7a0439be86 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INIT" "1" "August 2021" "" "" +.TH "NPM\-INIT" "1" "September 2021" "" "" .SH "NAME" \fBnpm-init\fR \- Create a package\.json file .SS Synopsis diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index 922ea545d1f12e..4c51f47da62f0b 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" "August 2021" "" "" +.TH "NPM\-INSTALL\-CI\-TEST" "1" "September 2021" "" "" .SH "NAME" \fBnpm-install-ci-test\fR \- Install a project with a clean slate and run tests .SS Synopsis diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index b1e4a43ef84464..ee788cf70a72e2 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL\-TEST" "1" "August 2021" "" "" +.TH "NPM\-INSTALL\-TEST" "1" "September 2021" "" "" .SH "NAME" \fBnpm-install-test\fR \- Install package(s) and run tests .SS Synopsis diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 3ebcf9c04ba1a5..420aed1b082c4b 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL" "1" "August 2021" "" "" +.TH "NPM\-INSTALL" "1" "September 2021" "" "" .SH "NAME" \fBnpm-install\fR \- Install a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 2c6d3a86e6a615..81cfd87afdc1b9 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LINK" "1" "August 2021" "" "" +.TH "NPM\-LINK" "1" "September 2021" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SS Synopsis diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 05c1e8c94c9cfb..945e1aa45a23dc 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" "August 2021" "" "" +.TH "NPM\-LOGOUT" "1" "September 2021" "" "" .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 00d30a51c933cd..e9c5d78d82abf1 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LS" "1" "August 2021" "" "" +.TH "NPM\-LS" "1" "September 2021" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SS Synopsis @@ -26,7 +26,7 @@ example, running \fBnpm ls promzard\fP in npm's source tree will show: .P .RS 2 .nf -npm@7\.21\.1 /path/to/npm +npm@7\.24\.0 /path/to/npm └─┬ init\-package\-json@0\.0\.4 └── promzard@0\.1\.5 .fi diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index 4ad678e630c38d..9eb657a80f2de5 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" "August 2021" "" "" +.TH "NPM\-ORG" "1" "September 2021" "" "" .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 20a06266e250a3..b760bd3af1e8cb 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OUTDATED" "1" "August 2021" "" "" +.TH "NPM\-OUTDATED" "1" "September 2021" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index 12ec156e5da657..a73cb2c1872b8f 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OWNER" "1" "August 2021" "" "" +.TH "NPM\-OWNER" "1" "September 2021" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SS Synopsis diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index a51ed066536a64..da097d402d0cd3 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PACK" "1" "August 2021" "" "" +.TH "NPM\-PACK" "1" "September 2021" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index b56a4aa16f1670..5f109a6da3a511 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" "August 2021" "" "" +.TH "NPM\-PING" "1" "September 2021" "" "" .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 0eec1ed55e8473..ba88b03e654bb8 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" "August 2021" "" "" +.TH "NPM\-PKG" "1" "September 2021" "" "" .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 cf0d14ecb9a229..381b349399262e 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" "August 2021" "" "" +.TH "NPM\-PREFIX" "1" "September 2021" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SS Synopsis diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index e3a909f8440e1c..310d90026a4cec 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" "August 2021" "" "" +.TH "NPM\-PROFILE" "1" "September 2021" "" "" .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 762a6dd87191d7..0602a7e874ada4 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" "August 2021" "" "" +.TH "NPM\-PRUNE" "1" "September 2021" "" "" .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 34c8f806f64859..fe3f33450ab252 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PUBLISH" "1" "August 2021" "" "" +.TH "NPM\-PUBLISH" "1" "September 2021" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 595925449bb24b..05a537c69a16c9 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REBUILD" "1" "August 2021" "" "" +.TH "NPM\-REBUILD" "1" "September 2021" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 6026a1b2740386..603afd8d3fe4b4 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" "August 2021" "" "" +.TH "NPM\-REPO" "1" "September 2021" "" "" .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 5cd3cadc44758e..0192591dea0749 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" "August 2021" "" "" +.TH "NPM\-RESTART" "1" "September 2021" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index 4d04ccab31dba7..a7c41b63102b4b 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" "August 2021" "" "" +.TH "NPM\-ROOT" "1" "September 2021" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SS Synopsis diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index 02bb61417f3a6e..649a2b1fc87d18 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" "August 2021" "" "" +.TH "NPM\-RUN\-SCRIPT" "1" "September 2021" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SS Synopsis diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index c1d2a75e6a53ac..e25f0a3cd4f0bf 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" "August 2021" "" "" +.TH "NPM\-SEARCH" "1" "September 2021" "" "" .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 50d42f6e24a91f..0521583730493e 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" "August 2021" "" "" +.TH "NPM\-SET\-SCRIPT" "1" "September 2021" "" "" .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 4cf505d65ddedd..b0eff04992b7f8 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" "August 2021" "" "" +.TH "NPM\-SHRINKWRAP" "1" "September 2021" "" "" .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 4da5668414b355..f19795184de133 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STAR" "1" "August 2021" "" "" +.TH "NPM\-STAR" "1" "September 2021" "" "" .SH "NAME" \fBnpm-star\fR \- Mark your favorite packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index b45cde640c21a5..71de65a2f58bba 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" "August 2021" "" "" +.TH "NPM\-STARS" "1" "September 2021" "" "" .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 05a81c03344e51..24af98df83816f 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" "August 2021" "" "" +.TH "NPM\-START" "1" "September 2021" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 356585874f7d69..a6f8b977ea5c7e 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" "August 2021" "" "" +.TH "NPM\-STOP" "1" "September 2021" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index fc96e8aa488154..ffd620a450ab2d 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" "August 2021" "" "" +.TH "NPM\-TEAM" "1" "September 2021" "" "" .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 6eb0888077e921..2280aacf2a4779 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" "August 2021" "" "" +.TH "NPM\-TEST" "1" "September 2021" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SS Synopsis diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index aa0daab47e5a28..119f4279968c78 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" "August 2021" "" "" +.TH "NPM\-TOKEN" "1" "September 2021" "" "" .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 4282fe1282288a..85c251ef595823 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" "August 2021" "" "" +.TH "NPM\-UNINSTALL" "1" "September 2021" "" "" .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 81d1e39733d305..682659915c6d8f 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNPUBLISH" "1" "August 2021" "" "" +.TH "NPM\-UNPUBLISH" "1" "September 2021" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SS Synopsis diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1 index 4702cca1a9a2db..d69f398283aa7b 100644 --- a/deps/npm/man/man1/npm-unstar.1 +++ b/deps/npm/man/man1/npm-unstar.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNSTAR" "1" "August 2021" "" "" +.TH "NPM\-UNSTAR" "1" "September 2021" "" "" .SH "NAME" \fBnpm-unstar\fR \- Remove an item from your favorite packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index ed8633bd0513dd..5e871f7d57334e 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" "August 2021" "" "" +.TH "NPM\-UPDATE" "1" "September 2021" "" "" .SH "NAME" \fBnpm-update\fR \- Update packages .SS Synopsis diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index cdf50de20aaf8b..c91b7094ed9073 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" "August 2021" "" "" +.TH "NPM\-VERSION" "1" "September 2021" "" "" .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 a0bab36f219080..becada49734c69 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VIEW" "1" "August 2021" "" "" +.TH "NPM\-VIEW" "1" "September 2021" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SS Synopsis diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index f5dd6718fb2ec5..d7f53fb3257eb2 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" "August 2021" "" "" +.TH "NPM\-WHOAMI" "1" "September 2021" "" "" .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 e915deec084429..8e07933b219606 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "August 2021" "" "" +.TH "NPM" "1" "September 2021" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SS Synopsis @@ -10,7 +10,7 @@ npm [args] .RE .SS Version .P -7\.21\.1 +7\.24\.0 .SS Description .P npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1 index 982127c8ad6dd5..8eedcc86d5dab9 100644 --- a/deps/npm/man/man1/npx.1 +++ b/deps/npm/man/man1/npx.1 @@ -1,4 +1,4 @@ -.TH "NPX" "1" "August 2021" "" "" +.TH "NPX" "1" "September 2021" "" "" .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 de49122f3cec91..d5b0ee7fc129a8 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "August 2021" "" "" +.TH "FOLDERS" "5" "September 2021" "" "" .SH "NAME" \fBfolders\fR \- Folder Structures Used by npm .SS Description diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 0759e770bea6a2..43bd168c9e1e63 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "August 2021" "" "" +.TH "INSTALL" "5" "September 2021" "" "" .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 2e3aa79adb1d60..dc2ae457691af5 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" "August 2021" "" "" +.TH "NPM\-SHRINKWRAP\.JSON" "5" "September 2021" "" "" .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 84a0ffadbee25a..aa3850d7779fbb 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "August 2021" "" "" +.TH "NPMRC" "5" "September 2021" "" "" .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 7d4574186e73f9..7b69312b12416d 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" "August 2021" "" "" +.TH "PACKAGE\.JSON" "5" "September 2021" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SS Description diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 18f968ee6d8d1f..0be5a0548e805c 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" "August 2021" "" "" +.TH "PACKAGE\-LOCK\.JSON" "5" "September 2021" "" "" .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 db69e6bb1fd8ac..c794baedcc11c2 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "August 2021" "" "" +.TH "CONFIG" "7" "September 2021" "" "" .SH "NAME" \fBconfig\fR \- More than you probably want to know about npm configuration .SS Description diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index 9c226dfc3715a4..07c5f0d142696e 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "August 2021" "" "" +.TH "DEVELOPERS" "7" "September 2021" "" "" .SH "NAME" \fBdevelopers\fR \- Developer Guide .SS Description diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 983a41c9c2daeb..74386a0cab74fd 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGS" "7" "August 2021" "" "" +.TH "ORGS" "7" "September 2021" "" "" .SH "NAME" \fBorgs\fR \- Working with Teams & Orgs .SS Description diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index 07f090af82e869..90fe7a99f9208e 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "August 2021" "" "" +.TH "REGISTRY" "7" "September 2021" "" "" .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 7e8a85039b8437..bc591096ae0b7c 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "August 2021" "" "" +.TH "REMOVAL" "7" "September 2021" "" "" .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 6cf9946d01aa44..f35e7b382311c5 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "August 2021" "" "" +.TH "SCOPE" "7" "September 2021" "" "" .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 47e5879639b814..4e688ccc849bd8 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "August 2021" "" "" +.TH "SCRIPTS" "7" "September 2021" "" "" .SH "NAME" \fBscripts\fR \- How npm handles the "scripts" field .SS Description diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7 index 0e6e4c410cc3af..d84c9f59726b15 100644 --- a/deps/npm/man/man7/workspaces.7 +++ b/deps/npm/man/man7/workspaces.7 @@ -1,4 +1,4 @@ -.TH "WORKSPACES" "7" "August 2021" "" "" +.TH "WORKSPACES" "7" "September 2021" "" "" .SH "NAME" \fBworkspaces\fR \- Working with workspaces .SS Description @@ -189,6 +189,17 @@ npm run test \-\-workspaces .RE .P Will run the \fBtest\fP script in both \fB\|\./packages/a\fP and \fB\|\./packages/b\fP\|\. +.SS Ignoring missing scripts +.P +It is not required for all of the workspaces to implement scripts run with the \fBnpm run\fP command\. +.P +By running the command with the \fB\-\-if\-present\fP flag, npm will ignore workspaces missing target script\. +.P +.RS 2 +.nf +npm run test \-\-workspaces \-\-if\-present +.fi +.RE .SS See also .RS 0 .IP \(bu 2 diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/actual.js b/deps/npm/node_modules/@npmcli/arborist/bin/actual.js index ef254e1d4133d0..eb0495997a1b97 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/actual.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/actual.js @@ -7,12 +7,14 @@ require('./lib/timers.js') const start = process.hrtime() new Arborist(options).loadActual(options).then(tree => { const end = process.hrtime(start) - if (!process.argv.includes('--quiet')) + if (!process.argv.includes('--quiet')) { print(tree) + } console.error(`read ${tree.inventory.size} deps in ${end[0] * 1000 + end[1] / 1e6}ms`) - if (options.save) + if (options.save) { tree.meta.save() + } if (options.saveHidden) { tree.meta.hiddenLockfile = true tree.meta.filename = options.path + '/node_modules/.package-lock.json' diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/audit.js b/deps/npm/node_modules/@npmcli/arborist/bin/audit.js index 5075724e2d471e..d9ac532d3ed704 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/audit.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/audit.js @@ -7,12 +7,14 @@ require('./lib/logging.js') const Vuln = require('../lib/vuln.js') const printReport = report => { - for (const vuln of report.values()) + for (const vuln of report.values()) { console.log(printVuln(vuln)) + } if (report.topVulns.size) { console.log('\n# top-level vulnerabilities') - for (const vuln of report.topVulns.values()) + for (const vuln of report.topVulns.values()) { console.log(printVuln(vuln)) + } } } @@ -37,12 +39,16 @@ const arb = new Arborist(options) arb.audit(options).then(tree => { process.emit('timeEnd', 'audit script') const end = process.hrtime(start) - if (options.fix) + if (options.fix) { print(tree) - if (!options.quiet) + } + if (!options.quiet) { printReport(arb.auditReport) - if (options.fix) + } + if (options.fix) { console.error(`resolved ${tree.inventory.size} deps in ${end[0] + end[1] / 1e9}s`) - if (tree.meta && options.save) + } + if (tree.meta && options.save) { tree.meta.save() + } }).catch(er => console.error(er)) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/dedupe.js b/deps/npm/node_modules/@npmcli/arborist/bin/dedupe.js index 96f754e34ca9ee..b0e83459ef73fb 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/dedupe.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/dedupe.js @@ -10,8 +10,9 @@ const printDiff = diff => { depth({ tree: diff, visit: d => { - if (d.location === '') + if (d.location === '') { return + } switch (d.action) { case 'REMOVE': console.error('REMOVE', d.actual.location) @@ -38,9 +39,11 @@ arb.dedupe(options).then(tree => { process.emit('timeEnd', 'install') const end = process.hrtime(start) print(tree) - if (options.dryRun) + if (options.dryRun) { printDiff(arb.diff) + } console.error(`resolved ${tree.inventory.size} deps in ${end[0] + end[1] / 1e9}s`) - if (tree.meta && options.save) + if (tree.meta && options.save) { tree.meta.save() + } }).catch(er => console.error(require('util').inspect(er, { depth: Infinity }))) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/funding.js b/deps/npm/node_modules/@npmcli/arborist/bin/funding.js index fa1237e87e98a0..d0f4f31654ae0e 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/funding.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/funding.js @@ -19,13 +19,15 @@ a.loadVirtual().then(tree => { const end = process.hrtime(start) if (!query) { for (const node of tree.inventory.values()) { - if (node.package.funding) + if (node.package.funding) { console.log(node.name, node.location, node.package.funding) + } } } else { for (const node of tree.inventory.query('name', query)) { - if (node.package.funding) + if (node.package.funding) { console.log(node.name, node.location, node.package.funding) + } } } console.error(`read ${tree.inventory.size} deps in ${end[0] * 1000 + end[1] / 1e6}ms`) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/ideal.js b/deps/npm/node_modules/@npmcli/arborist/bin/ideal.js index 74d79ce0a51e96..5d1ed0dcd9dc62 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/ideal.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/ideal.js @@ -11,8 +11,9 @@ new Arborist(options).buildIdealTree(options).then(tree => { const end = process.hrtime(start) print(tree) console.error(`resolved ${tree.inventory.size} deps in ${end[0] + end[1] / 10e9}s`) - if (tree.meta && options.save) + if (tree.meta && options.save) { tree.meta.save() + } }).catch(er => { const opt = { depth: Infinity, color: true } console.error(er.code === 'ERESOLVE' ? inspect(er, opt) : er) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/lib/logging.js b/deps/npm/node_modules/@npmcli/arborist/bin/lib/logging.js index 9420bca3c320cd..8183ece1fd1191 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/lib/logging.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/lib/logging.js @@ -24,12 +24,13 @@ const colors = process.stderr.isTTY const magenta = colors ? msg => `\x1B[35m${msg}\x1B[39m` : m => m if (loglevel !== 'silent') { process.on('log', (level, ...args) => { - if (levelMap.get(level) < levelMap.get(loglevel)) + if (levelMap.get(level) < levelMap.get(loglevel)) { return + } const pref = `${process.pid} ${magenta(level)} ` - if (level === 'warn' && args[0] === 'ERESOLVE') + if (level === 'warn' && args[0] === 'ERESOLVE') { args[2] = inspect(args[2], { depth: 10, colors }) - else { + } else { args = args.map(a => { return typeof a === 'string' ? a : inspect(a, { depth: 10, colors }) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/lib/options.js b/deps/npm/node_modules/@npmcli/arborist/bin/lib/options.js index a1b6719627f506..23e89ddce698bf 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/lib/options.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/lib/options.js @@ -11,17 +11,17 @@ for (const arg of process.argv.slice(2)) { } else if (/^--rm=/.test(arg)) { options.rm = options.rm || [] options.rm.push(arg.substr('--rm='.length)) - } else if (arg === '--global') + } else if (arg === '--global') { options.global = true - else if (arg === '--global-style') + } else if (arg === '--global-style') { options.globalStyle = true - else if (arg === '--prefer-dedupe') + } else if (arg === '--prefer-dedupe') { options.preferDedupe = true - else if (arg === '--legacy-peer-deps') + } else if (arg === '--legacy-peer-deps') { options.legacyPeerDeps = true - else if (arg === '--force') + } else if (arg === '--force') { options.force = true - else if (arg === '--update-all') { + } else if (arg === '--update-all') { options.update = options.update || {} options.update.all = true } else if (/^--update=/.test(arg)) { @@ -31,9 +31,9 @@ for (const arg of process.argv.slice(2)) { } else if (/^--omit=/.test(arg)) { options.omit = options.omit || [] options.omit.push(arg.substr('--omit='.length)) - } else if (/^--before=/.test(arg)) + } else if (/^--before=/.test(arg)) { options.before = new Date(arg.substr('--before='.length)) - else if (/^-w.+/.test(arg)) { + } else if (/^-w.+/.test(arg)) { options.workspaces = options.workspaces || [] options.workspaces.push(arg.replace(/^-w/, '')) } else if (/^--workspace=/.test(arg)) { @@ -43,15 +43,17 @@ for (const arg of process.argv.slice(2)) { const [key, ...v] = arg.replace(/^--/, '').split('=') const val = v.join('=') options[key] = val === 'false' ? false : val === 'true' ? true : val - } else if (/^--.+/.test(arg)) + } else if (/^--.+/.test(arg)) { options[arg.replace(/^--/, '')] = true - else if (options.path === undefined) + } else if (options.path === undefined) { options.path = arg - else + } else { options._.push(arg) + } } -if (options.path === undefined) +if (options.path === undefined) { options.path = '.' +} console.error(options) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/lib/timers.js b/deps/npm/node_modules/@npmcli/arborist/bin/lib/timers.js index b516af92c5b57f..242431980e55c4 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/lib/timers.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/lib/timers.js @@ -3,21 +3,24 @@ const { format } = require('util') const options = require('./options.js') process.on('time', name => { - if (timers[name]) + if (timers[name]) { throw new Error('conflicting timer! ' + name) + } timers[name] = process.hrtime() }) const dim = process.stderr.isTTY ? msg => `\x1B[2m${msg}\x1B[22m` : m => m const red = process.stderr.isTTY ? msg => `\x1B[31m${msg}\x1B[39m` : m => m process.on('timeEnd', name => { - if (!timers[name]) + if (!timers[name]) { throw new Error('timer not started! ' + name) + } const res = process.hrtime(timers[name]) delete timers[name] const msg = format(`${process.pid} ${name}`, res[0] * 1e3 + res[1] / 1e6) - if (options.timers !== false) + if (options.timers !== false) { console.error(dim(msg)) + } }) process.on('exit', () => { diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/license.js b/deps/npm/node_modules/@npmcli/arborist/bin/license.js index 89d0d879036b0c..7fc08dd83eb5b1 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/license.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/license.js @@ -8,27 +8,31 @@ const query = options._.shift() a.loadVirtual().then(tree => { // only load the actual tree if the virtual one doesn't have modern metadata - if (!tree.meta || !(tree.meta.originalLockfileVersion >= 2)) + if (!tree.meta || !(tree.meta.originalLockfileVersion >= 2)) { throw 'load actual' - else + } else { return tree + } }).catch((er) => { console.error('loading actual tree', er) return a.loadActual() }).then(tree => { if (!query) { const set = [] - for (const license of tree.inventory.query('license')) + for (const license of tree.inventory.query('license')) { set.push([tree.inventory.query('license', license).size, license]) + } for (const [count, license] of set.sort((a, b) => a[1] && b[1] ? b[0] - a[0] || a[1].localeCompare(b[1], 'en') : a[1] ? -1 : b[1] ? 1 - : 0)) + : 0)) { console.log(count, license) + } } else { - for (const node of tree.inventory.query('license', query === 'undefined' ? undefined : query)) + for (const node of tree.inventory.query('license', query === 'undefined' ? undefined : query)) { console.log(`${node.name} ${node.location} ${node.package.description || ''}`) + } } }) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/prune.js b/deps/npm/node_modules/@npmcli/arborist/bin/prune.js index 357dbcaafa03f8..4809a992388aa5 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/prune.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/prune.js @@ -10,8 +10,9 @@ const printDiff = diff => { depth({ tree: diff, visit: d => { - if (d.location === '') + if (d.location === '') { return + } switch (d.action) { case 'REMOVE': console.error('REMOVE', d.actual.location) @@ -38,9 +39,11 @@ arb.prune(options).then(tree => { process.emit('timeEnd', 'install') const end = process.hrtime(start) print(tree) - if (options.dryRun) + if (options.dryRun) { printDiff(arb.diff) + } console.error(`resolved ${tree.inventory.size} deps in ${end[0] + end[1] / 1e9}s`) - if (tree.meta && options.save) + if (tree.meta && options.save) { tree.meta.save() + } }).catch(er => console.error(require('util').inspect(er, { depth: Infinity }))) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/reify.js b/deps/npm/node_modules/@npmcli/arborist/bin/reify.js index d17a0e03b3286a..803bac978c69aa 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/reify.js @@ -10,8 +10,9 @@ const printDiff = diff => { depth({ tree: diff, visit: d => { - if (d.location === '') + if (d.location === '') { return + } switch (d.action) { case 'REMOVE': console.error('REMOVE', d.actual.location) @@ -38,9 +39,11 @@ arb.reify(options).then(tree => { process.emit('timeEnd', 'install') const end = process.hrtime(start) print(tree) - if (options.dryRun) + if (options.dryRun) { printDiff(arb.diff) + } console.error(`resolved ${tree.inventory.size} deps in ${end[0] + end[1] / 1e9}s`) - if (tree.meta && options.save) + if (tree.meta && options.save) { tree.meta.save() + } }).catch(er => console.error(require('util').inspect(er, { depth: Infinity }))) diff --git a/deps/npm/node_modules/@npmcli/arborist/bin/virtual.js b/deps/npm/node_modules/@npmcli/arborist/bin/virtual.js index 3352802c2de873..457c945e72c211 100644 --- a/deps/npm/node_modules/@npmcli/arborist/bin/virtual.js +++ b/deps/npm/node_modules/@npmcli/arborist/bin/virtual.js @@ -8,9 +8,11 @@ require('./lib/timers.js') const start = process.hrtime() new Arborist(options).loadVirtual().then(tree => { const end = process.hrtime(start) - if (!options.quiet) + if (!options.quiet) { print(tree) - if (options.save) + } + if (options.save) { tree.meta.save() + } console.error(`read ${tree.inventory.size} deps in ${end[0] * 1000 + end[1] / 1e6}ms`) }).catch(er => console.error(er)) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js b/deps/npm/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js index f78a43319be8cb..c1b64a461af8ac 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js @@ -1,8 +1,9 @@ // add and remove dependency specs to/from pkg manifest const add = ({pkg, add, saveBundle, saveType, log}) => { - for (const spec of add) + for (const spec of add) { addSingle({pkg, spec, saveBundle, saveType, log}) + } return pkg } @@ -24,8 +25,9 @@ const addSingle = ({pkg, spec, saveBundle, saveType, log}) => { // to keep based on the same order of priority we do when // building the tree as defined in the _loadDeps method of // the node class. - if (!saveType) + if (!saveType) { saveType = inferSaveType(pkg, spec.name) + } if (saveType === 'prod') { // a production dependency can only exist as production (rpj ensures it @@ -48,8 +50,9 @@ const addSingle = ({pkg, spec, saveBundle, saveType, log}) => { const depType = saveTypeMap.get(saveType) pkg[depType] = pkg[depType] || {} - if (rawSpec !== '' || pkg[depType][name] === undefined) + if (rawSpec !== '' || pkg[depType][name] === undefined) { pkg[depType][name] = rawSpec || '*' + } if (saveType === 'optional') { // Affordance for previous npm versions that require this behaviour pkg.dependencies = pkg.dependencies || {} @@ -58,17 +61,18 @@ const addSingle = ({pkg, spec, saveBundle, saveType, log}) => { if (saveType === 'peer' || saveType === 'peerOptional') { const pdm = pkg.peerDependenciesMeta || {} - if (saveType === 'peer' && pdm[name] && pdm[name].optional) + if (saveType === 'peer' && pdm[name] && pdm[name].optional) { pdm[name].optional = false - else if (saveType === 'peerOptional') { + } else if (saveType === 'peerOptional') { pdm[name] = pdm[name] || {} pdm[name].optional = true pkg.peerDependenciesMeta = pdm } // peerDeps are often also a devDep, so that they can be tested when // using package managers that don't auto-install peer deps - if (pkg.devDependencies && pkg.devDependencies[name] !== undefined) + if (pkg.devDependencies && pkg.devDependencies[name] !== undefined) { pkg.devDependencies[name] = pkg.peerDependencies[name] + } } if (saveBundle && saveType !== 'peer' && saveType !== 'peerOptional') { @@ -87,47 +91,54 @@ const inferSaveType = (pkg, name) => { saveType === 'peerOptional' && (!hasSubKey(pkg, 'peerDependenciesMeta', name) || !pkg.peerDependenciesMeta[name].optional) - ) + ) { return 'peer' + } return saveType } } return 'prod' } +const { hasOwnProperty } = Object.prototype const hasSubKey = (pkg, depType, name) => { - return pkg[depType] && Object.prototype.hasOwnProperty.call(pkg[depType], name) + return pkg[depType] && hasOwnProperty.call(pkg[depType], name) } // Removes a subkey and warns about it if it's being replaced const deleteSubKey = (pkg, depType, name, replacedBy, log) => { if (hasSubKey(pkg, depType, name)) { - if (replacedBy && log) + if (replacedBy && log) { log.warn('idealTree', `Removing ${depType}.${name} in favor of ${replacedBy}.${name}`) + } delete pkg[depType][name] - // clean up peerDependenciesMeta if we are removing something from peerDependencies + // clean up peerDepsMeta if we are removing something from peerDependencies if (depType === 'peerDependencies' && pkg.peerDependenciesMeta) { delete pkg.peerDependenciesMeta[name] - if (!Object.keys(pkg.peerDependenciesMeta).length) + if (!Object.keys(pkg.peerDependenciesMeta).length) { delete pkg.peerDependenciesMeta + } } - if (!Object.keys(pkg[depType]).length) + if (!Object.keys(pkg[depType]).length) { delete pkg[depType] + } } } const rm = (pkg, rm) => { for (const depType of new Set(saveTypeMap.values())) { - for (const name of rm) + for (const name of rm) { deleteSubKey(pkg, depType, name) + } } if (pkg.bundleDependencies) { pkg.bundleDependencies = pkg.bundleDependencies .filter(name => !rm.includes(name)) - if (!pkg.bundleDependencies.length) + if (!pkg.bundleDependencies.length) { delete pkg.bundleDependencies + } } return pkg } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/audit.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/audit.js index bf1c335e753639..c0cd79bb13e360 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/audit.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/audit.js @@ -22,8 +22,9 @@ module.exports = cls => class Auditor extends cls { process.emit('time', 'audit') const tree = await this.loadVirtual() - if (this[_workspaces] && this[_workspaces].length) + if (this[_workspaces] && this[_workspaces].length) { options.filterSet = this.workspaceDependencySet(tree, this[_workspaces]) + } this.auditReport = await AuditReport.load(tree, options) const ret = options.fix ? this.reify(options) : this.auditReport process.emit('timeEnd', 'audit') 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 cda7f8acfb5175..c45024d16e86b7 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 @@ -137,8 +137,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { this[_globalStyle] = this[_global] || globalStyle this[_follow] = !!follow - if (this[_workspaces].length && this[_global]) + if (this[_workspaces].length && this[_global]) { throw new Error('Cannot operate on workspaces in global mode') + } this[_explicitRequests] = new Set() this[_preferDedupe] = false @@ -168,18 +169,21 @@ module.exports = cls => class IdealTreeBuilder extends cls { // public method async buildIdealTree (options = {}) { - if (this.idealTree) + if (this.idealTree) { return Promise.resolve(this.idealTree) + } // allow the user to set reify options on the ctor as well. // XXX: deprecate separate reify() options object. options = { ...this.options, ...options } // an empty array or any falsey value is the same as null - if (!options.add || options.add.length === 0) + if (!options.add || options.add.length === 0) { options.add = null - if (!options.rm || options.rm.length === 0) + } + if (!options.rm || options.rm.length === 0) { options.rm = null + } process.emit('time', 'idealTree') @@ -230,11 +234,12 @@ module.exports = cls => class IdealTreeBuilder extends cls { [_checkEngine] (node) { const { engineStrict, npmVersion, nodeVersion } = this.options - const c = () => checkEngine(node.package, npmVersion, nodeVersion, this[_force]) + const c = () => + checkEngine(node.package, npmVersion, nodeVersion, this[_force]) - if (engineStrict) + if (engineStrict) { c() - else { + } else { try { c() } catch (er) { @@ -252,8 +257,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { : Array.isArray(options.update) ? { names: options.update } : options.update || {} - if (update.all || !Array.isArray(update.names)) + if (update.all || !Array.isArray(update.names)) { update.names = [] + } this[_complete] = !!options.complete this[_preferDedupe] = !!options.preferDedupe @@ -283,8 +289,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { : rpj(this.path + '/package.json').then( pkg => this[_rootNodeFromPackage](pkg), er => { - if (er.code === 'EJSONPARSE') + if (er.code === 'EJSONPARSE') { throw er + } return this[_rootNodeFromPackage]({}) } )) @@ -312,8 +319,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { // even though we didn't load it from a package-lock.json FILE, // we still loaded it "from disk", meaning we have to reset // dep flags before assuming that any mutations were reflected. - if (tree.children.size) + if (tree.children.size) { root.meta.loadedFromDisk = true + } } return root }) @@ -382,9 +390,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { process.emit('time', 'idealTree:userRequests') const tree = this.idealTree.target - if (!this[_workspaces].length) + if (!this[_workspaces].length) { await this[_applyUserRequestsToNode](tree, options) - else { + } else { await Promise.all(this.workspaceNodes(tree, this[_workspaces]) .map(node => this[_applyUserRequestsToNode](node, options))) } @@ -396,8 +404,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { // If we have a list of package names to update, and we know it's // going to update them wherever they are, add any paths into those // named nodes to the buildIdealTree queue. - if (!this[_global] && this[_updateNames].length) + if (!this[_global] && this[_updateNames].length) { this[_queueNamedUpdates]() + } // global updates only update the globalTop nodes, but we need to know // that they're there, and not reinstall the world unnecessarily. @@ -408,46 +417,55 @@ module.exports = cls => class IdealTreeBuilder extends cls { tree.package.dependencies = tree.package.dependencies || {} const updateName = this[_updateNames].includes(name) if (this[_updateAll] || updateName) { - if (updateName) + if (updateName) { globalExplicitUpdateNames.push(name) + } const dir = resolve(nm, name) - const st = await lstat(dir).catch(/* istanbul ignore next */ er => null) + const st = await lstat(dir) + .catch(/* istanbul ignore next */ er => null) if (st && st.isSymbolicLink()) { const target = await readlink(dir) const real = resolve(dirname(dir), target) tree.package.dependencies[name] = `file:${real}` - } else + } else { tree.package.dependencies[name] = '*' + } } } } - if (this.auditReport && this.auditReport.size > 0) + if (this.auditReport && this.auditReport.size > 0) { await this[_queueVulnDependents](options) + } const { add, rm } = options if (rm && rm.length) { addRmPkgDeps.rm(tree.package, rm) - for (const name of rm) + for (const name of rm) { this[_explicitRequests].add({ from: tree, name, action: 'DELETE' }) + } } - if (add && add.length) + if (add && add.length) { await this[_add](tree, options) + } // triggers a refresh of all edgesOut. this has to be done BEFORE // adding the edges to explicitRequests, because the package setter // resets all edgesOut. - if (add && add.length || rm && rm.length || this[_global]) + if (add && add.length || rm && rm.length || this[_global]) { tree.package = tree.package + } for (const spec of this[_resolvedAdd]) { - if (spec.tree === tree) + if (spec.tree === tree) { this[_explicitRequests].add(tree.edgesOut.get(spec.name)) + } } - for (const name of globalExplicitUpdateNames) + for (const name of globalExplicitUpdateNames) { this[_explicitRequests].add(tree.edgesOut.get(name)) + } this[_depsQueue].push(tree) } @@ -487,21 +505,24 @@ module.exports = cls => class IdealTreeBuilder extends cls { // if it's an explicit tag, we need to install that specific tag version const isTag = spec.rawSpec && spec.type === 'tag' - if (spec.name && !isTag) + if (spec.name && !isTag) { return spec + } const mani = await pacote.manifest(spec, { ...this.options }) // if it's a tag type, then we need to run it down to an actual version - if (isTag) + if (isTag) { return npa(`${mani.name}@${mani.version}`) + } spec.name = mani.name return spec } async [_updateFilePath] (spec) { - if (spec.type === 'file') + if (spec.type === 'file') { return this[_getRelpathSpec](spec, spec.fetchSpec) + } return spec } @@ -601,8 +622,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { nodesTouched.add(node) } } - for (const node of nodesTouched) + for (const node of nodesTouched) { node.package = node.package + } } } @@ -611,11 +633,13 @@ module.exports = cls => class IdealTreeBuilder extends cls { } [_avoidRange] (name) { - if (!this.auditReport) + if (!this.auditReport) { return null + } const vuln = this.auditReport.get(name) - if (!vuln) + if (!vuln) { return null + } return vuln.range } @@ -652,8 +676,9 @@ module.exports = cls => class IdealTreeBuilder extends cls { const ancient = meta.ancientLockfile const old = meta.loadedFromDisk && !(meta.originalLockfileVersion >= 2) - if (inventory.size === 0 || !ancient && !old) + if (inventory.size === 0 || !ancient && !old) { return + } // if the lockfile is from node v5 or earlier, then we'll have to reload // all the manifests of everything we encounter. this is costly, but at @@ -672,8 +697,9 @@ This is a one-time fix-up, please be patient... this.addTracker('idealTree:inflate') const queue = [] for (const node of inventory.values()) { - if (node.isProjectRoot) + if (node.isProjectRoot) { continue + } queue.push(async () => { this.log.silly('inflate', node.location) @@ -738,8 +764,9 @@ This is a one-time fix-up, please be patient... this[_currentDep] = null } - if (!this[_depsQueue].length) + if (!this[_depsQueue].length) { return this[_resolveLinks]() + } // sort physically shallower deps up to the front of the queue, // because they'll affect things deeper in, then alphabetical @@ -757,8 +784,9 @@ This is a one-time fix-up, please be patient... // satisfied by whatever's in that file anyway. if (this[_depsSeen].has(node) || node.root !== this.idealTree || - hasShrinkwrap && !this[_complete]) + hasShrinkwrap && !this[_complete]) { return this[_buildDepStep]() + } this[_depsSeen].add(node) this[_currentDep] = node @@ -841,8 +869,9 @@ This is a one-time fix-up, please be patient... const tasks = [] const peerSource = this[_peerSetSource].get(node) || node for (const edge of this[_problemEdges](node)) { - if (edge.overridden) + if (edge.overridden) { continue + } // peerSetSource is only relevant when we have a peerEntryEdge // otherwise we're setting regular non-peer deps as if they have @@ -878,8 +907,9 @@ This is a one-time fix-up, please be patient... /* istanbul ignore next */ debug(() => { - if (!dep) + if (!dep) { throw new Error('no dep??') + } }) tasks.push({edge, dep}) @@ -912,17 +942,20 @@ This is a one-time fix-up, please be patient... visit: pd => { const { placed, edge, canPlace: cpd } = pd // if we didn't place anything, nothing to do here - if (!placed) + if (!placed) { return + } // we placed something, that means we changed the tree - if (placed.errors.length) + if (placed.errors.length) { this[_loadFailures].add(placed) + } this[_mutateTree] = true if (cpd.canPlaceSelf === OK) { for (const edgeIn of placed.edgesIn) { - if (edgeIn === edge) + if (edgeIn === edge) { continue + } const { from, valid, overridden } = edgeIn if (!overridden && !valid && !this[_depsSeen].has(from)) { this.addTracker('idealTree', from.name, from.location) @@ -936,8 +969,9 @@ This is a one-time fix-up, please be patient... // intentionally causing something to get nested which was // previously placed in this location. for (const edgeIn of placed.edgesIn) { - if (edgeIn === edge) + if (edgeIn === edge) { continue + } const { valid, overridden } = edgeIn if (!valid && !overridden) { @@ -975,8 +1009,9 @@ This is a one-time fix-up, please be patient... } for (const { to } of node.edgesOut.values()) { - if (to && to.isLink && to.target) + if (to && to.isLink && to.target) { this[_linkNodes].add(to) + } } await Promise.all(promises) @@ -1019,8 +1054,9 @@ This is a one-time fix-up, please be patient... if (required.has(edge.from) && edge.type !== 'peerOptional' || secondEdge && ( - required.has(secondEdge.from) && secondEdge.type !== 'peerOptional')) + required.has(secondEdge.from) && secondEdge.type !== 'peerOptional')) { required.add(node) + } // keep track of the thing that caused this node to be included. const src = parent.sourceReference @@ -1030,16 +1066,18 @@ This is a one-time fix-up, please be patient... // otherwise we'll be tempted to put peers as other top-level installed // things, potentially clobbering what's there already, which is not // what we want. the missing edges will be picked up on the next pass. - if (this[_global] && edge.from.isProjectRoot) + if (this[_global] && edge.from.isProjectRoot) { return node + } // otherwise, we have to make sure that our peers can go along with us. return this[_loadPeerSet](node, required) } [_virtualRoot] (node, reuse = false) { - if (reuse && this[_virtualRoots].has(node)) + if (reuse && this[_virtualRoots].has(node)) { return this[_virtualRoots].get(node) + } const vr = new Node({ path: node.realpath, @@ -1081,16 +1119,19 @@ This is a one-time fix-up, please be patient... return [...node.edgesOut.values()] .filter(edge => { // If it's included in a bundle, we take whatever is specified. - if (bundled.has(edge.name)) + if (bundled.has(edge.name)) { return false + } // If it's already been logged as a load failure, skip it. - if (edge.to && this[_loadFailures].has(edge.to)) + if (edge.to && this[_loadFailures].has(edge.to)) { return false + } // If it's shrinkwrapped, we use what the shrinkwap wants. - if (edge.to && edge.to.inShrinkwrap) + if (edge.to && edge.to.inShrinkwrap) { return false + } // If the edge has no destination, that's a problem, unless // if it's peerOptional and not explicitly requested. @@ -1100,20 +1141,24 @@ This is a one-time fix-up, please be patient... } // If the edge has an error, there's a problem. - if (!edge.valid) + if (!edge.valid) { return true + } - // If user has explicitly asked to update this package by name, it's a problem. - if (this[_updateNames].includes(edge.name)) + // user explicitly asked to update this package by name, problem + if (this[_updateNames].includes(edge.name)) { return true + } - // If we're fixing a security vulnerability with this package, it's a problem. - if (this[_isVulnerable](edge.to)) + // fixing a security vulnerability with this package, problem + if (this[_isVulnerable](edge.to)) { return true + } - // If the user has explicitly asked to install this package, it's a "problem". - if (this[_explicitRequests].has(edge)) + // user has explicitly asked to install this package, problem + if (this[_explicitRequests].has(edge)) { return true + } // No problems! return false @@ -1129,9 +1174,9 @@ This is a one-time fix-up, please be patient... // if available and valid. spec = this.idealTree.meta.checkYarnLock(spec, options) - if (this[_manifests].has(spec.raw)) + if (this[_manifests].has(spec.raw)) { return this[_manifests].get(spec.raw) - else { + } else { this.log.silly('fetch manifest', spec.raw) const p = pacote.manifest(spec, options) .then(mani => { @@ -1201,8 +1246,9 @@ This is a one-time fix-up, please be patient... for (const edge of peerEdges) { // already placed this one, and we're happy with it. - if (edge.valid && edge.to) + if (edge.valid && edge.to) { continue + } const parentEdge = node.parent.edgesOut.get(edge.name) const {isProjectRoot, isWorkspace} = node.parent.sourceReference @@ -1223,11 +1269,17 @@ This is a one-time fix-up, please be patient... // a conflict. this is always a problem in strict mode, never // in force mode, and a problem in non-strict mode if this isn't // on behalf of our project. in all such cases, we warn at least. - const dep = await this[_nodeFromEdge](parentEdge, node.parent, edge, required) + const dep = await this[_nodeFromEdge]( + parentEdge, + node.parent, + edge, + required + ) // hooray! that worked! - if (edge.valid) + if (edge.valid) { continue + } // allow it. either we're overriding, or it's not something // that will be installed by default anyway, and we'll fail when @@ -1260,8 +1312,9 @@ This is a one-time fix-up, please be patient... // isn't also required, then there's a good chance we won't need it, // so allow it for now and let it conflict if it turns out to actually // be necessary for the installation. - if (conflictOK || !required.has(edge.from)) + if (conflictOK || !required.has(edge.from)) { continue + } // ok, it's the root, or we're in unforced strict mode, so this is bad this[_failPeerConflict](edge, parentEdge) @@ -1304,15 +1357,17 @@ This is a one-time fix-up, please be patient... this[_linkNodes].delete(link) // link we never ended up placing, skip it - if (link.root !== this.idealTree) + if (link.root !== this.idealTree) { continue + } const tree = this.idealTree.target const external = !link.target.isDescendantOf(tree) // outside the root, somebody else's problem, ignore it - if (external && !this[_follow]) + if (external && !this[_follow]) { continue + } // didn't find a parent for it or it has not been seen yet // so go ahead and process it. @@ -1328,8 +1383,9 @@ This is a one-time fix-up, please be patient... } } - if (this[_depsQueue].length) + if (this[_depsQueue].length) { return this[_buildDepStep]() + } } [_fixDepFlags] () { @@ -1344,8 +1400,9 @@ This is a one-time fix-up, please be patient... // all set to true, and there can be nothing extraneous, so there's // nothing to prune, because we built it from scratch. if we didn't // add or remove anything, then also nothing to do. - if (metaFromDisk && mutateTree) + if (metaFromDisk && mutateTree) { resetDepFlags(this.idealTree) + } // update all the dev/optional/etc flags in the tree // either we started with a fresh tree, or we @@ -1353,9 +1410,9 @@ This is a one-time fix-up, please be patient... // // if we started from a blank slate, or changed something, then // the dep flags will be all set to true. - if (!metaFromDisk || mutateTree) + if (!metaFromDisk || mutateTree) { calcDepFlags(this.idealTree) - else { + } else { // otherwise just unset all the flags on the root node // since they will sometimes have the default value this.idealTree.extraneous = false @@ -1370,25 +1427,29 @@ This is a one-time fix-up, please be patient... // then the tree is suspect. Prune what is marked as extraneous. // otherwise, don't bother. const needPrune = metaFromDisk && (mutateTree || flagsSuspect) - if (this[_prune] && needPrune) + if (this[_prune] && needPrune) { this[_idealTreePrune]() + } process.emit('timeEnd', 'idealTree:fixDepFlags') } [_idealTreePrune] () { - for (const node of this.idealTree.inventory.filter(n => n.extraneous)) + for (const node of this.idealTree.inventory.filter(n => n.extraneous)) { node.parent = null + } } [_pruneFailedOptional] () { for (const node of this[_loadFailures]) { - if (!node.optional) + if (!node.optional) { throw node.errors[0] + } const set = optionalSet(node) - for (const node of set) + for (const node of set) { node.parent = null + } } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/deduper.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/deduper.js index c78e42e7575d0e..1741c31a19a27b 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/deduper.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/deduper.js @@ -6,8 +6,9 @@ module.exports = cls => class Deduper extends cls { const tree = await this.loadVirtual().catch(() => this.loadActual()) const names = [] for (const name of tree.inventory.query('name')) { - if (tree.inventory.query('name', name).size > 1) + if (tree.inventory.query('name', name).size > 1) { names.push(name) + } } return this.reify({ ...options, diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js index b26a26c2be2abe..d8ca67faa6065d 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js @@ -59,8 +59,9 @@ class Arborist extends Base { packumentCache: options.packumentCache || new Map(), log: options.log || procLog, } - if (options.saveType && !saveTypeMap.get(options.saveType)) + if (options.saveType && !saveTypeMap.get(options.saveType)) { throw new Error(`Invalid saveType ${options.saveType}`) + } this.cache = resolve(this.options.cache) this.path = resolve(this.options.path) process.emit('timeEnd', 'arborist:ctor') @@ -81,17 +82,20 @@ class Arborist extends Base { const dep = edge.to if (dep) { set.add(dep) - if (dep.isLink) + if (dep.isLink) { set.add(dep.target) + } } } for (const child of node.children.values()) { - if (child.extraneous) + if (child.extraneous) { extraneous.add(child) + } } } - for (const extra of extraneous) + for (const extra of extraneous) { set.add(extra) + } return set } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js index 0338b2cd847b2c..68e58af7d98582 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js @@ -78,8 +78,9 @@ module.exports = cls => class ActualLoader extends cls { [_resetDepFlags] (tree, root) { // reset all deps to extraneous prior to recalc if (!root) { - for (const node of tree.inventory.values()) + for (const node of tree.inventory.values()) { node.extraneous = true + } } // only reset root flags if we're not re-rooting, @@ -176,8 +177,9 @@ module.exports = cls => class ActualLoader extends cls { await this[_loadFSTree](this[_actualTree]) await this[_loadWorkspaces](this[_actualTree]) await this[_loadWorkspaceTargets](this[_actualTree]) - if (!ignoreMissing) + if (!ignoreMissing) { await this[_findMissingEdges]() + } this[_findFSParents]() this[_transplant](root) @@ -200,8 +202,9 @@ module.exports = cls => class ActualLoader extends cls { // if there are workspace targets without Link nodes created, load // the targets, so that we know what they are. async [_loadWorkspaceTargets] (tree) { - if (!tree.workspaces || !tree.workspaces.size) + if (!tree.workspaces || !tree.workspaces.size) { return + } const promises = [] for (const path of tree.workspaces.values()) { @@ -215,18 +218,21 @@ module.exports = cls => class ActualLoader extends cls { } [_transplant] (root) { - if (!root || root === this[_actualTree]) + if (!root || root === this[_actualTree]) { return + } this[_actualTree][_changePath](root.path) for (const node of this[_actualTree].children.values()) { - if (!this[_transplantFilter](node)) + if (!this[_transplantFilter](node)) { node.root = null + } } root.replace(this[_actualTree]) - for (const node of this[_actualTree].fsChildren) + for (const node of this[_actualTree].fsChildren) { node.root = this[_transplantFilter](node) ? root : null + } this[_actualTree] = root } @@ -291,8 +297,9 @@ module.exports = cls => class ActualLoader extends cls { // it'll get parented later, making the fsParent scan a no-op, but better // safe than sorry, since it's cheap. const { parent, realpath } = options - if (!parent) + if (!parent) { this[_topNodes].add(realpath) + } return process.env._TEST_ARBORIST_SLOW_LINK_TARGET_ === '1' ? new Promise(res => setTimeout(() => res(new Node(options)), 100)) : new Node(options) @@ -309,8 +316,9 @@ module.exports = cls => class ActualLoader extends cls { // if a link target points at a node outside of the root tree's // node_modules hierarchy, then load that node as well. return this[_loadFSTree](link.target).then(() => link) - } else if (target.then) + } else if (target.then) { target.then(node => link.target = node) + } return link } @@ -321,13 +329,15 @@ module.exports = cls => class ActualLoader extends cls { // if a Link target has started, but not completed, then // a Promise will be in the cache to indicate this. - if (node.then) + if (node.then) { return node.then(node => this[_loadFSTree](node)) + } // impossible except in pathological ELOOP cases /* istanbul ignore if */ - if (did.has(node.realpath)) + if (did.has(node.realpath)) { return Promise.resolve(node) + } did.add(node.realpath) return this[_loadFSChildren](node) @@ -371,8 +381,11 @@ module.exports = cls => class ActualLoader extends cls { const depPromises = [] for (const [name, edge] of node.edgesOut.entries()) { - if (!edge.missing && !(edge.to && (edge.to.dummy || edge.to.parent !== node))) + const notMissing = !edge.missing && + !(edge.to && (edge.to.dummy || edge.to.parent !== node)) + if (notMissing) { continue + } // start the walk from the dirname, because we would have found // the dep in the loadFSTree step already if it was local. @@ -383,14 +396,16 @@ module.exports = cls => class ActualLoader extends cls { // allows for finding the transitive deps of link targets. // ie, if it has to go up and back out to get to the path // from the nearest common ancestor, we've gone too far. - if (ancestor && /^\.\.(?:[\\/]|$)/.test(relative(ancestor, p))) + if (ancestor && /^\.\.(?:[\\/]|$)/.test(relative(ancestor, p))) { break + } const entries = nmContents.get(p) || await readdir(p + '/node_modules').catch(() => []) nmContents.set(p, entries) - if (!entries.includes(name)) + if (!entries.includes(name)) { continue + } const d = this[_cache].has(p) ? await this[_cache].get(p) : new Node({ path: p, root: node.root, dummy: true }) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js index d1edcaca01d7e1..fa0aa0746e11a0 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js @@ -40,8 +40,9 @@ module.exports = cls => class VirtualLoader extends cls { // public method async loadVirtual (options = {}) { - if (this.virtualTree) + if (this.virtualTree) { return this.virtualTree + } // allow the user to set reify options on the ctor as well. // XXX: deprecate separate reify() options object. @@ -85,18 +86,21 @@ module.exports = cls => class VirtualLoader extends cls { root.optional = false root.devOptional = false root.peer = false - } else + } else { this[flagsSuspect] = true + } this[checkRootEdges](s, root) root.meta = s this.virtualTree = root const {links, nodes} = this[resolveNodes](s, root) await this[resolveLinks](links, nodes) - if (!(s.originalLockfileVersion >= 2)) + if (!(s.originalLockfileVersion >= 2)) { this[assignBundles](nodes) - if (this[flagsSuspect]) + } + if (this[flagsSuspect]) { this[reCalcDepFlags](nodes.values()) + } return root } @@ -104,8 +108,9 @@ module.exports = cls => class VirtualLoader extends cls { // reset all dep flags // can't use inventory here, because virtualTree might not be root for (const node of nodes) { - if (node.isRoot || node === this[rootOptionProvided]) + if (node.isRoot || node === this[rootOptionProvided]) { continue + } node.extraneous = true node.dev = true node.optional = true @@ -123,8 +128,9 @@ module.exports = cls => class VirtualLoader extends cls { // loaded virtually from tree, no chance of being out of sync // ancient lockfiles are critically damaged by this process, // so we need to just hope for the best in those cases. - if (!s.loadedFromDisk || s.ancientLockfile) + if (!s.loadedFromDisk || s.ancientLockfile) { return + } const lock = s.get('') const prod = lock.dependencies || {} @@ -140,16 +146,18 @@ module.exports = cls => class VirtualLoader extends cls { } } } - for (const name of Object.keys(optional)) + for (const name of Object.keys(optional)) { delete prod[name] + } const lockWS = [] const workspaces = this[loadWorkspacesVirtual]({ cwd: this.path, lockfile: s.data, }) - for (const [name, path] of workspaces.entries()) + for (const [name, path] of workspaces.entries()) { lockWS.push(['workspace', name, `file:${path}`]) + } const lockEdges = [ ...depsToEdges('prod', prod), @@ -174,8 +182,9 @@ module.exports = cls => class VirtualLoader extends cls { for (let i = 0; i < lockEdges.length; i++) { if (rootEdges[i][0] !== lockEdges[i][0] || rootEdges[i][1] !== lockEdges[i][1] || - rootEdges[i][2] !== lockEdges[i][2]) + rootEdges[i][2] !== lockEdges[i][2]) { return this[flagsSuspect] = true + } } } @@ -185,13 +194,15 @@ module.exports = cls => class VirtualLoader extends cls { const nodes = new Map([['', root]]) for (const [location, meta] of Object.entries(s.data.packages)) { // skip the root because we already got it - if (!location) + if (!location) { continue + } - if (meta.link) + if (meta.link) { links.set(location, meta) - else + } else { nodes.set(location, this[loadNode](location, meta)) + } } return {links, nodes} } @@ -212,8 +223,9 @@ module.exports = cls => class VirtualLoader extends cls { if (!link.target.parent) { const pj = link.realpath + '/package.json' const pkg = await rpj(pj).catch(() => null) - if (pkg) + if (pkg) { link.target.package = pkg + } } } } @@ -221,12 +233,14 @@ module.exports = cls => class VirtualLoader extends cls { [assignBundles] (nodes) { for (const [location, node] of nodes) { // Skip assignment of parentage for the root package - if (!location || node.isLink && !node.target.location) + if (!location || node.isLink && !node.target.location) { continue + } const { name, parent, package: { inBundle }} = node - if (!parent) + if (!parent) { continue + } // read inBundle from package because 'package' here is // actually a v2 lockfile metadata entry. @@ -236,10 +250,11 @@ module.exports = cls => class VirtualLoader extends cls { const { package: ppkg } = parent const { inBundle: parentBundled } = ppkg if (inBundle && !parentBundled && parent.edgesOut.has(node.name)) { - if (!ppkg.bundleDependencies) + if (!ppkg.bundleDependencies) { ppkg.bundleDependencies = [name] - else + } else { ppkg.bundleDependencies.push(name) + } } } } @@ -248,8 +263,9 @@ module.exports = cls => class VirtualLoader extends cls { const p = this.virtualTree ? this.virtualTree.realpath : this.path const path = resolve(p, location) // shrinkwrap doesn't include package name unless necessary - if (!sw.name) + if (!sw.name) { sw.name = nameFromFolder(path) + } const dev = sw.dev const optional = sw.optional diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-workspaces.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-workspaces.js index 93d078415f5851..0a7965ae30ca1e 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-workspaces.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-workspaces.js @@ -7,15 +7,17 @@ const _loadWorkspacesVirtual = Symbol.for('loadWorkspacesVirtual') module.exports = cls => class MapWorkspaces extends cls { [_appendWorkspaces] (node, workspaces) { - if (node && workspaces.size) + if (node && workspaces.size) { node.workspaces = workspaces + } return node } async [_loadWorkspaces] (node) { - if (node.workspaces) + if (node.workspaces) { return node + } const workspaces = await mapWorkspaces({ cwd: node.path, diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js index 8e447bb8f5ad16..743794f4bda51d 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js @@ -61,8 +61,9 @@ module.exports = cls => class Builder extends cls { async rebuild ({ nodes, handleOptionalFailure = false } = {}) { // nothing to do if we're not building anything! - if (this[_ignoreScripts] && !this[_binLinks]) + if (this[_ignoreScripts] && !this[_binLinks]) { return + } // when building for the first time, as part of reify, we ignore // failures in optional nodes, and just delete them. however, when @@ -76,8 +77,9 @@ module.exports = cls => class Builder extends cls { if (this[_workspaces] && this[_workspaces].length) { const filterSet = this.workspaceDependencySet(tree, this[_workspaces]) nodes = tree.inventory.filter(node => filterSet.has(node)) - } else + } else { nodes = tree.inventory.values() + } } // separates links nodes so that it can run @@ -88,10 +90,11 @@ module.exports = cls => class Builder extends cls { for (const node of nodes) { // we skip the target nodes to that workspace in order to make sure // we only run lifecycle scripts / place bin links once per workspace - if (node.isLink) + if (node.isLink) { linkNodes.add(node) - else + } else { depNodes.add(node) + } } await this[_build](depNodes, {}) @@ -118,17 +121,20 @@ module.exports = cls => class Builder extends cls { process.emit('time', `build:${type}`) await this[_buildQueues](nodes) - if (!this[_ignoreScripts]) + if (!this[_ignoreScripts]) { await this[_runScripts]('preinstall') - if (this[_binLinks] && type !== 'links') + } + if (this[_binLinks] && type !== 'links') { await this[_linkAllBins]() + } // links should also run prepare scripts and only link bins after that if (type === 'links') { await this[_runScripts]('prepare') - if (this[_binLinks]) + if (this[_binLinks]) { await this[_linkAllBins]() + } } if (!this[_ignoreScripts]) { @@ -173,8 +179,9 @@ module.exports = cls => class Builder extends cls { const { preinstall, install, postinstall, prepare } = scripts const tests = { bin, preinstall, install, postinstall, prepare } for (const [key, has] of Object.entries(tests)) { - if (has) + if (has) { this[_queues][key].push(node) + } } } process.emit('timeEnd', 'build:queue') @@ -186,15 +193,17 @@ module.exports = cls => class Builder extends cls { // the node path. Otherwise a package can have a preinstall script // that unlinks something, to allow them to silently overwrite system // binaries, which is unsafe and insecure. - if (!node.globalTop || this[_force]) + if (!node.globalTop || this[_force]) { return + } const { path, package: pkg } = node await binLinks.checkBins({ pkg, path, top: true, global: true }) } async [_addToBuildSet] (node, set, refreshed = false) { - if (set.has(node)) + if (set.has(node)) { return + } if (this[_oldMeta] === null) { const {root: {meta}} = node @@ -233,8 +242,9 @@ module.exports = cls => class Builder extends cls { await isNodeGypPackage(node.path) if (bin || preinstall || install || postinstall || prepare || isGyp) { - if (bin) + if (bin) { await this[_checkBins](node) + } if (isGyp) { scripts.install = defaultGypInstallScript node.package.scripts = scripts @@ -246,8 +256,9 @@ module.exports = cls => class Builder extends cls { async [_runScripts] (event) { const queue = this[_queues][event] - if (!queue.length) + if (!queue.length) { return + } process.emit('time', `build:run:${event}`) const stdio = this.options.foregroundScripts ? 'inherit' : 'pipe' @@ -266,8 +277,9 @@ module.exports = cls => class Builder extends cls { } = node.target // skip any that we know we'll be deleting - if (this[_trashList].has(path)) + if (this[_trashList].has(path)) { return + } const timer = `build:run:${event}:${location}` process.emit('time', timer) @@ -321,23 +333,26 @@ module.exports = cls => class Builder extends cls { async [_linkAllBins] () { const queue = this[_queues].bin - if (!queue.length) + if (!queue.length) { return + } process.emit('time', 'build:link') const promises = [] // sort the queue by node path, so that the module-local collision // detector in bin-links will always resolve the same way. - for (const node of queue.sort(sortNodes)) + for (const node of queue.sort(sortNodes)) { promises.push(this[_createBinLinks](node)) + } await promiseAllRejectLate(promises) process.emit('timeEnd', 'build:link') } async [_createBinLinks] (node) { - if (this[_trashList].has(node.path)) + if (this[_trashList].has(node.path)) { return + } process.emit('time', `build:link:${node.location}`) 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 965435f84fb417..3a9c4797488648 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js @@ -158,8 +158,9 @@ module.exports = cls => class Reifier extends cls { async [_validatePath] () { // don't create missing dirs on dry runs - if (this[_packageLockOnly] || this[_dryRun]) + if (this[_packageLockOnly] || this[_dryRun]) { return + } // we do NOT want to set ownership on this folder, especially // recursively, because it can have other side effects to do that @@ -172,8 +173,9 @@ module.exports = cls => class Reifier extends cls { async [_reifyPackages] () { // we don't submit the audit report or write to disk on dry runs - if (this[_dryRun]) + if (this[_dryRun]) { return + } if (this[_packageLockOnly]) { // we already have the complete tree, so just audit it now, @@ -220,8 +222,9 @@ module.exports = cls => class Reifier extends cls { for (const action of actions) { try { await this[action]() - if (reifyTerminated) + if (reifyTerminated) { throw reifyTerminated + } } catch (er) { await this[rollback](er) /* istanbul ignore next - rollback throws, should never hit this */ @@ -233,8 +236,9 @@ module.exports = cls => class Reifier extends cls { // no rollback for this one, just exit with the error, since the // install completed and can't be safely recovered at this point. await this[_removeTrash]() - if (reifyTerminated) + if (reifyTerminated) { throw reifyTerminated + } // done modifying the file system, no need to keep listening for sigs removeHandler() @@ -261,18 +265,21 @@ module.exports = cls => class Reifier extends cls { filter: (node, kid) => { // if it's not the project root, and we have no explicit requests, // then we're already into a nested dep, so we keep it - if (this.explicitRequests.size === 0 || !node.isProjectRoot) + if (this.explicitRequests.size === 0 || !node.isProjectRoot) { return true + } // if we added it as an edgeOut, then we want it - if (this.idealTree.edgesOut.has(kid)) + if (this.idealTree.edgesOut.has(kid)) { return true + } // if it's an explicit request, then we want it const hasExplicit = [...this.explicitRequests] .some(edge => edge.name === kid) - if (hasExplicit) + if (hasExplicit) { return true + } // ignore the rest of the global install folder return false @@ -280,8 +287,10 @@ module.exports = cls => class Reifier extends cls { } : { ignoreMissing: true } if (!this[_global]) { - return Promise.all([this.loadActual(actualOpt), this.buildIdealTree(bitOpt)]) - .then(() => process.emit('timeEnd', 'reify:loadTrees')) + return Promise.all([ + this.loadActual(actualOpt), + this.buildIdealTree(bitOpt), + ]).then(() => process.emit('timeEnd', 'reify:loadTrees')) } // the global install space tends to have a lot of stuff in it. don't @@ -295,8 +304,9 @@ module.exports = cls => class Reifier extends cls { } [_diffTrees] () { - if (this[_packageLockOnly]) + if (this[_packageLockOnly]) { return + } process.emit('time', 'reify:diffTrees') // XXX if we have an existing diff already, there should be a way @@ -311,20 +321,24 @@ module.exports = cls => class Reifier extends cls { // children where there's an explicit request. for (const { name } of this.explicitRequests) { const ideal = idealTree.children.get(name) - if (ideal) + if (ideal) { filterNodes.push(ideal) + } const actual = actualTree.children.get(name) - if (actual) + if (actual) { filterNodes.push(actual) + } } } else { for (const ws of this[_workspaces]) { const ideal = this.idealTree.children.get(ws) - if (ideal) + if (ideal) { filterNodes.push(ideal) + } const actual = this.actualTree.children.get(ws) - if (actual) + if (actual) { filterNodes.push(actual) + } } } @@ -360,8 +374,9 @@ module.exports = cls => class Reifier extends cls { const retired = retirePath(path) moves[path] = retired this[_trashList].add(retired) - } else + } else { this[_trashList].add(path) + } } } @@ -393,10 +408,11 @@ module.exports = cls => class Reifier extends cls { if (er.code === 'ENOENT') { return didMkdirp ? null : mkdirp(dirname(to)).then(() => this[_renamePath](from, to, true)) - } else if (er.code === 'EEXIST') + } else if (er.code === 'EEXIST') { return rimraf(to).then(() => moveFile(from, to)) - else + } else { throw er + } }) } @@ -417,8 +433,9 @@ module.exports = cls => class Reifier extends cls { // adding to the trash list will skip reifying, and delete them // if they are currently in the tree and otherwise untouched. [_addOmitsToTrashList] () { - if (!this[_omitDev] && !this[_omitOptional] && !this[_omitPeer]) + if (!this[_omitDev] && !this[_omitOptional] && !this[_omitPeer]) { return + } process.emit('time', 'reify:trashOmits') @@ -429,8 +446,9 @@ module.exports = cls => class Reifier extends cls { node.optional && this[_omitOptional] || node.devOptional && this[_omitOptional] && this[_omitDev]) - for (const node of this.idealTree.inventory.filter(filter)) + for (const node of this.idealTree.inventory.filter(filter)) { this[_addNodeToTrashList](node) + } process.emit('timeEnd', 'reify:trashOmits') } @@ -452,10 +470,12 @@ module.exports = cls => class Reifier extends cls { const dirsChecked = new Set() return promiseAllRejectLate(leaves.map(async node => { for (const d of walkUp(node.path)) { - if (d === node.top.path) + if (d === node.top.path) { break - if (dirsChecked.has(d)) + } + if (dirsChecked.has(d)) { continue + } dirsChecked.add(d) const st = await lstat(d).catch(er => null) // this can happen if we have a link to a package with a name @@ -487,8 +507,9 @@ module.exports = cls => class Reifier extends cls { .map(path => rimraf(path).catch(er => failures.push([path, er]))) return promiseAllRejectLate(unlinks) .then(() => { - if (failures.length) + if (failures.length) { this.log.warn('cleanup', 'Failed to remove some directories', failures) + } }) .then(() => process.emit('timeEnd', 'reify:rollback:createSparse')) .then(() => this[_rollbackRetireShallowNodes](er)) @@ -504,8 +525,9 @@ module.exports = cls => class Reifier extends cls { d.ideal.hasShrinkwrap && !seen.has(d.ideal) && !this[_trashList].has(d.ideal.path)) - if (!shrinkwraps.length) + if (!shrinkwraps.length) { return + } process.emit('time', 'reify:loadShrinkwraps') @@ -535,8 +557,9 @@ module.exports = cls => class Reifier extends cls { // to the trash list // Always return the node. [_reifyNode] (node) { - if (this[_trashList].has(node.path)) + if (this[_trashList].has(node.path)) { return node + } const timer = `reifyNode:${node.location}` process.emit('time', timer) @@ -569,8 +592,9 @@ module.exports = cls => class Reifier extends cls { // do not allow node_modules to be a symlink async [_validateNodeModules] (nm) { - if (this[_force] || this[_nmValidated].has(nm)) + if (this[_force] || this[_nmValidated].has(nm)) { return + } const st = await lstat(nm).catch(() => null) if (!st || st.isDirectory()) { this[_nmValidated].add(nm) @@ -642,8 +666,9 @@ module.exports = cls => class Reifier extends cls { [_warnDeprecated] (node) { const {_id, deprecated} = node.package - if (deprecated) + if (deprecated) { this.log.warn('deprecated', `${_id}: ${deprecated}`) + } } // if the node is optional, then the failure of the promise is nonfatal @@ -677,8 +702,9 @@ module.exports = cls => class Reifier extends cls { [_loadBundlesAndUpdateTrees] ( depth = 0, bundlesByDepth = this[_getBundlesByDepth]() ) { - if (depth === 0) + if (depth === 0) { process.emit('time', 'reify:loadBundles') + } const maxBundleDepth = bundlesByDepth.get('maxBundleDepth') if (depth > maxBundleDepth) { @@ -698,8 +724,9 @@ module.exports = cls => class Reifier extends cls { node.target !== node.root && !this[_trashList].has(node.path)) - if (!set.length) + if (!set.length) { return this[_loadBundlesAndUpdateTrees](depth + 1, bundlesByDepth) + } // extract all the nodes with bundles return promiseAllRejectLate(set.map(node => { @@ -725,12 +752,14 @@ module.exports = cls => class Reifier extends cls { // it's actually in the bundle if it gets transplanted notTransplanted.delete(node.name) return true - } else + } else { return false + } }, }) - for (const name of notTransplanted) + for (const name of notTransplanted) { this[_bundleMissing].add(node.children.get(name)) + } }))) // move onto the next level of bundled items .then(() => this[_loadBundlesAndUpdateTrees](depth + 1, bundlesByDepth)) @@ -743,18 +772,21 @@ module.exports = cls => class Reifier extends cls { tree: this.diff, visit: diff => { const node = diff.ideal - if (!node) + if (!node) { return - if (node.isProjectRoot) + } + if (node.isProjectRoot) { return + } const { bundleDependencies } = node.package if (bundleDependencies && bundleDependencies.length) { maxBundleDepth = Math.max(maxBundleDepth, node.depth) - if (!bundlesByDepth.has(node.depth)) + if (!bundlesByDepth.has(node.depth)) { bundlesByDepth.set(node.depth, [node]) - else + } else { bundlesByDepth.get(node.depth).push(node) + } } }, getChildren: diff => diff.children, @@ -791,13 +823,15 @@ module.exports = cls => class Reifier extends cls { // create the list of nodes shadowed by children of bundlers for (const bundles of bundlesByDepth.values()) { // skip the 'maxBundleDepth' item - if (!Array.isArray(bundles)) + if (!Array.isArray(bundles)) { continue + } for (const node of bundles) { for (const name of node.children.keys()) { const shadow = node.parent.resolve(name) - if (!shadow) + if (!shadow) { continue + } bundleShadowed.add(shadow) shadow.extraneous = true } @@ -851,8 +885,9 @@ module.exports = cls => class Reifier extends cls { } [_submitQuickAudit] () { - if (this.options.audit === false) + if (this.options.audit === false) { return this.auditReport = null + } // we submit the quick audit at this point in the process, as soon as // we have all the deps resolved, so that it can overlap with the other @@ -865,8 +900,9 @@ module.exports = cls => class Reifier extends cls { const tree = this.idealTree // if we're operating on a workspace, only audit the workspace deps - if (this[_workspaces] && this[_workspaces].length) + if (this[_workspaces] && this[_workspaces].length) { options.filterSet = this.workspaceDependencySet(tree, this[_workspaces]) + } this.auditReport = AuditReport.load(tree, options) .then(res => { @@ -891,8 +927,9 @@ module.exports = cls => class Reifier extends cls { tree: this.diff, visit: diff => { // no unpacking if we don't want to change this thing - if (diff.action !== 'CHANGE' && diff.action !== 'ADD') + if (diff.action !== 'CHANGE' && diff.action !== 'ADD') { return + } const node = diff.ideal const bd = this[_bundleUnpacked].has(node) @@ -902,13 +939,18 @@ module.exports = cls => class Reifier extends cls { // check whether we still need to unpack this one. // test the inDepBundle last, since that's potentially a tree walk. const doUnpack = node && // can't unpack if removed! - !node.isRoot && // root node already exists - !bd && // already unpacked to read bundle - !sw && // already unpacked to read sw - (bundleMissing || !node.inDepBundle) // already unpacked by another dep's bundle - - if (doUnpack) + // root node already exists + !node.isRoot && + // already unpacked to read bundle + !bd && + // already unpacked to read sw + !sw && + // already unpacked by another dep's bundle + (bundleMissing || !node.inDepBundle) + + if (doUnpack) { unpacks.push(this[_reifyNode](node)) + } }, getChildren: diff => diff.children, }) @@ -933,8 +975,9 @@ module.exports = cls => class Reifier extends cls { this[_retiredUnchanged] = {} return promiseAllRejectLate(this.diff.children.map(diff => { // skip if nothing was retired - if (diff.action !== 'CHANGE' && diff.action !== 'REMOVE') + if (diff.action !== 'CHANGE' && diff.action !== 'REMOVE') { return + } const { path: realFolder } = diff.actual const retireFolder = moves[realFolder] @@ -955,12 +998,14 @@ module.exports = cls => class Reifier extends cls { this[_retiredUnchanged][retireFolder] = [] return promiseAllRejectLate(diff.unchanged.map(node => { // no need to roll back links, since we'll just delete them anyway - if (node.isLink) + if (node.isLink) { return mkdirp(dirname(node.path)).then(() => this[_reifyNode](node)) + } // will have been moved/unpacked along with bundler - if (node.inDepBundle && !this[_bundleMissing].has(node)) + if (node.inDepBundle && !this[_bundleMissing].has(node)) { return + } this[_retiredUnchanged][retireFolder].push(node) @@ -1014,8 +1059,9 @@ module.exports = cls => class Reifier extends cls { dfwalk({ tree: this.diff, leave: diff => { - if (!diff.ideal.isProjectRoot) + if (!diff.ideal.isProjectRoot) { nodes.push(diff.ideal) + } }, // process adds before changes, ignore removals getChildren: diff => diff && diff.children, @@ -1030,8 +1076,9 @@ module.exports = cls => class Reifier extends cls { // skip links that only live within node_modules as they are most // likely managed by packages we installed, we only want to rebuild // unchanged links we directly manage - if (node.isLink && node.target.fsTop === tree) + if (node.isLink && node.target.fsTop === tree) { nodes.push(node) + } } return this.rebuild({ nodes, handleOptionalFailure: true }) @@ -1048,12 +1095,14 @@ module.exports = cls => class Reifier extends cls { const failures = [] const rm = path => rimraf(path).catch(er => failures.push([path, er])) - for (const path of this[_trashList]) + for (const path of this[_trashList]) { promises.push(rm(path)) + } return promiseAllRejectLate(promises).then(() => { - if (failures.length) + if (failures.length) { this.log.warn('cleanup', 'Failed to remove some directories', failures) + } }) .then(() => process.emit('timeEnd', 'reify:trash')) } @@ -1067,8 +1116,9 @@ module.exports = cls => class Reifier extends cls { // save it first, then prune out the optional trash, and then return it. // support save=false option - if (options.save === false || this[_global] || this[_dryRun]) + if (options.save === false || this[_global] || this[_dryRun]) { return false + } process.emit('time', 'reify:save') @@ -1089,6 +1139,14 @@ module.exports = cls => class Reifier extends cls { const spec = subSpec ? subSpec.rawSpec : rawSpec const child = edge.to + // if we tried to install an optional dep, but it was a version + // that we couldn't resolve, this MAY be missing. if we haven't + // blown up by now, it's because it was not a problem, though, so + // just move on. + if (!child) { + continue + } + let newSpec if (req.registry) { const version = child.version @@ -1105,8 +1163,9 @@ module.exports = cls => class Reifier extends cls { !isRange || spec === '*' || subset(prefixRange, spec, { loose: true }) - ) + ) { range = prefixRange + } const pname = child.packageName const alias = name !== pname @@ -1115,10 +1174,11 @@ module.exports = cls => class Reifier extends cls { // save the git+https url if it has auth, otherwise shortcut const h = req.hosted const opt = { noCommittish: false } - if (h.https && h.auth) + if (h.https && h.auth) { newSpec = `git+${h.https(opt)}` - else + } else { newSpec = h.shortcut(opt) + } } else if (req.type === 'directory' || req.type === 'file') { // save the relative path in package.json // Normally saveSpec is updated with the proper relative @@ -1128,34 +1188,41 @@ module.exports = cls => class Reifier extends cls { const p = req.fetchSpec.replace(/^file:/, '') const rel = relpath(addTree.realpath, p) newSpec = `file:${rel}` - } else + } else { newSpec = req.saveSpec + } if (options.saveType) { const depType = saveTypeMap.get(options.saveType) pkg[depType][name] = newSpec // rpj will have moved it here if it was in both // if it is empty it will be deleted later - if (options.saveType === 'prod' && pkg.optionalDependencies) + if (options.saveType === 'prod' && pkg.optionalDependencies) { delete pkg.optionalDependencies[name] + } } else { - if (hasSubKey(pkg, 'dependencies', name)) + if (hasSubKey(pkg, 'dependencies', name)) { pkg.dependencies[name] = newSpec + } if (hasSubKey(pkg, 'devDependencies', name)) { pkg.devDependencies[name] = newSpec // don't update peer or optional if we don't have to - if (hasSubKey(pkg, 'peerDependencies', name) && !intersects(newSpec, pkg.peerDependencies[name])) + if (hasSubKey(pkg, 'peerDependencies', name) && !intersects(newSpec, pkg.peerDependencies[name])) { pkg.peerDependencies[name] = newSpec + } - if (hasSubKey(pkg, 'optionalDependencies', name) && !intersects(newSpec, pkg.optionalDependencies[name])) + if (hasSubKey(pkg, 'optionalDependencies', name) && !intersects(newSpec, pkg.optionalDependencies[name])) { pkg.optionalDependencies[name] = newSpec + } } else { - if (hasSubKey(pkg, 'peerDependencies', name)) + if (hasSubKey(pkg, 'peerDependencies', name)) { pkg.peerDependencies[name] = newSpec + } - if (hasSubKey(pkg, 'optionalDependencies', name)) + if (hasSubKey(pkg, 'optionalDependencies', name)) { pkg.optionalDependencies[name] = newSpec + } } } @@ -1196,8 +1263,9 @@ module.exports = cls => class Reifier extends cls { } // grab any from explicitRequests that had deps removed - for (const { from: tree } of this.explicitRequests) + for (const { from: tree } of this.explicitRequests) { updatedTrees.add(tree) + } for (const tree of updatedTrees) { // refresh the edges so they have the correct specs @@ -1211,8 +1279,9 @@ module.exports = cls => class Reifier extends cls { } async [_saveLockFile] (saveOpt) { - if (!this[_usePackageLock]) + if (!this[_usePackageLock]) { return + } const { meta } = this.idealTree @@ -1224,8 +1293,9 @@ module.exports = cls => class Reifier extends cls { for (const path of this[_trashList]) { const loc = relpath(this.idealTree.realpath, path) const node = this.idealTree.inventory.get(loc) - if (node && node.root === this.idealTree) + if (node && node.root === this.idealTree) { node.parent = null + } } // if we filtered to only certain nodes, then anything ELSE needs @@ -1244,54 +1314,60 @@ module.exports = cls => class Reifier extends cls { // if it's an ideal node from the filter set, then skip it // because we already made whatever changes were necessary - if (filterSet.has(ideal)) + if (filterSet.has(ideal)) { continue + } // otherwise, if it's not in the actualTree, then it's not a thing // that we actually added. And if it IS in the actualTree, then // it's something that we left untouched, so we need to record // that. const actual = this.actualTree.inventory.get(loc) - if (!actual) + if (!actual) { ideal.root = null - else { + } else { if ([...actual.linksIn].some(link => filterSet.has(link))) { seen.add(actual.location) continue } const { realpath, isLink } = actual - if (isLink && ideal.isLink && ideal.realpath === realpath) + if (isLink && ideal.isLink && ideal.realpath === realpath) { continue - else + } else { reroot.add(actual) + } } } // now find any actual nodes that may not be present in the ideal // tree, but were left behind by virtue of not being in the filter for (const [loc, actual] of this.actualTree.inventory.entries()) { - if (seen.has(loc)) + if (seen.has(loc)) { continue + } seen.add(loc) // we know that this is something that ISN'T in the idealTree, // or else we will have addressed it in the previous loop. // If it's in the filterSet, that means we intentionally removed // it, so nothing to do here. - if (filterSet.has(actual)) + if (filterSet.has(actual)) { continue + } reroot.add(actual) } // go through the rerooted actual nodes, and move them over. - for (const actual of reroot) + for (const actual of reroot) { actual.root = this.idealTree + } // prune out any tops that lack a linkIn, they are no longer relevant. for (const top of this.idealTree.tops) { - if (top.linksIn.size === 0) + if (top.linksIn.size === 0) { top.root = null + } } // need to calculate dep flags, since nodes may have been marked @@ -1307,7 +1383,8 @@ module.exports = cls => class Reifier extends cls { this.actualTree = this.idealTree this.idealTree = null - if (!this[_global]) + if (!this[_global]) { await this.actualTree.meta.save() + } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js b/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js index 8f7d6546d64f45..2e6c207b33eb3e 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/audit-report.js @@ -63,8 +63,9 @@ class AuditReport extends Map { prod = false } } - if (prod) + if (prod) { dependencies.prod++ + } } // if it doesn't have any topVulns, then it's fixable with audit fix @@ -104,8 +105,9 @@ class AuditReport extends Map { async run () { this.report = await this[_getReport]() this.log.silly('audit report', this.report) - if (this.report) + if (this.report) { await this[_init]() + } return this } @@ -119,8 +121,9 @@ class AuditReport extends Map { const promises = [] for (const [name, advisories] of Object.entries(this.report)) { - for (const advisory of advisories) + for (const advisory of advisories) { promises.push(this.calculator.calculate(name, advisory)) + } } // now the advisories are calculated with a set of versions @@ -136,43 +139,51 @@ class AuditReport extends Map { // adding multiple advisories with the same range is fine, but no // need to search for nodes we already would have added. const k = `${name}@${range}` - if (seen.has(k)) + if (seen.has(k)) { continue + } seen.add(k) const vuln = this.get(name) || new Vuln({ name, advisory }) - if (this.has(name)) + if (this.has(name)) { vuln.addAdvisory(advisory) + } super.set(name, vuln) const p = [] for (const node of this.tree.inventory.query('packageName', name)) { - if (!shouldAudit(node, this[_omit], this.filterSet)) + if (!shouldAudit(node, this[_omit], this.filterSet)) { continue + } // if not vulnerable by this advisory, keep searching - if (!advisory.testVersion(node.version)) + if (!advisory.testVersion(node.version)) { continue + } // we will have loaded the source already if this is a metavuln - if (advisory.type === 'metavuln') + if (advisory.type === 'metavuln') { vuln.addVia(this.get(advisory.dependency)) + } // already marked this one, no need to do it again - if (vuln.nodes.has(node)) + if (vuln.nodes.has(node)) { continue + } // haven't marked this one yet. get its dependents. vuln.nodes.add(node) for (const { from: dep, spec } of node.edgesIn) { - if (dep.isTop && !vuln.topNodes.has(dep)) + if (dep.isTop && !vuln.topNodes.has(dep)) { this[_checkTopNode](dep, vuln, spec) - else { + } else { // calculate a metavuln, if necessary - p.push(this.calculator.calculate(dep.packageName, advisory).then(meta => { - if (meta.testVersion(dep.version, spec)) + const calc = this.calculator.calculate(dep.packageName, advisory) + p.push(calc.then(meta => { + if (meta.testVersion(dep.version, spec)) { advisories.add(meta) + } })) } } @@ -193,9 +204,11 @@ class AuditReport extends Map { // the nodes it references, then remove it from the advisory list. // happens when using omit with old audit endpoint. for (const advisory of vuln.advisories) { - const relevant = [...vuln.nodes].some(n => advisory.testVersion(n.version)) - if (!relevant) + const relevant = [...vuln.nodes] + .some(n => advisory.testVersion(n.version)) + if (!relevant) { vuln.deleteAdvisory(advisory) + } } } process.emit('timeEnd', 'auditReport:init') @@ -221,18 +234,21 @@ class AuditReport extends Map { // this will always be set to at least {name, versions:{}} const paku = vuln.packument - if (!vuln.testSpec(spec)) + if (!vuln.testSpec(spec)) { return true + } // similarly, even if we HAVE a packument, but we're looking for it // somewhere other than the registry, and we got something vulnerable, // then we're stuck with it. const specObj = npa(spec) - if (!specObj.registry) + if (!specObj.registry) { return false + } - if (specObj.subSpec) + if (specObj.subSpec) { spec = specObj.subSpec.rawSpec + } // We don't provide fixes for top nodes other than root, but we // still check to see if the node is fixable with a different version, @@ -287,8 +303,9 @@ class AuditReport extends Map { async [_getReport] () { // if we're not auditing, just return false - if (this.options.audit === false || this.tree.inventory.size === 1) + if (this.options.audit === false || this.tree.inventory.size === 1) { return null + } process.emit('time', 'auditReport:getReport') try { @@ -299,8 +316,9 @@ class AuditReport extends Map { // no sense asking if we don't have anything to audit, // we know it'll be empty - if (!Object.keys(body).length) + if (!Object.keys(body).length) { return null + } const res = await fetch('/-/npm/v1/security/advisories/bulk', { ...this.options, @@ -353,13 +371,15 @@ const prepareBulkData = (tree, omit, filterSet) => { for (const name of tree.inventory.query('packageName')) { const set = new Set() for (const node of tree.inventory.query('packageName', name)) { - if (!shouldAudit(node, omit, filterSet)) + if (!shouldAudit(node, omit, filterSet)) { continue + } set.add(node.version) } - if (set.size) + if (set.size) { payload[name] = [...set] + } } return payload } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js b/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js index 968fc83c5136cf..95ecc8a617b083 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js @@ -11,7 +11,8 @@ const calcDepFlags = (tree, resetRoot = true) => { tree, visit: node => calcDepFlagsStep(node), filter: node => node, - getChildren: (node, tree) => [...tree.edgesOut.values()].map(edge => edge.to), + getChildren: (node, tree) => + [...tree.edgesOut.values()].map(edge => edge.to), }) return ret } @@ -39,8 +40,9 @@ const calcDepFlagsStep = (node) => { node.edgesOut.forEach(({peer, optional, dev, to}) => { // if the dep is missing, then its flags are already maximally unset - if (!to) + if (!to) { return + } // everything with any kind of edge into it is not extraneous to.extraneous = false @@ -59,28 +61,34 @@ const calcDepFlagsStep = (node) => { !node.optional && !optional const unsetPeer = !node.peer && !peer - if (unsetPeer) + if (unsetPeer) { unsetFlag(to, 'peer') + } - if (unsetDevOpt) + if (unsetDevOpt) { unsetFlag(to, 'devOptional') + } - if (unsetDev) + if (unsetDev) { unsetFlag(to, 'dev') + } - if (unsetOpt) + if (unsetOpt) { unsetFlag(to, 'optional') + } }) return node } const resetParents = (node, flag) => { - if (node[flag]) + if (node[flag]) { return + } - for (let p = node; p && (p === node || p[flag]); p = p.resolveParent) + for (let p = node; p && (p === node || p[flag]); p = p.resolveParent) { p[flag] = false + } } // typically a short walk, since it only traverses deps that @@ -92,8 +100,9 @@ const unsetFlag = (node, flag) => { tree: node, visit: node => { node.extraneous = node[flag] = false - if (node.isLink) + if (node.isLink) { node.target.extraneous = node.target[flag] = false + } }, getChildren: node => [...node.target.edgesOut.values()] .filter(edge => edge.to && edge.to[flag] && diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/can-place-dep.js b/deps/npm/node_modules/@npmcli/arborist/lib/can-place-dep.js index 9601ad7af31631..7e2e1a0e2d29bb 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/can-place-dep.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/can-place-dep.js @@ -64,14 +64,17 @@ class CanPlaceDep { } = options debug(() => { - if (!dep) + if (!dep) { throw new Error('no dep provided to CanPlaceDep') + } - if (!target) + if (!target) { throw new Error('no target provided to CanPlaceDep') + } - if (!edge) + if (!edge) { throw new Error('no edge provided to CanPlaceDep') + } this._treeSnapshot = JSON.stringify([...target.root.inventory.entries()] .map(([loc, {packageName, version, resolved}]) => { @@ -108,8 +111,9 @@ class CanPlaceDep { this.edgeOverride = !dep.satisfies(edge) this.canPlace = this.checkCanPlace() - if (!this.canPlaceSelf) + if (!this.canPlaceSelf) { this.canPlaceSelf = this.canPlace + } debug(() => { const treeSnapshot = JSON.stringify([...target.root.inventory.entries()] @@ -131,15 +135,18 @@ class CanPlaceDep { // if the dep failed to load, we're going to fail the build or // prune it out anyway, so just move forward placing/replacing it. - if (dep.errors.length) + if (dep.errors.length) { return current ? REPLACE : OK + } // cannot place peers inside their dependents, except for tops - if (targetEdge && targetEdge.peer && !target.isTop) + if (targetEdge && targetEdge.peer && !target.isTop) { return CONFLICT + } - if (targetEdge && !dep.satisfies(targetEdge) && targetEdge !== this.edge) + if (targetEdge && !dep.satisfies(targetEdge) && targetEdge !== this.edge) { return CONFLICT + } return current ? this.checkCanPlaceCurrent() : this.checkCanPlaceNoCurrent() } @@ -150,8 +157,9 @@ class CanPlaceDep { const { preferDedupe, explicitRequest, current, target, edge, dep } = this if (dep.matches(current)) { - if (current.satisfies(edge) || this.edgeOverride) + if (current.satisfies(edge) || this.edgeOverride) { return explicitRequest ? REPLACE : KEEP + } } const { version: curVer } = current @@ -163,19 +171,22 @@ class CanPlaceDep { * but it is theoretically possible if peer deps are pinned. In * that case we treat it like any other conflict, and keep trying */ const cpp = this.canPlacePeers(REPLACE) - if (cpp !== CONFLICT) + if (cpp !== CONFLICT) { return cpp + } } // ok, can't replace the current with new one, but maybe current is ok? - if (current.satisfies(edge) && (!explicitRequest || preferDedupe)) + if (current.satisfies(edge) && (!explicitRequest || preferDedupe)) { return KEEP + } // if we prefer deduping, then try replacing newer with older if (preferDedupe && !tryReplace && dep.canReplace(current)) { const cpp = this.canPlacePeers(REPLACE) - if (cpp !== CONFLICT) + if (cpp !== CONFLICT) { return cpp + } } // Check for interesting cases! @@ -185,29 +196,33 @@ class CanPlaceDep { const myDeepest = this.deepestNestingTarget // ok, i COULD be placed deeper, so leave the current one alone. - if (target !== myDeepest) + if (target !== myDeepest) { return CONFLICT + } // if we are not checking a peerDep, then we MUST place it here, in the // target that has a non-peer dep on it. - if (!edge.peer && target === edge.from) + if (!edge.peer && target === edge.from) { return this.canPlacePeers(REPLACE) + } // if we aren't placing a peer in a set, then we're done here. // This is ignored because it SHOULD be redundant, as far as I can tell, // with the deepest target and target===edge.from tests. But until we // can prove that isn't possible, this condition is here for safety. /* istanbul ignore if - allegedly impossible */ - if (!this.parent && !edge.peer) + if (!this.parent && !edge.peer) { return CONFLICT + } // check the deps in the peer group for each edge into that peer group // if ALL of them can be pushed deeper, or if it's ok to replace its // members with the contents of the new peer group, then we're good. let canReplace = true for (const [entryEdge, currentPeers] of peerEntrySets(current)) { - if (entryEdge === this.edge || entryEdge === this.peerEntryEdge) + if (entryEdge === this.edge || entryEdge === this.peerEntryEdge) { continue + } // First, see if it's ok to just replace the peerSet entirely. // we do this by walking out from the entryEdge, because in a case like @@ -231,8 +246,9 @@ class CanPlaceDep { const entryNode = entryEdge.to const entryRep = dep.parent.children.get(entryNode.name) if (entryRep) { - if (entryRep.canReplace(entryNode, dep.parent.children.keys())) + if (entryRep.canReplace(entryNode, dep.parent.children.keys())) { continue + } } let canClobber = !entryRep @@ -240,12 +256,14 @@ class CanPlaceDep { const peerReplacementWalk = new Set([entryNode]) OUTER: for (const currentPeer of peerReplacementWalk) { for (const edge of currentPeer.edgesOut.values()) { - if (!edge.peer || !edge.valid) + if (!edge.peer || !edge.valid) { continue + } const rep = dep.parent.children.get(edge.name) if (!rep) { - if (edge.to) + if (edge.to) { peerReplacementWalk.add(edge.to) + } continue } if (!rep.satisfies(edge)) { @@ -255,14 +273,16 @@ class CanPlaceDep { } } } - if (canClobber) + if (canClobber) { continue + } // ok, we can't replace, but maybe we can nest the current set deeper? let canNestCurrent = true for (const currentPeer of currentPeers) { - if (!canNestCurrent) + if (!canNestCurrent) { break + } // still possible to nest this peerSet const curDeep = deepestNestingTarget(entryEdge.from, currentPeer.name) @@ -270,14 +290,16 @@ class CanPlaceDep { canNestCurrent = false canReplace = false } - if (canNestCurrent) + if (canNestCurrent) { continue + } } } // if we can nest or replace all the current peer groups, we can replace. - if (canReplace) + if (canReplace) { return this.canPlacePeers(REPLACE) + } return CONFLICT } @@ -293,8 +315,9 @@ class CanPlaceDep { if (current) { for (const edge of current.edgesIn.values()) { if (edge.from.isDescendantOf(target) && edge.valid) { - if (!dep.satisfies(edge)) + if (!dep.satisfies(edge)) { return CONFLICT + } } } } @@ -316,8 +339,9 @@ class CanPlaceDep { get allChildren () { const set = new Set(this.children) for (const child of set) { - for (const grandchild of child.children) + for (const grandchild of child.children) { set.add(grandchild) + } } return [...set] } @@ -329,15 +353,17 @@ class CanPlaceDep { // check if peers can go here. returns state or CONFLICT canPlacePeers (state) { this.canPlaceSelf = state - if (this._canPlacePeers) + if (this._canPlacePeers) { return this._canPlacePeers + } // TODO: represent peerPath in ERESOLVE error somehow? const peerPath = [...this.peerPath, this.dep] let sawConflict = false for (const peerEdge of this.dep.edgesOut.values()) { - if (!peerEdge.peer || !peerEdge.to || peerPath.includes(peerEdge.to)) + if (!peerEdge.peer || !peerEdge.to || peerPath.includes(peerEdge.to)) { continue + } const peer = peerEdge.to // it may be the case that the *initial* dep can be nested, but a peer // of that dep needs to be placed shallower, because the target has @@ -354,13 +380,15 @@ class CanPlaceDep { }) /* istanbul ignore next */ debug(() => { - if (this.children.some(c => c.dep === cpp.dep)) + if (this.children.some(c => c.dep === cpp.dep)) { throw new Error('checking same dep repeatedly') + } }) this.children.push(cpp) - if (cpp.canPlace === CONFLICT) + if (cpp.canPlace === CONFLICT) { sawConflict = true + } } this._canPlacePeers = sawConflict ? CONFLICT : state diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/case-insensitive-map.js b/deps/npm/node_modules/@npmcli/arborist/lib/case-insensitive-map.js index 8254c3f7a55e99..016ce6017b01e4 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/case-insensitive-map.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/case-insensitive-map.js @@ -10,8 +10,9 @@ module.exports = class Map extends OGMap { constructor (items = []) { super() this[_keys] = new OGMap() - for (const [key, val] of items) + for (const [key, val] of items) { this.set(key, val) + } } [_normKey] (key) { @@ -26,8 +27,9 @@ module.exports = class Map extends OGMap { set (key, val) { const normKey = this[_normKey](key) - if (this[_keys].has(normKey)) + if (this[_keys].has(normKey)) { super.delete(this[_keys].get(normKey)) + } this[_keys].set(normKey, key) return super.set(key, val) } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/consistent-resolve.js b/deps/npm/node_modules/@npmcli/arborist/lib/consistent-resolve.js index 32276482419017..e34e40a46d0024 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/consistent-resolve.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/consistent-resolve.js @@ -5,8 +5,9 @@ const npa = require('npm-package-arg') const relpath = require('./relpath.js') const consistentResolve = (resolved, fromPath, toPath, relPaths = false) => { - if (!resolved) + if (!resolved) { return null + } try { const hostedOpt = { noCommittish: false } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/deepest-nesting-target.js b/deps/npm/node_modules/@npmcli/arborist/lib/deepest-nesting-target.js index 9c433a7652da2f..2c6647f5db7bad 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/deepest-nesting-target.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/deepest-nesting-target.js @@ -5,11 +5,13 @@ const deepestNestingTarget = (start, name) => { for (const target of start.ancestry()) { // note: this will skip past the first target if edge is peer - if (target.isProjectRoot || !target.resolveParent || target.globalTop) + if (target.isProjectRoot || !target.resolveParent || target.globalTop) { return target + } const targetEdge = target.edgesOut.get(name) - if (!targetEdge || !targetEdge.peer) + if (!targetEdge || !targetEdge.peer) { return target + } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js b/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js index 01e5e21e94ce5d..d80437f20c8e4d 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js @@ -44,8 +44,9 @@ const depValid = (child, requested, requestor) => { switch (requested.type) { case 'range': - if (requested.fetchSpec === '*') + if (requested.fetchSpec === '*') { return true + } // fallthrough case 'version': // if it's a version or a range other than '*', semver it @@ -108,17 +109,20 @@ const depValid = (child, requested, requestor) => { } const tarballValid = (child, requested, requestor) => { - if (child.isLink) + if (child.isLink) { return false + } - if (child.resolved) + if (child.resolved) { return child.resolved.replace(/\\/g, '/') === `file:${requested.fetchSpec.replace(/\\/g, '/')}` + } // if we have a legacy mutated package.json file. we can't be 100% // sure that it resolved to the same file, but if it was the same // request, that's a pretty good indicator of sameness. - if (child.package._requested) + if (child.package._requested) { return child.package._requested.saveSpec === requested.saveSpec + } // ok, we're probably dealing with some legacy cruft here, not much // we can do at this point unfortunately. diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/diff.js b/deps/npm/node_modules/@npmcli/arborist/lib/diff.js index 2008ef7a35bddf..0d17bde9583ac7 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/diff.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/diff.js @@ -31,7 +31,12 @@ class Diff { this.removed = [] } - static calculate ({actual, ideal, filterNodes = [], shrinkwrapInflated = new Set()}) { + static calculate ({ + actual, + ideal, + filterNodes = [], + shrinkwrapInflated = new Set(), + }) { // if there's a filterNode, then: // - get the path from the root to the filterNode. The root or // root.target should have an edge either to the filterNode or @@ -43,8 +48,9 @@ class Diff { const extraneous = new Set() for (const filterNode of filterNodes) { const { root } = filterNode - if (root !== ideal && root !== actual) + if (root !== ideal && root !== actual) { throw new Error('invalid filterNode: outside idealTree/actualTree') + } const rootTarget = root.target const edge = [...rootTarget.edgesOut.values()].filter(e => { return e.to && (e.to === filterNode || e.to.target === filterNode) @@ -73,8 +79,9 @@ class Diff { : [...actualNode.edgesOut.values()].filter(e => e.to).map(e => e.to) if (actualNode) { for (const child of actualNode.children.values()) { - if (child.extraneous) + if (child.extraneous) { extraneous.add(child) + } } } @@ -82,8 +89,9 @@ class Diff { }, }) } - for (const extra of extraneous) + for (const extra of extraneous) { filterSet.add(extra) + } return depth({ tree: new Diff({actual, ideal, filterSet, shrinkwrapInflated}), @@ -94,23 +102,27 @@ class Diff { } const getAction = ({actual, ideal}) => { - if (!ideal) + if (!ideal) { return 'REMOVE' + } // bundled meta-deps are copied over to the ideal tree when we visit it, // so they'll appear to be missing here. There's no need to handle them // in the diff, though, because they'll be replaced at reify time anyway // Otherwise, add the missing node. - if (!actual) + if (!actual) { return ideal.inDepBundle ? null : 'ADD' + } // always ignore the root node - if (ideal.isRoot && actual.isRoot) + if (ideal.isRoot && actual.isRoot) { return null + } // if the versions don't match, it's a change no matter what - if (ideal.version !== actual.version) + if (ideal.version !== actual.version) { return 'CHANGE' + } const binsExist = ideal.binPaths.every((path) => existsSync(path)) @@ -125,33 +137,38 @@ const getAction = ({actual, ideal}) => { const noIntegrity = !ideal.integrity && !actual.integrity const noResolved = !ideal.resolved && !actual.resolved const resolvedMatch = ideal.resolved && ideal.resolved === actual.resolved - if (noIntegrity && binsExist && (resolvedMatch || noResolved)) + if (noIntegrity && binsExist && (resolvedMatch || noResolved)) { return null + } // otherwise, verify that it's the same bits // note that if ideal has integrity, and resolved doesn't, we treat // that as a 'change', so that it gets re-fetched and locked down. const integrityMismatch = !ideal.integrity || !actual.integrity || !ssri.parse(ideal.integrity).match(actual.integrity) - if (integrityMismatch || !binsExist) + if (integrityMismatch || !binsExist) { return 'CHANGE' + } return null } const allChildren = node => { - if (!node) + if (!node) { return new Map() + } // if the node is root, and also a link, then what we really // want is to traverse the target's children - if (node.isRoot && node.isLink) + if (node.isRoot && node.isLink) { return allChildren(node.target) + } const kids = new Map() for (const n of [node, ...node.fsChildren]) { - for (const kid of n.children.values()) + for (const kid of n.children.values()) { kids.set(kid.path, kid) + } } return kids } @@ -160,7 +177,14 @@ const allChildren = node => { // to create the diff tree const getChildren = diff => { const children = [] - const {actual, ideal, unchanged, removed, filterSet, shrinkwrapInflated} = diff + const { + actual, + ideal, + unchanged, + removed, + filterSet, + shrinkwrapInflated, + } = diff // Note: we DON'T diff fsChildren themselves, because they are either // included in the package contents, or part of some other project, and @@ -182,26 +206,45 @@ const getChildren = diff => { for (const path of paths) { const actual = actualKids.get(path) const ideal = idealKids.get(path) - diffNode(actual, ideal, children, unchanged, removed, filterSet, shrinkwrapInflated) + diffNode({ + actual, + ideal, + children, + unchanged, + removed, + filterSet, + shrinkwrapInflated, + }) } - if (diff.leaves && !children.length) + if (diff.leaves && !children.length) { diff.leaves.push(diff) + } return children } -const diffNode = (actual, ideal, children, unchanged, removed, filterSet, shrinkwrapInflated) => { - if (filterSet.size && !(filterSet.has(ideal) || filterSet.has(actual))) +const diffNode = ({ + actual, + ideal, + children, + unchanged, + removed, + filterSet, + shrinkwrapInflated, +}) => { + if (filterSet.size && !(filterSet.has(ideal) || filterSet.has(actual))) { return + } const action = getAction({actual, ideal}) // if it's a match, then get its children // otherwise, this is the child diff node if (action || (!shrinkwrapInflated.has(ideal) && ideal.hasShrinkwrap)) { - if (action === 'REMOVE') + if (action === 'REMOVE') { removed.push(actual) + } children.push(new Diff({actual, ideal, filterSet, shrinkwrapInflated})) } else { unchanged.push(ideal) @@ -227,13 +270,22 @@ const diffNode = (actual, ideal, children, unchanged, removed, filterSet, shrink if (actual && bd && bd.length) { const bundledChildren = [] for (const node of actual.children.values()) { - if (node.inBundle) + if (node.inBundle) { bundledChildren.push(node) + } } - for (const node of bundledChildren) + for (const node of bundledChildren) { node.parent = ideal + } } - children.push(...getChildren({actual, ideal, unchanged, removed, filterSet, shrinkwrapInflated})) + children.push(...getChildren({ + actual, + ideal, + unchanged, + removed, + filterSet, + shrinkwrapInflated, + })) } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/edge.js b/deps/npm/node_modules/@npmcli/arborist/lib/edge.js index 9d5ece40e5fae0..777ecc44a7c00e 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/edge.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/edge.js @@ -45,22 +45,26 @@ class Edge { constructor (options) { const { type, name, spec, accept, from } = options - if (typeof spec !== 'string') + if (typeof spec !== 'string') { throw new TypeError('must provide string spec') + } - if (type === 'workspace' && npa(spec).type !== 'directory') + if (type === 'workspace' && npa(spec).type !== 'directory') { throw new TypeError('workspace edges must be a symlink') + } this[_spec] = spec if (accept !== undefined) { - if (typeof accept !== 'string') + if (typeof accept !== 'string') { throw new TypeError('accept field must be a string if provided') + } this[_accept] = accept || '*' } - if (typeof name !== 'string') + if (typeof name !== 'string') { throw new TypeError('must provide dependency name') + } this[_name] = name if (!types.has(type)) { @@ -69,20 +73,23 @@ class Edge { `(valid types are: ${Edge.types.join(', ')})`) } this[_type] = type - if (!from) + if (!from) { throw new TypeError('must provide "from" node') + } this[_setFrom](from) this[_error] = this[_loadError]() this.overridden = false } satisfiedBy (node) { - return node.name === this.name && depValid(node, this.spec, this.accept, this.from) + return node.name === this.name && + depValid(node, this.spec, this.accept, this.from) } explain (seen = []) { - if (this[_explanation]) + if (this[_explanation]) { return this[_explanation] + } return this[_explanation] = this[_explain](seen) } @@ -101,8 +108,9 @@ class Edge { } get bundled () { - if (!this.from) + if (!this.from) { return false + } const { package: { bundleDependencies = [] } } = this.from return bundleDependencies.includes(this.name) } @@ -175,20 +183,24 @@ class Edge { this[_explanation] = null const newTo = this[_from].resolve(this.name) if (newTo !== this[_to]) { - if (this[_to]) + if (this[_to]) { this[_to].edgesIn.delete(this) + } this[_to] = newTo this[_error] = this[_loadError]() - if (this[_to]) + if (this[_to]) { this[_to].addEdgeIn(this) - } else if (hard) + } + } else if (hard) { this[_error] = this[_loadError]() + } } detach () { this[_explanation] = null - if (this[_to]) + if (this[_to]) { this[_to].edgesIn.delete(this) + } this[_from].edgesOut.delete(this.name) this[_to] = null this[_error] = 'DETACHED' @@ -198,8 +210,9 @@ class Edge { [_setFrom] (node) { this[_explanation] = null this[_from] = node - if (node.edgesOut.has(this.name)) + if (node.edgesOut.has(this.name)) { node.edgesOut.get(this.name).detach() + } node.addEdgeOut(this) this.reload() } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/gather-dep-set.js b/deps/npm/node_modules/@npmcli/arborist/lib/gather-dep-set.js index 1dc9a0b188eaa4..2c85a640fddfb1 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/gather-dep-set.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/gather-dep-set.js @@ -14,8 +14,9 @@ const gatherDepSet = (set, edgeFilter) => { // as the deps set increases in size. for (const node of deps) { for (const edge of node.edgesOut.values()) { - if (edge.to && edgeFilter(edge)) + if (edge.to && edgeFilter(edge)) { deps.add(edge.to) + } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js b/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js index a4ae11c2ab41e9..34b6f98a8b2866 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/inventory.js @@ -13,11 +13,13 @@ const debug = require('./debug.js') const getLicense = pkg => { if (pkg) { const lic = pkg.license || pkg.licence - if (lic) + if (lic) { return lic + } const lics = pkg.licenses || pkg.licences - if (Array.isArray(lics)) + if (Array.isArray(lics)) { return lics[0] + } } } @@ -42,8 +44,9 @@ class Inventory extends Map { * filter (fn) { for (const node of this.values()) { - if (fn(node)) + if (fn(node)) { yield node + } } } @@ -62,8 +65,9 @@ class Inventory extends Map { const current = super.get(node[this.primaryKey]) if (current) { - if (current === node) + if (current === node) { return + } this.delete(current) } super.set(node[this.primaryKey], node) @@ -85,8 +89,9 @@ class Inventory extends Map { } delete (node) { - if (!this.has(node)) + if (!this.has(node)) { return + } super.delete(node[this.primaryKey]) for (const [key, map] of this[_index].entries()) { @@ -95,8 +100,9 @@ class Inventory extends Map { const set = map.get(val) if (set) { set.delete(node) - if (set.size === 0) + if (set.size === 0) { map.delete(node[key]) + } } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/link.js b/deps/npm/node_modules/@npmcli/arborist/lib/link.js index 4d15428d873602..0289e04151ef55 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/link.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/link.js @@ -11,8 +11,9 @@ class Link extends Node { constructor (options) { const { root, realpath, target, parent, fsParent } = options - if (!realpath && !(target && target.path)) + if (!realpath && !(target && target.path)) { throw new TypeError('must provide realpath for Link node') + } super({ ...options, @@ -23,11 +24,11 @@ class Link extends Node { : null), }) - if (target) + if (target) { this.target = target - else if (this.realpath === this.root.path) + } else if (this.realpath === this.root.path) { this.target = this.root - else { + } else { this.target = new Node({ ...options, path: realpath, @@ -48,8 +49,9 @@ class Link extends Node { set target (target) { const current = this[_target] - if (target === current) + if (target === current) { return + } if (current && current.then) { debug(() => { @@ -72,25 +74,28 @@ class Link extends Node { } if (!target) { - if (current && current.linksIn) + if (current && current.linksIn) { current.linksIn.delete(this) + } if (this.path) { this[_delistFromMeta]() this[_target] = null this.package = {} this[_refreshLocation]() - } else + } else { this[_target] = null + } return } if (!this.path) { // temp node pending assignment to a tree // we know it's not in the inventory yet, because no path. - if (target.path) + if (target.path) { this.realpath = target.path - else + } else { target.path = target.realpath = this.realpath + } target.root = this.root this[_target] = target target.linksIn.add(this) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/node.js b/deps/npm/node_modules/@npmcli/arborist/lib/node.js index 5616019dd9cc2f..a872f24805b59c 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/node.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/node.js @@ -120,8 +120,9 @@ class Node { // should be equal if not a link this.path = path ? resolve(path) : null - if (!this.name && (!this.path || this.path !== dirname(this.path))) + if (!this.name && (!this.path || this.path !== dirname(this.path))) { throw new TypeError('could not detect node name from path or package') + } this.realpath = !this.isLink ? this.path : resolve(realpath) @@ -142,8 +143,9 @@ class Node { // // Otherwise, hopefully a shrinkwrap will help us out. const resolved = consistentResolve(pkg._resolved) - if (resolved && !(/^file:/.test(resolved) && pkg._where)) + if (resolved && !(/^file:/.test(resolved) && pkg._where)) { this.resolved = resolved + } } this.integrity = integrity || pkg._integrity || null this.hasShrinkwrap = hasShrinkwrap || pkg._hasShrinkwrap || false @@ -215,18 +217,21 @@ class Node { // see parent/root setters below. // root is set to parent's root if we have a parent, otherwise if it's // null, then it's set to the node itself. - if (!parent && !fsParent) + if (!parent && !fsParent) { this.root = root || null + } // mostly a convenience for testing, but also a way to create // trees in a more declarative way than setting parent on each if (children) { - for (const c of children) + for (const c of children) { new Node({ ...c, parent: this }) + } } if (fsChildren) { - for (const c of fsChildren) + for (const c of fsChildren) { new Node({ ...c, fsParent: this }) + } } // now load all the dep edges @@ -239,8 +244,9 @@ class Node { set meta (meta) { this[_meta] = meta - if (meta) + if (meta) { meta.add(this) + } } get global () { @@ -260,8 +266,9 @@ class Node { // deletes edges if they already exists if (this[_workspaces]) { for (const name of this[_workspaces].keys()) { - if (!workspaces.has(name)) + if (!workspaces.has(name)) { this.edgesOut.get(name).detach() + } } } @@ -271,8 +278,9 @@ class Node { } get binPaths () { - if (!this.parent) + if (!this.parent) { return [] + } return getBinPaths({ pkg: this[_package], @@ -319,8 +327,9 @@ class Node { // only do this more than once at the root level, so the resolve() calls // are only one level deep, and there's not much to be saved, anyway. // simpler to just toss them all out. - for (const edge of this.edgesOut.values()) + for (const edge of this.edgesOut.values()) { edge.detach() + } this[_explanation] = null /* istanbul ignore next - should be impossible */ @@ -341,8 +350,9 @@ class Node { // node.explain(nodes seen already, edge we're trying to satisfy // if edge is not specified, it lists every edge into the node. explain (edge = null, seen = []) { - if (this[_explanation]) + if (this[_explanation]) { return this[_explanation] + } return this[_explanation] = this[_explain](edge, seen) } @@ -374,11 +384,13 @@ class Node { } } - if (this.sourceReference) + if (this.sourceReference) { return this.sourceReference.explain(edge, seen) + } - if (seen.includes(this)) + if (seen.includes(this)) { return why + } why.location = this.location why.isWorkspace = this.isWorkspace @@ -387,56 +399,64 @@ class Node { seen = seen.concat(this) why.dependents = [] - if (edge) + if (edge) { why.dependents.push(edge.explain(seen)) - else { + } else { // ignore invalid edges, since those aren't satisfied by this thing, // and are not keeping it held in this spot anyway. const edges = [] for (const edge of this.edgesIn) { - if (!edge.valid && !edge.from.isProjectRoot) + if (!edge.valid && !edge.from.isProjectRoot) { continue + } edges.push(edge) } - for (const edge of edges) + for (const edge of edges) { why.dependents.push(edge.explain(seen)) + } } - if (this.linksIn.size) + if (this.linksIn.size) { why.linksIn = [...this.linksIn].map(link => link[_explain](edge, seen)) + } return why } isDescendantOf (node) { for (let p = this; p; p = p.resolveParent) { - if (p === node) + if (p === node) { return true + } } return false } getBundler (path = []) { // made a cycle, definitely not bundled! - if (path.includes(this)) + if (path.includes(this)) { return null + } path.push(this) const parent = this[_parent] - if (!parent) + if (!parent) { return null + } const pBundler = parent.getBundler(path) - if (pBundler) + if (pBundler) { return pBundler + } const ppkg = parent.package const bd = ppkg && ppkg.bundleDependencies // explicit bundling - if (Array.isArray(bd) && bd.includes(this.name)) + if (Array.isArray(bd) && bd.includes(this.name)) { return parent + } // deps that are deduped up to the bundling level are bundled. // however, if they get their dep met further up than that, @@ -444,11 +464,13 @@ class Node { // unmet bundled deps will not cause your deps to be bundled. for (const edge of this.edgesIn) { const eBundler = edge.from.getBundler(path) - if (!eBundler) + if (!eBundler) { continue + } - if (eBundler === parent) + if (eBundler === parent) { return eBundler + } } return null @@ -467,8 +489,9 @@ class Node { } get isWorkspace () { - if (this.isProjectRoot) + if (this.isProjectRoot) { return false + } const { root } = this const { type, to } = root.edgesOut.get(this.packageName) || {} return type === 'workspace' && to && (to.target === this || to === this) @@ -486,15 +509,17 @@ class Node { } * ancestry () { - for (let anc = this; anc; anc = anc.resolveParent) + for (let anc = this; anc; anc = anc.resolveParent) { yield anc + } } set root (root) { // setting to null means this is the new root // should only ever be one step - while (root && root.root !== root) + while (root && root.root !== root) { root = root.root + } root = root || this @@ -504,8 +529,9 @@ class Node { // can't set the root (yet) if there's no way to determine location // this allows us to do new Node({...}) and then set the root later. // just make the assignment so we don't lose it, and move on. - if (!this.path || !root.realpath || !root.path) + if (!this.path || !root.realpath || !root.path) { return this[_root] = root + } // temporarily become a root node this[_root] = this @@ -521,8 +547,9 @@ class Node { if (this.isLink) { if (target) { target.linksIn.delete(this) - if (target.root === this) + if (target.root === this) { target[_delistFromMeta]() + } } this[_target] = null } @@ -539,16 +566,17 @@ class Node { this[_fsParent] = null } - if (root === this) + if (root === this) { this[_refreshLocation]() - else { + } else { // setting to some different node. const loc = relpath(root.realpath, this.path) const current = root.inventory.get(loc) // clobber whatever is there now - if (current) + if (current) { current.root = null + } this[_root] = root // set this.location and add to inventory @@ -556,8 +584,9 @@ class Node { // try to find our parent/fsParent in the new root inventory for (const p of walkUp(dirname(this.path))) { - if (p === this.path) + if (p === this.path) { continue + } const ploc = relpath(root.realpath, p) const parent = root.inventory.get(ploc) if (parent) { @@ -576,8 +605,9 @@ class Node { const isParent = this.location === childLoc if (isParent) { const oldChild = parent.children.get(this.name) - if (oldChild && oldChild !== this) + if (oldChild && oldChild !== this) { oldChild.root = null + } if (this.parent) { this.parent.children.delete(this.name) this.parent[_reloadNamedEdges](this.name) @@ -586,13 +616,15 @@ class Node { this[_parent] = parent // don't do it for links, because they don't have a target yet // we'll hit them up a bit later on. - if (!this.isLink) + if (!this.isLink) { parent[_reloadNamedEdges](this.name) + } } else { /* istanbul ignore if - should be impossible, since we break * all fsParent/child relationships when moving? */ - if (this.fsParent) + if (this.fsParent) { this.fsParent.fsChildren.delete(this) + } parent.fsChildren.add(this) this[_fsParent] = parent } @@ -601,10 +633,11 @@ class Node { } // if it doesn't have a parent, it's a top node - if (!this.parent) + if (!this.parent) { root.tops.add(this) - else + } else { root.tops.delete(this) + } // assign parentage for any nodes that need to have this as a parent // this can happen when we have a node at nm/a/nm/b added *before* @@ -614,24 +647,30 @@ class Node { const nmloc = `${this.location}${this.location ? '/' : ''}node_modules/` const isChild = n => n.location === nmloc + n.name // check dirname so that /foo isn't treated as the fsparent of /foo-bar - const isFsChild = n => dirname(n.path).startsWith(this.path) && - n !== this && - !n.parent && - (!n.fsParent || n.fsParent === this || dirname(this.path).startsWith(n.fsParent.path)) + const isFsChild = n => { + return dirname(n.path).startsWith(this.path) && + n !== this && + !n.parent && + (!n.fsParent || + n.fsParent === this || + dirname(this.path).startsWith(n.fsParent.path)) + } const isKid = n => isChild(n) || isFsChild(n) // only walk top nodes, since anything else already has a parent. for (const child of root.tops) { - if (!isKid(child)) + if (!isKid(child)) { continue + } // set up the internal parentage links - if (this.isLink) + if (this.isLink) { child.root = null - else { + } else { // can't possibly have a parent, because it's in tops - if (child.fsParent) + if (child.fsParent) { child.fsParent.fsChildren.delete(child) + } child[_fsParent] = null if (isChild(child)) { this.children.set(child.name, child) @@ -648,13 +687,15 @@ class Node { // to that realpath, or a thing at that realpath if we're adding a link // (if we're adding a regular node, we already deleted the old one) for (const node of root.inventory.query('realpath', this.realpath)) { - if (node === this) + if (node === this) { continue + } /* istanbul ignore next - should be impossible */ debug(() => { - if (node.root !== root) + if (node.root !== root) { throw new Error('inventory contains node from other root') + } }) if (this.isLink) { @@ -663,8 +704,9 @@ class Node { this[_package] = target.package target.linksIn.add(this) // reload edges here, because now we have a target - if (this.parent) + if (this.parent) { this.parent[_reloadNamedEdges](this.name) + } break } else { /* istanbul ignore else - should be impossible */ @@ -672,8 +714,9 @@ class Node { node[_target] = this node[_package] = this.package this.linksIn.add(node) - if (node.parent) + if (node.parent) { node.parent[_reloadNamedEdges](node.name) + } } else { debug(() => { throw Object.assign(new Error('duplicate node in root setter'), { @@ -690,14 +733,16 @@ class Node { // reload all edgesIn where the root doesn't match, so we don't have // cross-tree dependency graphs for (const edge of this.edgesIn) { - if (edge.from.root !== root) + if (edge.from.root !== root) { edge.reload() + } } // reload all edgesOut where root doens't match, or is missing, since // it might not be missing in the new tree for (const edge of this.edgesOut.values()) { - if (!edge.to || edge.to.root !== root) + if (!edge.to || edge.to.root !== root) { edge.reload() + } } // now make sure our family comes along for the ride! @@ -721,15 +766,17 @@ class Node { } } for (const child of family) { - if (child.root !== root) + if (child.root !== root) { child.root = root + } } // if we had a target, and didn't find one in the new root, then bring // it over as well, but only if we're setting the link into a new root, // as we don't want to lose the target any time we remove a link. - if (this.isLink && target && !this.target && root !== this) + if (this.isLink && target && !this.target && root !== this) { target.root = root + } // tree should always be valid upon root setter completion. treeCheck(this) @@ -741,11 +788,13 @@ class Node { } [_loadWorkspaces] () { - if (!this[_workspaces]) + if (!this[_workspaces]) { return + } - for (const [name, path] of this[_workspaces].entries()) + for (const [name, path] of this[_workspaces].entries()) { new Edge({ from: this, name, spec: `file:${path}`, type: 'workspace' }) + } } [_loadDeps] () { @@ -764,10 +813,11 @@ class Node { const peerDependencies = {} const peerOptional = {} for (const [name, dep] of Object.entries(pd)) { - if (pm[name] && pm[name].optional) + if (pm[name] && pm[name].optional) { peerOptional[name] = dep - else + } else { peerDependencies[name] = dep + } } this[_loadDepType](peerDependencies, 'peer') this[_loadDepType](peerOptional, 'peerOptional') @@ -784,8 +834,9 @@ class Node { } = sourceReference || {} const thisDev = isTop && !globalTop && path const srcDev = !sourceReference || srcTop && !srcGlobalTop && srcPath - if (thisDev && srcDev) + if (thisDev && srcDev) { this[_loadDepType](this.package.devDependencies, 'dev') + } } [_loadDepType] (deps, type) { @@ -794,8 +845,9 @@ class Node { // prioritize a new edge over an existing one for (const [name, spec] of Object.entries(deps || {})) { const current = this.edgesOut.get(name) - if (!current || current.type !== 'workspace') + if (!current || current.type !== 'workspace') { new Edge({ from: this, name, spec, accept: ad[name], type }) + } } } @@ -803,25 +855,29 @@ class Node { const parent = this[_fsParent] /* istanbul ignore next - should be impossible */ debug(() => { - if (parent === this) + if (parent === this) { throw new Error('node set to its own fsParent') + } }) return parent } set fsParent (fsParent) { if (!fsParent) { - if (this[_fsParent]) + if (this[_fsParent]) { this.root = null + } return } debug(() => { - if (fsParent === this) + if (fsParent === this) { throw new Error('setting node to its own fsParent') + } - if (fsParent.realpath === this.realpath) + if (fsParent.realpath === this.realpath) { throw new Error('setting fsParent to same path') + } // the initial set MUST be an actual walk-up from the realpath // subsequent sets will re-root on the new fsParent's path. @@ -837,16 +893,19 @@ class Node { } }) - if (fsParent.isLink) + if (fsParent.isLink) { fsParent = fsParent.target + } // setting a thing to its own fsParent is not normal, but no-op for safety - if (this === fsParent || fsParent.realpath === this.realpath) + if (this === fsParent || fsParent.realpath === this.realpath) { return + } // nothing to do - if (this[_fsParent] === fsParent) + if (this[_fsParent] === fsParent) { return + } const oldFsParent = this[_fsParent] const newPath = !oldFsParent ? this.path @@ -874,11 +933,13 @@ class Node { } // update this.path/realpath for this and all children/fsChildren - if (pathChange) + if (pathChange) { this[_changePath](newPath) + } - if (oldParent) + if (oldParent) { oldParent[_reloadNamedEdges](oldName) + } // clobbers anything at that path, resets all appropriate references this.root = fsParent.root @@ -894,11 +955,13 @@ class Node { // will go ahead and create the invalid state, and then try to resolve // it with more tree construction, because it's a user request. canReplaceWith (node, ignorePeers = []) { - if (node.name !== this.name) + if (node.name !== this.name) { return false + } - if (node.packageName !== this.packageName) + if (node.packageName !== this.packageName) { return false + } ignorePeers = new Set(ignorePeers) @@ -915,12 +978,14 @@ class Node { edge.from.parent === this.parent && edge.peer && ignorePeers.has(edge.from.name) - if (ignored) + if (ignored) { continue + } // only care about edges that don't originate from this node - if (!depSet.has(edge.from) && !edge.satisfiedBy(node)) + if (!depSet.has(edge.from) && !edge.satisfiedBy(node)) { return false + } } return true @@ -935,41 +1000,49 @@ class Node { // to if it was removed, or nothing is depending on it in the first place. canDedupe (preferDedupe = false) { // not allowed to mess with shrinkwraps or bundles - if (this.inDepBundle || this.inShrinkwrap) + if (this.inDepBundle || this.inShrinkwrap) { return false + } // it's a top level pkg, or a dep of one - if (!this.resolveParent || !this.resolveParent.resolveParent) + if (!this.resolveParent || !this.resolveParent.resolveParent) { return false + } // no one wants it, remove it - if (this.edgesIn.size === 0) + if (this.edgesIn.size === 0) { return true + } const other = this.resolveParent.resolveParent.resolve(this.name) // nothing else, need this one - if (!other) + if (!other) { return false + } // if it's the same thing, then always fine to remove - if (other.matches(this)) + if (other.matches(this)) { return true + } // if the other thing can't replace this, then skip it - if (!other.canReplace(this)) + if (!other.canReplace(this)) { return false + } // if we prefer dedupe, or if the version is greater/equal, take the other - if (preferDedupe || semver.gte(other.version, this.version)) + if (preferDedupe || semver.gte(other.version, this.version)) { return true + } return false } satisfies (requested) { - if (requested instanceof Edge) + if (requested instanceof Edge) { return this.name === requested.name && requested.satisfiedBy(this) + } const parsed = npa(requested) const { name = this.name, rawSpec: spec } = parsed @@ -983,29 +1056,35 @@ class Node { matches (node) { // if the nodes are literally the same object, obviously a match. - if (node === this) + if (node === this) { return true + } // if the names don't match, they're different things, even if // the package contents are identical. - if (node.name !== this.name) + if (node.name !== this.name) { return false + } // if they're links, they match if the targets match - if (this.isLink) + if (this.isLink) { return node.isLink && this.target.matches(node.target) + } // if they're two project root nodes, they're different if the paths differ - if (this.isProjectRoot && node.isProjectRoot) + if (this.isProjectRoot && node.isProjectRoot) { return this.path === node.path + } // if the integrity matches, then they're the same. - if (this.integrity && node.integrity) + if (this.integrity && node.integrity) { return this.integrity === node.integrity + } // if no integrity, check resolved - if (this.resolved && node.resolved) + if (this.resolved && node.resolved) { return this.resolved === node.resolved + } // if no resolved, check both package name and version // otherwise, conclude that they are different things @@ -1031,39 +1110,44 @@ class Node { // parent's children map, and leave it at that. const nameMatch = node.parent && node.parent.children.get(this.name) === node - if (nameMatch) + if (nameMatch) { this.path = resolve(node.parent.path, 'node_modules', this.name) - else { + } else { this.path = node.path this.name = node.name } - if (!this.isLink) + if (!this.isLink) { this.realpath = this.path + } this[_refreshLocation]() // keep children when a node replaces another if (!this.isLink) { - for (const kid of node.children.values()) + for (const kid of node.children.values()) { kid.parent = this + } } - if (!node.isRoot) + if (!node.isRoot) { this.root = node.root + } treeCheck(this) } get inShrinkwrap () { - return this.parent && (this.parent.hasShrinkwrap || this.parent.inShrinkwrap) + return this.parent && + (this.parent.hasShrinkwrap || this.parent.inShrinkwrap) } get parent () { const parent = this[_parent] /* istanbul ignore next - should be impossible */ debug(() => { - if (parent === this) + if (parent === this) { throw new Error('node set to its own parent') + } }) return parent } @@ -1083,23 +1167,27 @@ class Node { if (!parent) { // but only delete it if we actually had a parent in the first place // otherwise it's just setting to null when it's already null - if (this[_parent]) + if (this[_parent]) { this.root = null + } return } - if (parent.isLink) + if (parent.isLink) { parent = parent.target + } // setting a thing to its own parent is not normal, but no-op for safety - if (this === parent) + if (this === parent) { return + } const oldParent = this[_parent] // nothing to do - if (oldParent === parent) + if (oldParent === parent) { return + } // ok now we know something is actually changing, and parent is not a link const newPath = resolve(parent.path, 'node_modules', this.name) @@ -1116,8 +1204,9 @@ class Node { } // update this.path/realpath for this and all children/fsChildren - if (pathChange) + if (pathChange) { this[_changePath](newPath) + } // clobbers anything at that path, resets all appropriate references this.root = parent.root @@ -1127,16 +1216,19 @@ class Node { // Removes the node from its root the metadata and inventory. [_delistFromMeta] () { const root = this.root - if (!root.realpath || !this.path) + if (!root.realpath || !this.path) { return + } root.inventory.delete(this) root.tops.delete(this) - if (root.meta) + if (root.meta) { root.meta.delete(this.path) + } /* istanbul ignore next - should be impossible */ debug(() => { - if ([...root.inventory.values()].includes(this)) + if ([...root.inventory.values()].includes(this)) { throw new Error('failed to delist') + } }) } @@ -1148,8 +1240,9 @@ class Node { this.path = newPath const namePattern = /(?:^|\/|\\)node_modules[\\/](@[^/\\]+[\\/][^\\/]+|[^\\/]+)$/ const nameChange = newPath.match(namePattern) - if (nameChange && this.name !== nameChange[1]) + if (nameChange && this.name !== nameChange[1]) { this.name = nameChange[1].replace(/\\/g, '/') + } // if we move a link target, update link realpaths if (!this.isLink) { @@ -1161,10 +1254,12 @@ class Node { } } // if we move /x to /y, then a module at /x/a/b becomes /y/a/b - for (const child of this.fsChildren) + for (const child of this.fsChildren) { child[_changePath](resolve(newPath, relative(oldPath, child.path))) - for (const [name, child] of this.children.entries()) + } + for (const [name, child] of this.children.entries()) { child[_changePath](resolve(newPath, 'node_modules', name)) + } this[_refreshLocation]() } @@ -1179,8 +1274,9 @@ class Node { this.location = loc root.inventory.add(this) - if (root.meta) + if (root.meta) { root.meta.add(this) + } } addEdgeOut (edge) { @@ -1191,8 +1287,9 @@ class Node { this.edgesIn.add(edge) // try to get metadata from the yarn.lock file - if (this.root.meta) + if (this.root.meta) { this.root.meta.addEdge(edge) + } } [_reloadNamedEdges] (name, rootLoc = this.location) { @@ -1202,13 +1299,16 @@ class Node { edge.to.location === `${rootLoc}/node_modules/${edge.name}` const sameResolved = edge && this.resolve(name) === edge.to const recheck = rootLocResolved || !sameResolved - if (edge && recheck) + if (edge && recheck) { edge.reload(true) - for (const c of this.children.values()) + } + for (const c of this.children.values()) { c[_reloadNamedEdges](name, rootLoc) + } - for (const c of this.fsChildren) + for (const c of this.fsChildren) { c[_reloadNamedEdges](name, rootLoc) + } } get isLink () { @@ -1255,15 +1355,18 @@ class Node { /* istanbul ignore next - should be impossible, * but I keep doing this mistake in tests */ debug(() => { - if (typeof name !== 'string' || !name) + if (typeof name !== 'string' || !name) { throw new Error('non-string passed to Node.resolve') + } }) const mine = this.children.get(name) - if (mine) + if (mine) { return mine + } const resolveParent = this.resolveParent - if (resolveParent) + if (resolveParent) { return resolveParent.resolve(name) + } return null } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js b/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js index 9472158bc44be9..9f5184ea024420 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js @@ -10,8 +10,9 @@ const gatherDepSet = require('./gather-dep-set.js') const optionalSet = node => { - if (!node.optional) + if (!node.optional) { return new Set() + } // start with the node, then walk up the dependency graph until we // get to the boundaries that define the optional set. since the @@ -21,8 +22,9 @@ const optionalSet = node => { const set = new Set([node]) for (const node of set) { for (const edge of node.edgesIn) { - if (!edge.optional) + if (!edge.optional) { set.add(edge.from) + } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/peer-entry-sets.js b/deps/npm/node_modules/@npmcli/arborist/lib/peer-entry-sets.js index 11f9a431607ec0..2c4322ee678ca5 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/peer-entry-sets.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/peer-entry-sets.js @@ -15,12 +15,14 @@ const peerEntrySets = node => { const unionSet = new Set([node]) for (const node of unionSet) { for (const edge of node.edgesOut.values()) { - if (edge.valid && edge.peer && edge.to) + if (edge.valid && edge.peer && edge.to) { unionSet.add(edge.to) + } } for (const edge of node.edgesIn) { - if (edge.valid && edge.peer) + if (edge.valid && edge.peer) { unionSet.add(edge.from) + } } } const entrySets = new Map() @@ -28,16 +30,18 @@ const peerEntrySets = node => { for (const edge of peer.edgesIn) { // if not valid, it doesn't matter anyway. either it's been previously // overridden, or it's the thing we're interested in replacing. - if (!edge.valid) + if (!edge.valid) { continue + } // this is the entry point into the peer set if (!edge.peer || edge.from.isTop) { // get the subset of peer brought in by this peer entry edge const sub = new Set([peer]) for (const peer of sub) { for (const edge of peer.edgesOut.values()) { - if (edge.valid && edge.peer && edge.to) + if (edge.valid && edge.peer && edge.to) { sub.add(edge.to) + } } } // if this subset does not include the node we are focused on, @@ -60,8 +64,9 @@ const peerEntrySets = node => { // Edge(a->b) => Set(b, d, e, f, g) // Edge(a->d) => Set(d, e, f, g) // } - if (sub.has(node)) + if (sub.has(node)) { entrySets.set(edge, sub) + } } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/place-dep.js b/deps/npm/node_modules/@npmcli/arborist/lib/place-dep.js index c0023e74ad8eae..d7cc7d935afc8d 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/place-dep.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/place-dep.js @@ -85,8 +85,9 @@ class PlaceDep { !edge.error && !explicitRequest && !updateNames.includes(edge.name) && - !this.isVulnerable(edge.to)) + !this.isVulnerable(edge.to)) { return + } // walk up the tree until we hit either a top/root node, or a place // where the dep is not a peer dep. @@ -110,8 +111,9 @@ class PlaceDep { // but we CAN place it under a, so the correct thing to do is keep // walking up the tree. const targetEdge = target.edgesOut.get(edge.name) - if (!target.isTop && targetEdge && targetEdge.peer) + if (!target.isTop && targetEdge && targetEdge.peer) { continue + } const cpd = new CanPlaceDep({ dep, @@ -141,34 +143,39 @@ class PlaceDep { // should treat (b) and (d) as OK, and place them in the last place // where they did not themselves conflict, and skip c@2 if conflict // is ok by virtue of being forced or not ours and not strict. - if (cpd.canPlaceSelf !== CONFLICT) + if (cpd.canPlaceSelf !== CONFLICT) { canPlaceSelf = cpd + } // we found a place this can go, along with all its peer friends. // we break when we get the first conflict - if (cpd.canPlace !== CONFLICT) + if (cpd.canPlace !== CONFLICT) { canPlace = cpd - else + } else { break + } // if it's a load failure, just plop it in the first place attempted, // since we're going to crash the build or prune it out anyway. // but, this will frequently NOT be a successful canPlace, because // it'll have no version or other information. - if (dep.errors.length) + if (dep.errors.length) { break + } // nest packages like npm v1 and v2 // very disk-inefficient - if (legacyBundling) + if (legacyBundling) { break + } // when installing globally, or just in global style, we never place // deps above the first level. if (globalStyle) { const rp = target.resolveParent - if (rp && rp.isProjectRoot) + if (rp && rp.isProjectRoot) { break + } } } @@ -183,8 +190,9 @@ class PlaceDep { if (!canPlace) { // if not forced, or it's our dep, or strictPeerDeps is set, then // this is an ERESOLVE error. - if (!this.conflictOk) + if (!this.conflictOk) { return this.failPeerConflict() + } // ok! we're gonna allow the conflict, but we should still warn // if we have a current, then we treat CONFLICT as a KEEP. @@ -237,8 +245,9 @@ class PlaceDep { // it's a conflict. Treat it as a KEEP, but warn and move on. if (placementType === KEEP) { // this was an overridden peer dep - if (edge.peer && !edge.valid) + if (edge.peer && !edge.valid) { this.warnPeerConflict() + } // if we get a KEEP in a update scenario, then we MAY have something // already duplicating this unnecessarily! For example: @@ -287,21 +296,24 @@ class PlaceDep { }) this.oldDep = target.children.get(this.name) - if (this.oldDep) + if (this.oldDep) { this.replaceOldDep() - else + } else { this.placed.parent = target + } // if it's an overridden peer dep, warn about it - if (edge.peer && !this.placed.satisfies(edge)) + if (edge.peer && !this.placed.satisfies(edge)) { this.warnPeerConflict() + } // If the edge is not an error, then we're updating something, and // MAY end up putting a better/identical node further up the tree in // a way that causes an unnecessary duplication. If so, remove the // now-unnecessary node. - if (edge.valid && edge.to && edge.to !== this.placed) + if (edge.valid && edge.to && edge.to !== this.placed) { this.pruneDedupable(edge.to, false) + } // in case we just made some duplicates that can be removed, // prune anything deeper in the tree that can be replaced by this @@ -310,8 +322,9 @@ class PlaceDep { this.pruneDedupable(node, false) // only walk the direct children of the ones we kept if (node.root === target.root) { - for (const kid of node.children.values()) + for (const kid of node.children.values()) { this.pruneDedupable(kid, false) + } } } } @@ -323,8 +336,9 @@ class PlaceDep { // otherwise they'd be gone and the peer set would change throughout // this loop. for (const peerEdge of this.placed.edgesOut.values()) { - if (peerEdge.valid || !peerEdge.peer || peerEdge.overridden) + if (peerEdge.valid || !peerEdge.peer || peerEdge.overridden) { continue + } const peer = virtualRoot.children.get(peerEdge.name) @@ -332,12 +346,14 @@ class PlaceDep { // it's an optional peer dep. If it's not being properly met (ie, // peerEdge.valid is false), then this is likely heading for an // ERESOLVE error, unless it can walk further up the tree. - if (!peer) + if (!peer) { continue + } // overridden peerEdge, just accept what's there already - if (!peer.satisfies(peerEdge)) + if (!peer.satisfies(peerEdge)) { continue + } this.children.push(new PlaceDep({ parent: this, @@ -363,8 +379,9 @@ class PlaceDep { // later anyway. const oldDeps = [] for (const [name, edge] of this.oldDep.edgesOut.entries()) { - if (!this.placed.edgesOut.has(name) && edge.to) + if (!this.placed.edgesOut.has(name) && edge.to) { oldDeps.push(...gatherDepSet([edge.to], e => e.to !== edge.to)) + } } this.placed.replace(this.oldDep) this.pruneForReplacement(this.placed, oldDeps) @@ -377,8 +394,9 @@ class PlaceDep { .filter(e => e.to && !e.valid).map(e => e.to)) for (const dep of oldDeps) { const set = gatherDepSet([dep], e => e.to !== dep && e.valid) - for (const dep of set) + for (const dep of set) { invalidDeps.add(dep) + } } // ignore dependency edges from the node being replaced, but @@ -388,8 +406,9 @@ class PlaceDep { edge.from !== node && edge.to !== node && edge.valid) // now just delete whatever's left, because it's junk - for (const dep of deps) + for (const dep of deps) { dep.root = null + } } // prune all the nodes in a branch of the tree that can be safely removed @@ -402,8 +421,9 @@ class PlaceDep { // the dep set, except for this node we're deduping, so that we // also prune deps that would be made extraneous. const deps = gatherDepSet([node], e => e.to !== node && e.valid) - for (const node of deps) + for (const node of deps) { node.root = null + } return } if (descend) { @@ -413,13 +433,15 @@ class PlaceDep { const nodeSort = (a, b) => a.location.localeCompare(b.location, 'en') const children = [...node.children.values()].sort(nodeSort) - for (const child of children) + for (const child of children) { this.pruneDedupable(child) + } const fsChildren = [...node.fsChildren].sort(nodeSort) for (const topNode of fsChildren) { const children = [...topNode.children.values()].sort(nodeSort) - for (const child of children) + for (const child of children) { this.pruneDedupable(child) + } } } } @@ -432,11 +454,13 @@ class PlaceDep { const { edge } = this.top const { from: node } = edge - if (node.isWorkspace || node.isProjectRoot) + if (node.isWorkspace || node.isProjectRoot) { return true + } - if (!edge.peer) + if (!edge.peer) { return false + } // re-entry case. check if any non-peer edges come from the project, // or any entryEdges on peer groups are from the root. @@ -446,13 +470,15 @@ class PlaceDep { hasPeerEdges = true continue } - if (edge.from.isWorkspace || edge.from.isProjectRoot) + if (edge.from.isWorkspace || edge.from.isProjectRoot) { return true + } } if (hasPeerEdges) { for (const edge of peerEntrySets(node).keys()) { - if (edge.from.isWorkspace || edge.from.isProjectRoot) + if (edge.from.isWorkspace || edge.from.isProjectRoot) { return true + } } } @@ -541,8 +567,9 @@ class PlaceDep { get allChildren () { const set = new Set(this.children) for (const child of set) { - for (const grandchild of child.children) + for (const grandchild of child.children) { set.add(grandchild) + } } return [...set] } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/printable.js b/deps/npm/node_modules/@npmcli/arborist/lib/printable.js index 4aa2fffd104b4a..af24ccb9592883 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/printable.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/printable.js @@ -7,45 +7,62 @@ const relpath = require('./relpath.js') class ArboristNode { constructor (tree, path) { this.name = tree.name - if (tree.packageName && tree.packageName !== this.name) + if (tree.packageName && tree.packageName !== this.name) { this.packageName = tree.packageName - if (tree.version) + } + if (tree.version) { this.version = tree.version + } this.location = tree.location this.path = tree.path - if (tree.realpath !== this.path) + if (tree.realpath !== this.path) { this.realpath = tree.realpath - if (tree.resolved !== null) + } + if (tree.resolved !== null) { this.resolved = tree.resolved - if (tree.extraneous) + } + if (tree.extraneous) { this.extraneous = true - if (tree.dev) + } + if (tree.dev) { this.dev = true - if (tree.optional) + } + if (tree.optional) { this.optional = true - if (tree.devOptional && !tree.dev && !tree.optional) + } + if (tree.devOptional && !tree.dev && !tree.optional) { this.devOptional = true - if (tree.peer) + } + if (tree.peer) { this.peer = true - if (tree.inBundle) + } + if (tree.inBundle) { this.bundled = true - if (tree.inDepBundle) + } + if (tree.inDepBundle) { this.bundler = tree.getBundler().location - if (tree.isProjectRoot) + } + if (tree.isProjectRoot) { this.isProjectRoot = true - if (tree.isWorkspace) + } + if (tree.isWorkspace) { this.isWorkspace = true + } const bd = tree.package && tree.package.bundleDependencies - if (bd && bd.length) + if (bd && bd.length) { this.bundleDependencies = bd - if (tree.inShrinkwrap) + } + if (tree.inShrinkwrap) { this.inShrinkwrap = true - else if (tree.hasShrinkwrap) + } else if (tree.hasShrinkwrap) { this.hasShrinkwrap = true - if (tree.error) + } + if (tree.error) { this.error = treeError(tree.error) - if (tree.errors && tree.errors.length) + } + if (tree.errors && tree.errors.length) { this.errors = tree.errors.map(treeError) + } // edgesOut sorted by name if (tree.edgesOut.size) { @@ -109,10 +126,12 @@ class Edge { this.type = edge.type this.name = edge.name this.spec = edge.spec || '*' - if (edge.error) + if (edge.error) { this.error = edge.error - if (edge.overridden) + } + if (edge.overridden) { this.overridden = edge.overridden + } } } @@ -151,8 +170,9 @@ class EdgeIn extends Edge { } const printableTree = (tree, path = []) => { - if (!tree) + if (!tree) { return tree + } const Cls = tree.isLink ? ArboristLink : tree.sourceReference ? ArboristVirtualNode diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/realpath.js b/deps/npm/node_modules/@npmcli/arborist/lib/realpath.js index fa467c097a60b7..bc4bbbce384850 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/realpath.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/realpath.js @@ -14,18 +14,21 @@ const { resolve, basename, dirname } = require('path') const realpathCached = (path, rpcache, stcache, depth) => { // just a safety against extremely deep eloops /* istanbul ignore next */ - if (depth > 2000) + if (depth > 2000) { throw eloop(path) + } path = resolve(path) - if (rpcache.has(path)) + if (rpcache.has(path)) { return Promise.resolve(rpcache.get(path)) + } const dir = dirname(path) const base = basename(path) - if (base && rpcache.has(dir)) + if (base && rpcache.has(dir)) { return realpathChild(dir, base, rpcache, stcache, depth) + } // if it's the root, then we know it's real if (!base) { @@ -40,8 +43,9 @@ const realpathCached = (path, rpcache, stcache, depth) => { } const lstatCached = (path, stcache) => { - if (stcache.has(path)) + if (stcache.has(path)) { return Promise.resolve(stcache.get(path)) + } const p = lstat(path).then(st => { stcache.set(path, st) @@ -66,8 +70,9 @@ const realpathChild = (dir, base, rpcache, stcache, depth) => { const realdir = rpcache.get(dir) // that unpossible /* istanbul ignore next */ - if (typeof realdir === 'undefined') + if (typeof realdir === 'undefined') { throw new Error('in realpathChild without parent being in realpath cache') + } const realish = resolve(realdir, base) return lstatCached(realish, stcache).then(st => { @@ -78,8 +83,9 @@ const realpathChild = (dir, base, rpcache, stcache, depth) => { return readlink(realish).then(target => { const resolved = resolve(realdir, target) - if (realish === resolved) + if (realish === resolved) { throw eloop(realish) + } return realpathCached(resolved, rpcache, stcache, depth + 1) }).then(real => { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js b/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js index 83cb1f66f3a105..6e7e0e31f166bf 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js @@ -47,8 +47,9 @@ const readlink = promisify(fs.readlink) const lstat = promisify(fs.lstat) /* istanbul ignore next - version specific polyfill */ const readdir = async (path, opt) => { - if (!opt || !opt.withFileTypes) + if (!opt || !opt.withFileTypes) { return readdir_(path, opt) + } const ents = await readdir_(path, opt) if (typeof ents[0] === 'string') { return Promise.all(ents.map(async ent => { @@ -97,20 +98,22 @@ const consistentResolve = require('./consistent-resolve.js') const maybeReadFile = file => { return readFile(file, 'utf8').then(d => d, er => { /* istanbul ignore else - can't test without breaking module itself */ - if (er.code === 'ENOENT') + if (er.code === 'ENOENT') { return '' - else + } else { throw er + } }) } const maybeStatFile = file => { return stat(file).then(st => st.isFile(), er => { /* istanbul ignore else - can't test without breaking module itself */ - if (er.code === 'ENOENT') + if (er.code === 'ENOENT') { return null - else + } else { throw er + } }) } @@ -163,13 +166,16 @@ const assertNoNewer = async (path, data, lockTime, dir = path, seen = null) => { const rel = relpath(path, dir) if (dir !== path) { const dirTime = (await stat(dir)).mtime - if (dirTime > lockTime) + if (dirTime > lockTime) { throw 'out of date, updated: ' + rel - if (!isScope && !isNM && !data.packages[rel]) + } + if (!isScope && !isNM && !data.packages[rel]) { throw 'missing from lockfile: ' + rel + } seen.add(rel) - } else + } else { seen = new Set([rel]) + } const parent = isParent ? dir : resolve(dir, 'node_modules') const children = dir === path @@ -179,26 +185,29 @@ const assertNoNewer = async (path, data, lockTime, dir = path, seen = null) => { return children.catch(() => []) .then(ents => Promise.all(ents.map(async ent => { const child = resolve(parent, ent.name) - if (ent.isDirectory() && !/^\./.test(ent.name)) + if (ent.isDirectory() && !/^\./.test(ent.name)) { await assertNoNewer(path, data, lockTime, child, seen) - else if (ent.isSymbolicLink()) { + } else if (ent.isSymbolicLink()) { const target = resolve(parent, await readlink(child)) const tstat = await stat(target).catch( /* istanbul ignore next - windows */ () => null) seen.add(relpath(path, child)) /* istanbul ignore next - windows cannot do this */ - if (tstat && tstat.isDirectory() && !seen.has(relpath(path, target))) + if (tstat && tstat.isDirectory() && !seen.has(relpath(path, target))) { await assertNoNewer(path, data, lockTime, target, seen) + } } }))) .then(() => { - if (dir !== path) + if (dir !== path) { return + } // assert that all the entries in the lockfile were seen for (const loc of new Set(Object.keys(data.packages))) { - if (!seen.has(loc)) + if (!seen.has(loc)) { throw 'missing from node_modules: ' + loc + } } }) } @@ -252,39 +261,48 @@ class Shrinkwrap { const meta = {} pkgMetaKeys.forEach(key => { const val = metaFieldFromPkg(node.package, key) - if (val) + if (val) { meta[key.replace(/^_/, '')] = val + } }) // we only include name if different from the node path name, and for the // root to help prevent churn based on the name of the directory the // project is in const pname = node.packageName - if (pname && (node === node.root || pname !== node.name)) + if (pname && (node === node.root || pname !== node.name)) { meta.name = pname + } - if (node.isTop && node.package.devDependencies) + if (node.isTop && node.package.devDependencies) { meta.devDependencies = node.package.devDependencies + } nodeMetaKeys.forEach(key => { - if (node[key]) + if (node[key]) { meta[key] = node[key] + } }) const resolved = consistentResolve(node.resolved, node.path, path, true) - if (resolved) + if (resolved) { meta.resolved = resolved + } - if (node.extraneous) + if (node.extraneous) { meta.extraneous = true - else { - if (node.peer) + } else { + if (node.peer) { meta.peer = true - if (node.dev) + } + if (node.dev) { meta.dev = true - if (node.optional) + } + if (node.optional) { meta.optional = true - if (node.devOptional && !node.dev && !node.optional) + } + if (node.devOptional && !node.dev && !node.optional) { meta.devOptional = true + } } return meta } @@ -423,8 +441,9 @@ class Shrinkwrap { this.indent = indent !== undefined ? indent : this.indent this.newline = newline !== undefined ? newline : this.newline - if (!this.hiddenLockfile || !data.packages) + if (!this.hiddenLockfile || !data.packages) { return data + } // add a few ms just to account for jitter const lockTime = +(await stat(this.filename)).mtime + 10 @@ -467,8 +486,9 @@ class Shrinkwrap { // migrate a v1 package lock to the new format. const meta = this[_metaFromLock](location, name, lock) // dependencies nested under a link are actually under the link target - if (meta.link) + if (meta.link) { location = meta.resolved + } if (lock.dependencies) { for (const [name, dep] of Object.entries(lock.dependencies)) { const loc = location + (location ? '/' : '') + 'node_modules/' + name @@ -488,13 +508,15 @@ class Shrinkwrap { pkgMetaKeys.forEach(key => { const val = metaFieldFromPkg(pkg, key) const k = key.replace(/^_/, '') - if (val) + if (val) { root[k] = val + } }) for (const [loc, meta] of Object.entries(this.data.packages)) { - if (!meta.requires || !loc) + if (!meta.requires || !loc) { continue + } // resolve each require to a meta entry // if this node isn't optional, but the dep is, then it's an optionalDep @@ -523,27 +545,33 @@ class Shrinkwrap { [_resolveMetaNode] (loc, name) { for (let path = loc; true; path = path.replace(/(^|\/)[^/]*$/, '')) { const check = `${path}${path ? '/' : ''}node_modules/${name}` - if (this.data.packages[check]) + if (this.data.packages[check]) { return this.data.packages[check] + } - if (!path) + if (!path) { break + } } return null } [_lockFromLoc] (lock, path, i = 0) { - if (!lock) + if (!lock) { return null + } - if (path[i] === '') + if (path[i] === '') { i++ + } - if (i >= path.length) + if (i >= path.length) { return lock + } - if (!lock.dependencies) + if (!lock.dependencies) { return null + } return this[_lockFromLoc](lock.dependencies[path[i]], path, i + 1) } @@ -555,8 +583,9 @@ class Shrinkwrap { } delete (nodePath) { - if (!this.data) + if (!this.data) { throw new Error('run load() before getting or setting data') + } const location = this[_pathToLoc](nodePath) this[_awaitingUpdate].delete(location) @@ -564,22 +593,26 @@ class Shrinkwrap { const path = location.split(/(?:^|\/)node_modules\//) const name = path.pop() const pLock = this[_lockFromLoc](this.data, path) - if (pLock && pLock.dependencies) + if (pLock && pLock.dependencies) { delete pLock.dependencies[name] + } } get (nodePath) { - if (!this.data) + if (!this.data) { throw new Error('run load() before getting or setting data') + } const location = this[_pathToLoc](nodePath) - if (this[_awaitingUpdate].has(location)) + if (this[_awaitingUpdate].has(location)) { this[_updateWaitingNode](location) + } // first try to get from the newer spot, which we know has // all the things we need. - if (this.data.packages[location]) + if (this.data.packages[location]) { return this.data.packages[location] + } // otherwise, fall back to the legacy metadata, and hope for the best // get the node in the shrinkwrap corresponding to this spot @@ -595,8 +628,9 @@ class Shrinkwrap { // from a lockfile which may be outdated or incomplete. Since v1 // lockfiles used the "version" field to contain a variety of // different possible types of data, this gets a little complicated. - if (!lock) + if (!lock) { return {} + } // try to figure out a npm-package-arg spec from the lockfile entry // This will return null if we could not get anything valid out of it. @@ -613,29 +647,35 @@ class Shrinkwrap { } // also save the link target, omitting version since we don't know // what it is, but we know it isn't a link to itself! - if (!this.data.packages[target]) + if (!this.data.packages[target]) { this[_metaFromLock](target, name, { ...lock, version: null }) + } return this.data.packages[location] } const meta = {} // when calling loadAll we'll change these into proper dep objects - if (lock.requires && typeof lock.requires === 'object') + if (lock.requires && typeof lock.requires === 'object') { meta.requires = lock.requires + } - if (lock.optional) + if (lock.optional) { meta.optional = true - if (lock.dev) + } + if (lock.dev) { meta.dev = true + } // the root will typically have a name from the root project's // package.json file. - if (location === '') + if (location === '') { meta.name = lock.name + } // if we have integrity, save it now. - if (lock.integrity) + if (lock.integrity) { meta.integrity = lock.integrity + } if (lock.version && !lock.integrity) { // this is usually going to be a git url or symlink, but it could @@ -668,12 +708,13 @@ class Shrinkwrap { // have a fetchSpec equal to the fully resolved thing. // Registry deps, we take what's in the lockfile. if (lock.resolved || (spec.type && !spec.registry)) { - if (spec.registry) + if (spec.registry) { meta.resolved = lock.resolved - else if (spec.type === 'file') + } else if (spec.type === 'file') { meta.resolved = consistentResolve(spec, this.path, this.path, true) - else if (spec.fetchSpec) + } else if (spec.fetchSpec) { meta.resolved = spec.fetchSpec + } } // at this point, if still we don't have a version, do our best to @@ -685,32 +726,37 @@ class Shrinkwrap { versionFromTgz(spec.name, meta.resolved) if (fromTgz) { meta.version = fromTgz.version - if (fromTgz.name !== name) + if (fromTgz.name !== name) { meta.name = fromTgz.name + } } } else if (spec.type === 'alias') { meta.name = spec.subSpec.name meta.version = spec.subSpec.fetchSpec - } else if (spec.type === 'version') + } else if (spec.type === 'version') { meta.version = spec.fetchSpec + } // ok, I did my best! good luck! } - if (lock.bundled) + if (lock.bundled) { meta.inBundle = true + } // save it for next time return this.data.packages[location] = meta } add (node) { - if (!this.data) + if (!this.data) { throw new Error('run load() before getting or setting data') + } // will be actually updated on read const loc = relpath(this.path, node.path) - if (node.path === this.path) + if (node.path === this.path) { this.tree = node + } // if we have metadata about this node, and it's a match, then // try to decorate it. @@ -758,18 +804,21 @@ class Shrinkwrap { } addEdge (edge) { - if (!this.yarnLock || !edge.valid) + if (!this.yarnLock || !edge.valid) { return + } const { to: node } = edge // if it's already set up, nothing to do - if (node.resolved !== null && node.integrity !== null) + if (node.resolved !== null && node.integrity !== null) { return + } // if the yarn lock is empty, nothing to do - if (!this.yarnLock.entries || !this.yarnLock.entries.size) + if (!this.yarnLock.entries || !this.yarnLock.entries.size) { return + } // we relativize the path here because that's how it shows up in the lock // XXX how is this different from pathFixed above?? @@ -783,11 +832,13 @@ class Shrinkwrap { if (!entry || mismatch(node.version, entry.version) || mismatch(node.integrity, entry.integrity) || - mismatch(pathFixed, entry.resolved)) + mismatch(pathFixed, entry.resolved)) { return + } - if (entry.resolved && yarnRegRe.test(entry.resolved) && spec.registry) + if (entry.resolved && yarnRegRe.test(entry.resolved) && spec.registry) { entry.resolved = entry.resolved.replace(yarnRegRe, 'https://registry.npmjs.org/') + } node.integrity = node.integrity || entry.integrity || null node.resolved = node.resolved || @@ -804,30 +855,35 @@ class Shrinkwrap { commit () { if (this.tree) { - if (this.yarnLock) + if (this.yarnLock) { this.yarnLock.fromTree(this.tree) + } const root = Shrinkwrap.metaFromNode(this.tree.target, this.path) this.data.packages = {} - if (Object.keys(root).length) + if (Object.keys(root).length) { this.data.packages[''] = root + } for (const node of this.tree.root.inventory.values()) { // only way this.tree is not root is if the root is a link to it - if (node === this.tree || node.isRoot || node.location === '') + if (node === this.tree || node.isRoot || node.location === '') { continue + } const loc = relpath(this.path, node.path) this.data.packages[loc] = Shrinkwrap.metaFromNode(node, this.path) } } else if (this[_awaitingUpdate].size > 0) { - for (const loc of this[_awaitingUpdate].keys()) + for (const loc of this[_awaitingUpdate].keys()) { this[_updateWaitingNode](loc) + } } // hidden lockfiles don't include legacy metadata or a root entry if (this.hiddenLockfile) { delete this.data.packages[''] delete this.data.dependencies - } else if (this.tree) + } else if (this.tree) { this[_buildLegacyLockfile](this.tree, this.data) + } return this.data } @@ -836,8 +892,9 @@ class Shrinkwrap { if (node === this.tree) { // the root node lock.name = node.packageName || node.name - if (node.version) + if (node.version) { lock.version = node.version + } } // npm v6 and before tracked 'from', meaning "the request that led @@ -868,26 +925,29 @@ class Shrinkwrap { const spec = !edge ? rSpec : npa.resolve(node.name, edge.spec, edge.from.realpath) - if (node.isLink) + if (node.isLink) { lock.version = `file:${relpath(this.path, node.realpath)}` - else if (spec && (spec.type === 'file' || spec.type === 'remote')) + } else if (spec && (spec.type === 'file' || spec.type === 'remote')) { lock.version = spec.saveSpec - else if (spec && spec.type === 'git' || rSpec.type === 'git') { + } else if (spec && spec.type === 'git' || rSpec.type === 'git') { lock.version = node.resolved /* istanbul ignore else - don't think there are any cases where a git * spec (or indeed, ANY npa spec) doesn't have a .raw member */ - if (spec.raw) + if (spec.raw) { lock.from = spec.raw + } } else if (!node.isRoot && node.package && node.packageName && - node.packageName !== node.name) + node.packageName !== node.name) { lock.version = `npm:${node.packageName}@${node.version}` - else if (node.package && node.version) + } else if (node.package && node.version) { lock.version = node.version + } - if (node.inDepBundle) + if (node.inDepBundle) { lock.bundled = true + } // when we didn't resolve to git, file, or dir, and didn't request // git, file, dir, or remote, then the resolved value is necessary. @@ -899,77 +959,90 @@ class Shrinkwrap { spec.type !== 'directory' && spec.type !== 'git' && spec.type !== 'file' && - spec.type !== 'remote') + spec.type !== 'remote') { lock.resolved = node.resolved + } - if (node.integrity) + if (node.integrity) { lock.integrity = node.integrity + } - if (node.extraneous) + if (node.extraneous) { lock.extraneous = true - else if (!node.isLink) { - if (node.peer) + } else if (!node.isLink) { + if (node.peer) { lock.peer = true + } - if (node.devOptional && !node.dev && !node.optional) + if (node.devOptional && !node.dev && !node.optional) { lock.devOptional = true + } - if (node.dev) + if (node.dev) { lock.dev = true + } - if (node.optional) + if (node.optional) { lock.optional = true + } } const depender = node.target if (depender.edgesOut.size > 0) { if (node !== this.tree) { - lock.requires = [...depender.edgesOut.entries()].reduce((set, [k, v]) => { + const entries = [...depender.edgesOut.entries()] + lock.requires = entries.reduce((set, [k, v]) => { // omit peer deps from legacy lockfile requires field, because // npm v6 doesn't handle peer deps, and this triggers some bad // behavior if the dep can't be found in the dependencies list. const { spec, peer } = v - if (peer) + if (peer) { return set + } if (spec.startsWith('file:')) { // turn absolute file: paths into relative paths from the node // this especially shows up with workspace edges when the root // node is also a workspace in the set. const p = resolve(node.realpath, spec.substr('file:'.length)) set[k] = `file:${relpath(node.realpath, p)}` - } else + } else { set[k] = spec + } return set }, {}) - } else + } else { lock.requires = true + } } // now we walk the children, putting them in the 'dependencies' object const {children} = node.target - if (!children.size) + if (!children.size) { delete lock.dependencies - else { + } else { const kidPath = [...path, node.realpath] const dependencies = {} // skip any that are already in the descent path, so cyclical link // dependencies don't blow up with ELOOP. let found = false for (const [name, kid] of children.entries()) { - if (path.includes(kid.realpath)) + if (path.includes(kid.realpath)) { continue + } dependencies[name] = this[_buildLegacyLockfile](kid, {}, kidPath) found = true } - if (found) + if (found) { lock.dependencies = dependencies + } } return lock } save (options = {}) { - if (!this.data) + if (!this.data) { throw new Error('run load() before saving data') + } const { format = true } = options const defaultIndent = this.indent || 2 diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/signal-handling.js b/deps/npm/node_modules/@npmcli/arborist/lib/signal-handling.js index 1051cd593970a3..0afbb05dcfc641 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/signal-handling.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/signal-handling.js @@ -13,8 +13,9 @@ const setup = fn => { const sigListeners = { loaded: false } const unload = () => { - if (!sigListeners.loaded) + if (!sigListeners.loaded) { return + } for (const sig of signals) { try { process.removeListener(sig, sigListeners[sig]) @@ -43,8 +44,9 @@ const setup = fn => { // if we exit normally, but caught a signal which would have been fatal, // then re-send it once we're done with whatever cleanup we have to do. unload() - if (process.listeners(sig).length < 1) + if (process.listeners(sig).length < 1) { process.once('beforeExit', onBeforeExit) + } fn({ signal: sig }) } @@ -56,8 +58,9 @@ const setup = fn => { try { // if we call this a bunch of times, avoid triggering the warning const { length } = process.listeners(sig) - if (length >= max) + if (length >= max) { process.setMaxListeners(length + 1) + } process.on(sig, sigListeners[sig]) } catch (er) {} } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/spec-from-lock.js b/deps/npm/node_modules/@npmcli/arborist/lib/spec-from-lock.js index eccf472a96a800..789741976269d3 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/spec-from-lock.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/spec-from-lock.js @@ -5,19 +5,22 @@ const specFromLock = (name, lock, where) => { try { if (lock.version) { const spec = npa.resolve(name, lock.version, where) - if (lock.integrity || spec.type === 'git') + if (lock.integrity || spec.type === 'git') { return spec + } } if (lock.from) { // legacy metadata includes "from", but not integrity const spec = npa.resolve(name, lock.from, where) - if (spec.registry && lock.version) + if (spec.registry && lock.version) { return npa.resolve(name, lock.version, where) - else if (!lock.resolved) + } else if (!lock.resolved) { return spec + } } - if (lock.resolved) + if (lock.resolved) { return npa.resolve(name, lock.resolved, where) + } } catch (_) { } try { return npa.resolve(name, lock.version, where) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/tracker.js b/deps/npm/node_modules/@npmcli/arborist/lib/tracker.js index aefd5fe1bbf58a..b50f06eaa55189 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/tracker.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/tracker.js @@ -11,35 +11,37 @@ module.exports = cls => class Tracker extends cls { addTracker (section, subsection = null, key = null) { // TrackerGroup type object not found - if (!this.log.newGroup) + if (!this.log.newGroup) { return + } - if (section === null || section === undefined) + if (section === null || section === undefined) { this[_onError](`Tracker can't be null or undefined`) + } - if (key === null) + if (key === null) { key = subsection + } const hasTracker = this[_progress].has(section) const hasSubtracker = this[_progress].has(`${section}:${key}`) - if (hasTracker && subsection === null) + if (hasTracker && subsection === null) { // 0. existing tracker, no subsection this[_onError](`Tracker "${section}" already exists`) - - else if (!hasTracker && subsection === null) { + } else if (!hasTracker && subsection === null) { // 1. no existing tracker, no subsection // Create a new tracker from this.log // starts progress bar - if (this[_progress].size === 0) + if (this[_progress].size === 0) { this.log.enableProgress() + } this[_progress].set(section, this.log.newGroup(section)) - } else if (!hasTracker && subsection !== null) + } else if (!hasTracker && subsection !== null) { // 2. no parent tracker and subsection this[_onError](`Parent tracker "${section}" does not exist`) - - else if (!hasTracker || !hasSubtracker) { + } else if (!hasTracker || !hasSubtracker) { // 3. existing parent tracker, no subsection tracker // Create a new subtracker in this[_progress] from parent tracker this[_progress].set(`${section}:${key}`, @@ -52,14 +54,17 @@ module.exports = cls => class Tracker extends cls { finishTracker (section, subsection = null, key = null) { // TrackerGroup type object not found - if (!this.log.newGroup) + if (!this.log.newGroup) { return + } - if (section === null || section === undefined) + if (section === null || section === undefined) { this[_onError](`Tracker can't be null or undefined`) + } - if (key === null) + if (key === null) { key = subsection + } const hasTracker = this[_progress].has(section) const hasSubtracker = this[_progress].has(`${section}:${key}`) @@ -71,8 +76,9 @@ module.exports = cls => class Tracker extends cls { // not have any remaining children const keys = this[_progress].keys() for (const key of keys) { - if (key.match(new RegExp(section + ':'))) + if (key.match(new RegExp(section + ':'))) { this.finishTracker(section, key) + } } // remove parent tracker @@ -81,13 +87,13 @@ module.exports = cls => class Tracker extends cls { // remove progress bar if all // trackers are finished - if (this[_progress].size === 0) + if (this[_progress].size === 0) { this.log.disableProgress() - } else if (!hasTracker && subsection === null) + } + } else if (!hasTracker && subsection === null) { // 1. no existing parent tracker, no subsection this[_onError](`Tracker "${section}" does not exist`) - - else if (!hasTracker || hasSubtracker) { + } else if (!hasTracker || hasSubtracker) { // 2. subtracker exists // Finish subtracker and remove from this[_progress] this[_progress].get(`${section}:${key}`).finish() diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/tree-check.js b/deps/npm/node_modules/@npmcli/arborist/lib/tree-check.js index a7e8d9c0142132..44b5484c68240c 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/tree-check.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/tree-check.js @@ -5,8 +5,9 @@ const checkTree = (tree, checkUnreachable = true) => { // this can only happen in tests where we have a "tree" object // that isn't actually a tree. - if (!tree.root || !tree.root.inventory) + if (!tree.root || !tree.root.inventory) { return tree + } const { inventory } = tree.root const seen = new Set() @@ -21,8 +22,9 @@ const checkTree = (tree, checkUnreachable = true) => { 'root=' + !!(node && node.isRoot), ]) - if (!node || seen.has(node) || node.then) + if (!node || seen.has(node) || node.then) { return + } seen.add(node) @@ -116,14 +118,18 @@ const checkTree = (tree, checkUnreachable = true) => { check(fsParent, node, 'fsParent') check(target, node, 'target') log.push(['CHILDREN', node.location, ...node.children.keys()]) - for (const kid of node.children.values()) + for (const kid of node.children.values()) { check(kid, node, 'children') - for (const kid of node.fsChildren) + } + for (const kid of node.fsChildren) { check(kid, node, 'fsChildren') - for (const link of node.linksIn) + } + for (const link of node.linksIn) { check(link, node, 'linksIn') - for (const top of node.tops) + } + for (const top of node.tops) { check(top, node, 'tops') + } log.push(['DONE', node.location]) } check(tree) diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/version-from-tgz.js b/deps/npm/node_modules/@npmcli/arborist/lib/version-from-tgz.js index 4b433ea636a8b9..d5d8f7345c9bb7 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/version-from-tgz.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/version-from-tgz.js @@ -4,8 +4,9 @@ const {basename} = require('path') const {parse} = require('url') module.exports = (name, tgz) => { const base = basename(tgz) - if (!base.endsWith('.tgz')) + if (!base.endsWith('.tgz')) { return null + } const u = parse(tgz) if (/^https?:/.test(u.protocol)) { @@ -35,8 +36,9 @@ module.exports = (name, tgz) => { } const versionFromBaseScopeName = (base, scope, name) => { - if (!base.startsWith(name + '-')) + if (!base.startsWith(name + '-')) { return null + } const parsed = semver.parse(base.substring(name.length + 1, base.length - 4)) return parsed ? { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js b/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js index 5b1d1dc1ab83d5..da44e7c34d63c5 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/vuln.js @@ -28,8 +28,9 @@ const severities = new Map([ [null, -1], ]) -for (const [name, val] of severities.entries()) +for (const [name, val] of severities.entries()) { severities.set(val, name) +} class Vuln { constructor ({ name, advisory }) { @@ -43,7 +44,7 @@ class Vuln { this[_simpleRange] = null this.nodes = new Set() // assume a fix is available unless it hits a top node - // that locks it in place, setting this to false or {isSemVerMajor, version}. + // that locks it in place, setting this false or {isSemVerMajor, version}. this[_fixAvailable] = true this.addAdvisory(advisory) this.packument = advisory.packument @@ -65,30 +66,35 @@ class Vuln { // - true: fix does not require -f for (const v of this.via) { // don't blow up on loops - if (v.fixAvailable === f) + if (v.fixAvailable === f) { continue + } - if (f === false) + if (f === false) { v.fixAvailable = f - else if (v.fixAvailable === true) + } else if (v.fixAvailable === true) { v.fixAvailable = f - else if (typeof f === 'object' && ( - typeof v.fixAvailable !== 'object' || !v.fixAvailable.isSemVerMajor)) + } else if (typeof f === 'object' && ( + typeof v.fixAvailable !== 'object' || !v.fixAvailable.isSemVerMajor)) { v.fixAvailable = f + } } } testSpec (spec) { const specObj = npa(spec) - if (!specObj.registry) + if (!specObj.registry) { return true + } - if (specObj.subSpec) + if (specObj.subSpec) { spec = specObj.subSpec.rawSpec + } for (const v of this.versions) { - if (satisfies(v, spec) && !satisfies(v, this.range, semverOpt)) + if (satisfies(v, spec) && !satisfies(v, this.range, semverOpt)) { return false + } } return true } @@ -135,14 +141,16 @@ class Vuln { this[_range] = null this[_simpleRange] = null // refresh severity - for (const advisory of this.advisories) + for (const advisory of this.advisories) { this.addAdvisory(advisory) + } // remove any effects that are no longer relevant const vias = new Set([...this.advisories].map(a => a.dependency)) for (const via of this.via) { - if (!vias.has(via.name)) + if (!vias.has(via.name)) { this.deleteVia(via) + } } } @@ -151,8 +159,9 @@ class Vuln { const sev = severities.get(advisory.severity) this[_range] = null this[_simpleRange] = null - if (sev > severities.get(this.severity)) + if (sev > severities.get(this.severity)) { this.severity = advisory.severity + } } get range () { @@ -161,8 +170,9 @@ class Vuln { } get simpleRange () { - if (this[_simpleRange] && this[_simpleRange] === this[_range]) + if (this[_simpleRange] && this[_simpleRange] === this[_range]) { return this[_simpleRange] + } const versions = [...this.advisories][0].versions const range = this.range @@ -171,12 +181,14 @@ class Vuln { } isVulnerable (node) { - if (this.nodes.has(node)) + if (this.nodes.has(node)) { return true + } const { version } = node.package - if (!version) + if (!version) { return false + } for (const v of this.advisories) { if (v.testVersion(version)) { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/yarn-lock.js b/deps/npm/node_modules/@npmcli/arborist/lib/yarn-lock.js index e237cc5c6a4614..384ba447d72faa 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/yarn-lock.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/yarn-lock.js @@ -82,13 +82,15 @@ class YarnLock { const linere = /([^\r\n]*)\r?\n/gm let match let lineNum = 0 - if (!/\n$/.test(data)) + if (!/\n$/.test(data)) { data += '\n' + } while (match = linere.exec(data)) { const line = match[1] lineNum++ - if (line.charAt(0) === '#') + if (line.charAt(0) === '#') { continue + } if (line === '') { this.endCurrent() continue @@ -117,8 +119,9 @@ class YarnLock { const metadata = this.splitQuoted(line.trimLeft(), ' ') if (metadata.length === 2) { // strip off the legacy shasum hashes - if (metadata[0] === 'resolved') + if (metadata[0] === 'resolved') { metadata[1] = metadata[1].replace(/#.*/, '') + } this.current[metadata[0]] = metadata[1] continue } @@ -141,9 +144,9 @@ class YarnLock { let o = 0 for (let i = 0; i < split.length; i++) { const chunk = split[i] - if (/^".*"$/.test(chunk)) + if (/^".*"$/.test(chunk)) { out[o++] = chunk.trim().slice(1, -1) - else if (/^"/.test(chunk)) { + } else if (/^"/.test(chunk)) { let collect = chunk.trimLeft().slice(1) while (++i < split.length) { const n = split[i] @@ -152,12 +155,14 @@ class YarnLock { if (/[^\\](\\\\)*"$/.test(n)) { collect += n.trimRight().slice(0, -1) break - } else + } else { collect += n + } } out[o++] = collect - } else + } else { out[o++] = chunk.trim() + } } return out } @@ -226,17 +231,19 @@ class YarnLock { // no previous entry for this spec at all, so it's new if (!prev) { // if we saw a match already, then assign this spec to it as well - if (priorEntry) + if (priorEntry) { priorEntry.addSpec(s) - else + } else { newSpecs.push(s) + } continue } const m = match(prev, n) // there was a prior entry, but a different thing. skip this one - if (!m) + if (!m) { continue + } // previous matches, but first time seeing it, so already has this spec. // go ahead and add all the previously unseen specs, though @@ -259,8 +266,9 @@ class YarnLock { // if we never found a matching prior, then this is a whole new thing if (!priorEntry) { const entry = Object.assign(new YarnLockEntry(newSpecs), n) - for (const s of newSpecs) + for (const s of newSpecs) { this.entries.set(s, entry) + } } else { // pick up any new info that we got for this node, so that we can // decorate with integrity/resolved/etc. @@ -270,12 +278,15 @@ class YarnLock { entryDataFromNode (node) { const n = {} - if (node.package.dependencies) + if (node.package.dependencies) { n.dependencies = node.package.dependencies - if (node.package.optionalDependencies) + } + if (node.package.optionalDependencies) { n.optionalDependencies = node.package.optionalDependencies - if (node.version) + } + if (node.version) { n.version = node.version + } if (node.resolved) { n.resolved = consistentResolve( node.resolved, @@ -284,8 +295,9 @@ class YarnLock { true ) } - if (node.integrity) + if (node.integrity) { n.integrity = node.integrity + } return n } diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json index 42ec2eca3b3106..5d0e31af975d2f 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": "2.8.2", + "version": "2.8.3", "description": "Manage node_modules trees", "dependencies": { "@npmcli/installed-package-contents": "^1.0.7", @@ -36,13 +36,9 @@ "walk-up-path": "^1.0.0" }, "devDependencies": { + "@npmcli/lint": "^1.0.2", "benchmark": "^2.1.4", "chalk": "^4.1.0", - "eslint": "^7.9.0", - "eslint-plugin-import": "^2.22.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.1", "minify-registry-metadata": "^2.1.0", "tap": "^15.0.9", "tcompare": "^5.0.6" @@ -50,18 +46,19 @@ "scripts": { "test": "npm run test-only --", "test-only": "tap", - "posttest": "npm run lint", + "posttest": "npm run lint --", "snap": "tap", - "postsnap": "npm run lintfix", + "postsnap": "npm run lintfix --", "test-proxy": "ARBORIST_TEST_PROXY=1 tap --snapshot", "preversion": "npm test", "postversion": "npm publish", "prepublishOnly": "git push origin --follow-tags", "eslint": "eslint", - "lint": "npm run eslint -- \"lib/**/*.js\" \"test/arborist/*.js\" \"test/*.js\" \"bin/**/*.js\"", + "lint": "npm run npmclilint -- \"lib/**/*.*js\" \"bin/**/*.*js\" \"test/*.*js\" \"test/arborist/*.*js\"", "lintfix": "npm run lint -- --fix", "benchmark": "node scripts/benchmark.js", - "benchclean": "rm -rf scripts/benchmark/*/" + "benchclean": "rm -rf scripts/benchmark/*/", + "npmclilint": "npmcli-lint" }, "repository": { "type": "git", diff --git a/deps/npm/node_modules/@npmcli/config/lib/set-envs.js b/deps/npm/node_modules/@npmcli/config/lib/set-envs.js index 370a2f3ffd34bf..8eed0221ba80ec 100644 --- a/deps/npm/node_modules/@npmcli/config/lib/set-envs.js +++ b/deps/npm/node_modules/@npmcli/config/lib/set-envs.js @@ -86,6 +86,8 @@ const setEnvs = (config) => { // also set some other common nice envs that we want to rely on env.HOME = config.home + env.npm_config_global_prefix = config.globalPrefix + env.npm_config_local_prefix = config.localPrefix if (cliConf.editor) env.EDITOR = cliConf.editor diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json index f80669640ebd4e..b31eecbe359797 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": "2.2.0", + "version": "2.3.0", "files": [ "lib" ], diff --git a/deps/npm/node_modules/are-we-there-yet/CHANGES.md b/deps/npm/node_modules/are-we-there-yet/CHANGES.md deleted file mode 100644 index 21f3b1c1284523..00000000000000 --- a/deps/npm/node_modules/are-we-there-yet/CHANGES.md +++ /dev/null @@ -1,37 +0,0 @@ -Hi, figured we could actually use a changelog now: - -## 1.1.5 2018-05-24 - -* [#92](https://github.com/iarna/are-we-there-yet/pull/92) Fix bug where - `finish` would throw errors when including `TrackerStream` objects in - `TrackerGroup` collections. (@brianloveswords) - -## 1.1.4 2017-04-21 - -* Fix typo in package.json - -## 1.1.3 2017-04-21 - -* Improve documentation and limit files included in the distribution. - -## 1.1.2 2016-03-15 - -* Add tracker group cycle detection and tests for it - -## 1.1.1 2016-01-29 - -* Fix a typo in stream completion tracker - -## 1.1.0 2016-01-29 - -* Rewrote completion percent computation to be low impact– no more walking a - tree of completion groups every time we need this info. Previously, with - medium sized tree of completion groups, even a relatively modest number of - calls to the top level `completed()` method would result in absurd numbers - of calls overall as it walked down the tree. We now, instead, keep track as - we bubble up changes, so the computation is limited to when data changes and - to the depth of that one branch, instead of _every_ node. (Plus, we were already - incurring _this_ cost, since we already bubbled out changes.) -* Moved different tracker types out to their own files. -* Made tests test for TOO MANY events too. -* Standarized the source code formatting diff --git a/deps/npm/node_modules/are-we-there-yet/LICENSE b/deps/npm/node_modules/are-we-there-yet/LICENSE deleted file mode 100644 index af4588069db82d..00000000000000 --- a/deps/npm/node_modules/are-we-there-yet/LICENSE +++ /dev/null @@ -1,5 +0,0 @@ -Copyright (c) 2015, Rebecca Turner - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/are-we-there-yet/LICENSE.md b/deps/npm/node_modules/are-we-there-yet/LICENSE.md new file mode 100644 index 00000000000000..845be76f64e789 --- /dev/null +++ b/deps/npm/node_modules/are-we-there-yet/LICENSE.md @@ -0,0 +1,18 @@ +ISC License + +Copyright npm, 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 NPM DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL NPM BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE +USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/are-we-there-yet/index.js b/deps/npm/node_modules/are-we-there-yet/lib/index.js similarity index 100% rename from deps/npm/node_modules/are-we-there-yet/index.js rename to deps/npm/node_modules/are-we-there-yet/lib/index.js diff --git a/deps/npm/node_modules/are-we-there-yet/tracker-base.js b/deps/npm/node_modules/are-we-there-yet/lib/tracker-base.js similarity index 100% rename from deps/npm/node_modules/are-we-there-yet/tracker-base.js rename to deps/npm/node_modules/are-we-there-yet/lib/tracker-base.js diff --git a/deps/npm/node_modules/are-we-there-yet/tracker-group.js b/deps/npm/node_modules/are-we-there-yet/lib/tracker-group.js similarity index 88% rename from deps/npm/node_modules/are-we-there-yet/tracker-group.js rename to deps/npm/node_modules/are-we-there-yet/lib/tracker-group.js index 9759e1226db046..9da13f8a7e116a 100644 --- a/deps/npm/node_modules/are-we-there-yet/tracker-group.js +++ b/deps/npm/node_modules/are-we-there-yet/lib/tracker-group.js @@ -19,7 +19,9 @@ util.inherits(TrackerGroup, TrackerBase) function bubbleChange (trackerGroup) { return function (name, completed, tracker) { trackerGroup.completion[tracker.id] = completed - if (trackerGroup.finished) return + if (trackerGroup.finished) { + return + } trackerGroup.emit('change', name || trackerGroup.name, trackerGroup.completed(), trackerGroup) } } @@ -53,17 +55,22 @@ TrackerGroup.prototype.addUnit = function (unit, weight) { this.trackers.push(unit) this.completion[unit.id] = unit.completed() unit.on('change', this.bubbleChange) - if (!this.finished) this.emit('change', unit.name, this.completion[unit.id], unit) + if (!this.finished) { + this.emit('change', unit.name, this.completion[unit.id], unit) + } return unit } TrackerGroup.prototype.completed = function () { - if (this.trackers.length === 0) return 0 + if (this.trackers.length === 0) { + return 0 + } var valPerWeight = 1 / this.totalWeight var completed = 0 for (var ii = 0; ii < this.trackers.length; ii++) { var trackerId = this.trackers[ii].id - completed += valPerWeight * this.weight[trackerId] * this.completion[trackerId] + completed += + valPerWeight * this.weight[trackerId] * this.completion[trackerId] } return completed } @@ -82,7 +89,9 @@ TrackerGroup.prototype.newStream = function (name, todo, weight) { TrackerGroup.prototype.finish = function () { this.finished = true - if (!this.trackers.length) this.addUnit(new Tracker(), 1, true) + if (!this.trackers.length) { + this.addUnit(new Tracker(), 1, true) + } for (var ii = 0; ii < this.trackers.length; ii++) { var tracker = this.trackers[ii] tracker.finish() diff --git a/deps/npm/node_modules/are-we-there-yet/tracker-stream.js b/deps/npm/node_modules/are-we-there-yet/lib/tracker-stream.js similarity index 100% rename from deps/npm/node_modules/are-we-there-yet/tracker-stream.js rename to deps/npm/node_modules/are-we-there-yet/lib/tracker-stream.js diff --git a/deps/npm/node_modules/are-we-there-yet/tracker.js b/deps/npm/node_modules/are-we-there-yet/lib/tracker.js similarity index 90% rename from deps/npm/node_modules/are-we-there-yet/tracker.js rename to deps/npm/node_modules/are-we-there-yet/lib/tracker.js index 68c2339b45409a..a8f8b3ba013915 100644 --- a/deps/npm/node_modules/are-we-there-yet/tracker.js +++ b/deps/npm/node_modules/are-we-there-yet/lib/tracker.js @@ -20,7 +20,9 @@ Tracker.prototype.addWork = function (work) { Tracker.prototype.completeWork = function (work) { this.workDone += work - if (this.workDone > this.workTodo) this.workDone = this.workTodo + if (this.workDone > this.workTodo) { + this.workDone = this.workTodo + } this.emit('change', this.name, this.completed(), this) } diff --git a/deps/npm/node_modules/are-we-there-yet/package.json b/deps/npm/node_modules/are-we-there-yet/package.json index c5990c9bdc5b22..d3901a86d67c67 100644 --- a/deps/npm/node_modules/are-we-there-yet/package.json +++ b/deps/npm/node_modules/are-we-there-yet/package.json @@ -1,35 +1,53 @@ { "name": "are-we-there-yet", - "version": "1.1.5", + "version": "1.1.6", "description": "Keep track of the overall completion of many disparate processes", - "main": "index.js", + "main": "lib/index.js", "scripts": { - "test": "standard && tap test/*.js" + "test": "tap", + "npmclilint": "npmcli-lint", + "lint": "eslint '**/*.js'", + "lintfix": "npm run lint -- --fix", + "posttest": "npm run lint", + "postsnap": "npm run lintfix --", + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags", + "snap": "tap" }, "repository": { "type": "git", - "url": "https://github.com/iarna/are-we-there-yet.git" + "url": "https://github.com/npm/are-we-there-yet.git" }, - "author": "Rebecca Turner (http://re-becca.org)", + "author": "GitHub Inc.", "license": "ISC", "bugs": { - "url": "https://github.com/iarna/are-we-there-yet/issues" + "url": "https://github.com/npm/are-we-there-yet/issues" }, - "homepage": "https://github.com/iarna/are-we-there-yet", + "homepage": "https://github.com/npm/are-we-there-yet", "devDependencies": { - "standard": "^11.0.1", - "tap": "^12.0.1" + "@npmcli/eslint-config": "^1.0.0", + "@npmcli/template-oss": "^1.0.2", + "eslint": "^7.32.0", + "eslint-plugin-node": "^11.1.0", + "tap": "^15.0.9" }, "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^3.6.0" }, "files": [ - "index.js", - "tracker-base.js", - "tracker-group.js", - "tracker-stream.js", - "tracker.js", - "CHANGES.md" - ] + "bin", + "lib" + ], + "engines": { + "node": ">=10" + }, + "tap": { + "branches": 68, + "statements": 92, + "functions": 86, + "lines": 92 + }, + "templateVersion": "1.0.2" } diff --git a/deps/npm/node_modules/init-package-json/LICENSE b/deps/npm/node_modules/init-package-json/LICENSE deleted file mode 100644 index 05eeeb88c2ef4c..00000000000000 --- a/deps/npm/node_modules/init-package-json/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/init-package-json/LICENSE.md b/deps/npm/node_modules/init-package-json/LICENSE.md new file mode 100644 index 00000000000000..845be76f64e789 --- /dev/null +++ b/deps/npm/node_modules/init-package-json/LICENSE.md @@ -0,0 +1,18 @@ +ISC License + +Copyright npm, 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 NPM DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL NPM BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE +USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/init-package-json/default-input.js b/deps/npm/node_modules/init-package-json/lib/default-input.js similarity index 64% rename from deps/npm/node_modules/init-package-json/default-input.js rename to deps/npm/node_modules/init-package-json/lib/default-input.js index d1f65841d6c5a3..0003472975760b 100644 --- a/deps/npm/node_modules/init-package-json/default-input.js +++ b/deps/npm/node_modules/init-package-json/lib/default-input.js @@ -1,5 +1,5 @@ +/* eslint-disable no-undef */ var fs = require('fs') -var glob = require('glob') var path = require('path') var validateLicense = require('validate-npm-package-license') var validateName = require('validate-npm-package-name') @@ -15,35 +15,57 @@ function niceName (n) { return n.replace(/^node-|[.-]js$/g, '').replace(/\s+/g, ' ').replace(/ /g, '-').toLowerCase() } -function readDeps (test, excluded) { return function (cb) { - fs.readdir('node_modules', function (er, dir) { - if (er) return cb() - var deps = {} - var n = dir.length - if (n === 0) return cb(null, deps) - dir.forEach(function (d) { - if (d.match(/^\./)) return next() - if (test !== isTestPkg(d) || excluded[d]) - return next() - - var dp = path.join(dirname, 'node_modules', d, 'package.json') - fs.readFile(dp, 'utf8', function (er, p) { - if (er) return next() - try { p = JSON.parse(p) } - catch (e) { return next() } - if (!p.version) return next() - if (p._requiredBy) { - if (!p._requiredBy.some(function (req) { return req === '#USER' })) return next() +function readDeps (test, excluded) { + return function (cb) { + fs.readdir('node_modules', function (er, dir) { + if (er) { + return cb() + } + var deps = {} + var n = dir.length + if (n === 0) { + return cb(null, deps) + } + dir.forEach(function (d) { + if (d.match(/^\./)) { + return next() + } + if (test !== isTestPkg(d) || excluded[d]) { + return next() } - deps[d] = config.get('save-exact') ? p.version : config.get('save-prefix') + p.version - return next() + + var dp = path.join(dirname, 'node_modules', d, 'package.json') + fs.readFile(dp, 'utf8', function (er, p) { + if (er) { + return next() + } + try { + p = JSON.parse(p) + } catch (e) { + return next() + } + if (!p.version) { + return next() + } + if (p._requiredBy) { + if (!p._requiredBy.some(function (req) { + return req === '#USER' + })) { + return next() + } + } + deps[d] = config.get('save-exact') ? p.version : config.get('save-prefix') + p.version + return next() + }) }) + function next () { + if (--n === 0) { + return cb(null, deps) + } + } }) - function next () { - if (--n === 0) return cb(null, deps) - } - }) -}} + } +} var name = niceName(package.name || basename) var spec @@ -54,16 +76,20 @@ try { } var scope = config.get('scope') if (scope) { - if (scope.charAt(0) !== '@') scope = '@' + scope + if (scope.charAt(0) !== '@') { + scope = '@' + scope + } if (spec.scope) { name = scope + '/' + spec.name.split('/')[1] } else { name = scope + '/' + name } } -exports.name = yes ? name : prompt('package name', name, function (data) { +exports.name = yes ? name : prompt('package name', name, function (data) { var its = validateName(data) - if (its.validForNewPackages) return data + if (its.validForNewPackages) { + return data + } var errors = (its.errors || []).concat(its.warnings || []) var er = new Error('Sorry, ' + errors.join(' and ') + '.') er.notValid = true @@ -83,7 +109,9 @@ var version = package.version || exports.version = yes ? version : prompt('version', version, function (version) { - if (semver.valid(version)) return version + if (semver.valid(version)) { + return version + } var er = new Error('Invalid version: "' + version + '"') er.notValid = true return er @@ -96,22 +124,25 @@ if (!package.description) { if (!package.main) { exports.main = function (cb) { fs.readdir(dirname, function (er, f) { - if (er) f = [] + if (er) { + f = [] + } f = f.filter(function (f) { return f.match(/\.js$/) }) - if (f.indexOf('index.js') !== -1) + if (f.indexOf('index.js') !== -1) { f = 'index.js' - else if (f.indexOf('main.js') !== -1) + } else if (f.indexOf('main.js') !== -1) { f = 'main.js' - else if (f.indexOf(basename + '.js') !== -1) + } else if (f.indexOf(basename + '.js') !== -1) { f = basename + '.js' - else + } else { f = f[0] + } - var index = f || 'index.js' + var index = f || 'index.js' return cb(null, yes ? index : prompt('entry point', index)) }) } @@ -121,18 +152,24 @@ if (!package.bin) { exports.bin = function (cb) { fs.readdir(path.resolve(dirname, 'bin'), function (er, d) { // no bins - if (er) return cb() + if (er) { + return cb() + } // just take the first js file we find there, or nada - return cb(null, d.filter(function (f) { - return f.match(/\.js$/) - })[0]) + let r = d.find(f => f.match(/\.js$/)) + if (r) { + r = `bin/${r}` + } + return cb(null, r) }) } } exports.directories = function (cb) { fs.readdir(dirname, function (er, dirs) { - if (er) return cb(er) + if (er) { + return cb(er) + } var res = {} dirs.forEach(function (d) { switch (d) { @@ -143,7 +180,9 @@ exports.directories = function (cb) { case 'lib': return res.lib = d } }) - if (Object.keys(res).length === 0) res = undefined + if (Object.keys(res).length === 0) { + res = undefined + } return cb(null, res) }) } @@ -173,13 +212,15 @@ function setupScripts (d, cb) { } if (!s.test || s.test === notest) { var commands = { - 'tap':'tap test/*.js' - , 'expresso':'expresso test' - , 'mocha':'mocha' + tap: 'tap test/*.js', + expresso: 'expresso test', + mocha: 'mocha', } var command Object.keys(commands).forEach(function (k) { - if (d.indexOf(k) !== -1) command = commands[k] + if (d.indexOf(k) !== -1) { + command = commands[k] + } }) var ps = 'test command' if (yes) { @@ -201,12 +242,18 @@ if (!package.repository) { var i = gconf.indexOf('[remote "origin"]') if (i !== -1) { var u = gconf[i + 1] - if (!u.match(/^\s*url =/)) u = gconf[i + 2] - if (!u.match(/^\s*url =/)) u = null - else u = u.replace(/^\s*url = /, '') + if (!u.match(/^\s*url =/)) { + u = gconf[i + 2] + } + if (!u.match(/^\s*url =/)) { + u = null + } else { + u = u.replace(/^\s*url = /, '') + } } - if (u && u.match(/^git@github.com:/)) + if (u && u.match(/^git@github.com:/)) { u = u.replace(/^git@github.com:/, 'https://github.com/') + } return cb(null, yes ? u : prompt('git repository', u)) }) @@ -215,9 +262,15 @@ if (!package.repository) { if (!package.keywords) { exports.keywords = yes ? '' : prompt('keywords', function (s) { - if (!s) return undefined - if (Array.isArray(s)) s = s.join(' ') - if (typeof s !== 'string') return s + if (!s) { + return undefined + } + if (Array.isArray(s)) { + s = s.join(' ') + } + if (typeof s !== 'string') { + return s + } return s.split(/[\s,]+/) }) } @@ -225,15 +278,15 @@ if (!package.keywords) { if (!package.author) { exports.author = config.get('init.author.name') || config.get('init-author-name') - ? { - "name" : config.get('init.author.name') || + ? { + name: config.get('init.author.name') || config.get('init-author-name'), - "email" : config.get('init.author.email') || + email: config.get('init.author.email') || config.get('init-author-email'), - "url" : config.get('init.author.url') || - config.get('init-author-url') + url: config.get('init.author.url') || + config.get('init-author-url'), } - : yes ? '' : prompt('author') + : yes ? '' : prompt('author') } const defaultDottedInitLicense = config && @@ -248,7 +301,9 @@ var license = package.license || 'ISC' exports.license = yes ? license : prompt('license', license, function (data) { var its = validateLicense(data) - if (its.validForNewPackages) return data + if (its.validForNewPackages) { + return data + } var errors = (its.errors || []).concat(its.warnings || []) var er = new Error('Sorry, ' + errors.join(' and ') + '.') er.notValid = true diff --git a/deps/npm/node_modules/init-package-json/init-package-json.js b/deps/npm/node_modules/init-package-json/lib/init-package-json.js similarity index 79% rename from deps/npm/node_modules/init-package-json/init-package-json.js rename to deps/npm/node_modules/init-package-json/lib/init-package-json.js index 83e7342d0aa4f4..bee79351caab3f 100644 --- a/deps/npm/node_modules/init-package-json/init-package-json.js +++ b/deps/npm/node_modules/init-package-json/lib/init-package-json.js @@ -12,7 +12,6 @@ var read = require('read') // to validate the data object at the end as a worthwhile package // and assign default values for things. -// readJson.extras(file, data, cb) var readJson = require('read-package-json') function yes (conf) { @@ -23,8 +22,10 @@ function yes (conf) { } function init (dir, input, config, cb) { - if (typeof config === 'function') - cb = config, config = {} + if (typeof config === 'function') { + cb = config + config = {} + } // accept either a plain-jane object, or a config object // with a "get" method. @@ -36,7 +37,7 @@ function init (dir, input, config, cb) { }, toJSON: function () { return data - } + }, } } @@ -52,14 +53,18 @@ function init (dir, input, config, cb) { readJson(packageFile, function (er, d) { readJson.extraSet = es - if (er) pkg = {} - else pkg = d + if (er) { + pkg = {} + } else { + pkg = d + } ctx.filename = packageFile ctx.dirname = path.dirname(packageFile) ctx.basename = path.basename(ctx.dirname) - if (!pkg.version || !semver.valid(pkg.version)) + if (!pkg.version || !semver.valid(pkg.version)) { delete pkg.version + } ctx.package = pkg ctx.config = config || {} @@ -71,7 +76,9 @@ function init (dir, input, config, cb) { pz.on('error', cb) pz.on('data', function (data) { Object.keys(data).forEach(function (k) { - if (data[k] !== undefined && data[k] !== null) pkg[k] = data[k] + if (data[k] !== undefined && data[k] !== null) { + pkg[k] = data[k] + } }) // only do a few of these. @@ -81,8 +88,10 @@ function init (dir, input, config, cb) { return fn.name !== 'authors' && fn.name !== 'mans' }) readJson.extras(packageFile, pkg, function (er, pkg) { + if (er) { + return cb(er, pkg) + } readJson.extraSet = es - if (er) return cb(er, pkg) pkg = unParsePeople(pkg) // no need for the readme now. delete pkg.readme @@ -95,13 +104,15 @@ function init (dir, input, config, cb) { delete pkg.gitHead // if the repo is empty, remove it. - if (!pkg.repository) + if (!pkg.repository) { delete pkg.repository + } // readJson filters out empty descriptions, but init-package-json // traditionally leaves them alone - if (!pkg.description) + if (!pkg.description) { pkg.description = data.description + } var d = JSON.stringify(updateDeps(pkg), null, 2) + '\n' function write (yes) { @@ -116,7 +127,7 @@ function init (dir, input, config, cb) { return write(true) } console.log('About to write to %s:\n\n%s\n', packageFile, d) - read({prompt:'Is this OK? ', default: 'yes'}, function (er, ok) { + read({prompt: 'Is this OK? ', default: 'yes'}, function (er, ok) { if (er) { return cb(er) } @@ -129,18 +140,19 @@ function init (dir, input, config, cb) { }) }) }) - } -function updateDeps(depsData) { +function updateDeps (depsData) { // optionalDependencies don't need to be repeated in two places if (depsData.dependencies) { if (depsData.optionalDependencies) { - for (const name of Object.keys(depsData.optionalDependencies)) + for (const name of Object.keys(depsData.optionalDependencies)) { delete depsData.dependencies[name] + } } - if (Object.keys(depsData.dependencies).length === 0) + if (Object.keys(depsData.dependencies).length === 0) { delete depsData.dependencies + } } return depsData @@ -148,21 +160,25 @@ function updateDeps(depsData) { // turn the objects into somewhat more humane strings. function unParsePeople (data) { - if (data.author) data.author = unParsePerson(data.author) - ;["maintainers", "contributors"].forEach(function (set) { - if (!Array.isArray(data[set])) return; + if (data.author) { + data.author = unParsePerson(data.author) + }['maintainers', 'contributors'].forEach(function (set) { + if (!Array.isArray(data[set])) { + return + } data[set] = data[set].map(unParsePerson) }) return data } function unParsePerson (person) { - if (typeof person === "string") return person - var name = person.name || "" + if (typeof person === 'string') { + return person + } + var name = person.name || '' var u = person.url || person.web - var url = u ? (" ("+u+")") : "" + var url = u ? (' (' + u + ')') : '' var e = person.email || person.mail - var email = e ? (" <"+e+">") : "" - return name+email+url + var email = e ? (' <' + e + '>') : '' + return name + email + url } - diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json index 0e07f48f49746d..6d642f6cf6879f 100644 --- a/deps/npm/node_modules/init-package-json/package.json +++ b/deps/npm/node_modules/init-package-json/package.json @@ -1,41 +1,46 @@ { "name": "init-package-json", - "version": "2.0.4", - "main": "init-package-json.js", + "version": "2.0.5", + "main": "lib/init-package-json.js", "scripts": { "test": "tap", "preversion": "npm test", "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags" + "prepublishOnly": "git push origin --follow-tags", + "lint": "eslint '**/*.js'", + "postlint": "npm-template-check", + "lintfix": "npm run lint -- --fix", + "snap": "tap", + "posttest": "npm run lint" }, "repository": { "type": "git", "url": "https://github.com/npm/init-package-json.git" }, - "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "author": "GitHub Inc.", "license": "ISC", "description": "A node module to get your node module started", "dependencies": { - "glob": "^7.1.1", - "npm-package-arg": "^8.1.2", + "npm-package-arg": "^8.1.5", "promzard": "^0.3.0", "read": "~1.0.1", - "read-package-json": "^4.0.0", + "read-package-json": "^4.1.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^3.0.0" }, "devDependencies": { "@npmcli/config": "^2.1.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2", - "tap": "^14.11.0" + "@npmcli/template-oss": "^1.0.3", + "tap": "^15.0.9" }, "engines": { "node": ">=10" }, "tap": { - "jobs": "1" + "statements": "94", + "branches": "83", + "lines": "94" }, "keywords": [ "init", @@ -48,7 +53,8 @@ "start" ], "files": [ - "default-input.js", - "init-package-json.js" - ] + "bin", + "lib" + ], + "templateVersion": "1.0.3" } diff --git a/deps/npm/node_modules/isarray/Makefile b/deps/npm/node_modules/isarray/Makefile deleted file mode 100644 index 787d56e1e982e4..00000000000000 --- a/deps/npm/node_modules/isarray/Makefile +++ /dev/null @@ -1,6 +0,0 @@ - -test: - @node_modules/.bin/tape test.js - -.PHONY: test - diff --git a/deps/npm/node_modules/isarray/component.json b/deps/npm/node_modules/isarray/component.json deleted file mode 100644 index 9e31b683889015..00000000000000 --- a/deps/npm/node_modules/isarray/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name" : "isarray", - "description" : "Array#isArray for older browsers", - "version" : "0.0.1", - "repository" : "juliangruber/isarray", - "homepage": "https://github.com/juliangruber/isarray", - "main" : "index.js", - "scripts" : [ - "index.js" - ], - "dependencies" : {}, - "keywords": ["browser","isarray","array"], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT" -} diff --git a/deps/npm/node_modules/isarray/index.js b/deps/npm/node_modules/isarray/index.js deleted file mode 100644 index a57f63495943a0..00000000000000 --- a/deps/npm/node_modules/isarray/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; diff --git a/deps/npm/node_modules/isarray/package.json b/deps/npm/node_modules/isarray/package.json deleted file mode 100644 index 1a4317a9c41c73..00000000000000 --- a/deps/npm/node_modules/isarray/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "1.0.0", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tape": "~2.13.4" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "testling": { - "files": "test.js", - "browsers": [ - "ie/8..latest", - "firefox/17..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ] - }, - "scripts": { - "test": "tape test.js" - } -} diff --git a/deps/npm/node_modules/isarray/test.js b/deps/npm/node_modules/isarray/test.js deleted file mode 100644 index e0c3444d85d5c7..00000000000000 --- a/deps/npm/node_modules/isarray/test.js +++ /dev/null @@ -1,20 +0,0 @@ -var isArray = require('./'); -var test = require('tape'); - -test('is array', function(t){ - t.ok(isArray([])); - t.notOk(isArray({})); - t.notOk(isArray(null)); - t.notOk(isArray(false)); - - var obj = {}; - obj[0] = true; - t.notOk(isArray(obj)); - - var arr = []; - arr.foo = 'bar'; - t.ok(isArray(arr)); - - t.end(); -}); - diff --git a/deps/npm/node_modules/minipass-fetch/lib/request.js b/deps/npm/node_modules/minipass-fetch/lib/request.js index 173f415d18e7b4..278b27874eaaca 100644 --- a/deps/npm/node_modules/minipass-fetch/lib/request.js +++ b/deps/npm/node_modules/minipass-fetch/lib/request.js @@ -82,7 +82,7 @@ class Request extends Body { key, passphrase, pfx, - rejectUnauthorized = true, + rejectUnauthorized = process.env.NODE_TLS_REJECT_UNAUTHORIZED !== '0', secureOptions, secureProtocol, servername, diff --git a/deps/npm/node_modules/minipass-fetch/package.json b/deps/npm/node_modules/minipass-fetch/package.json index 64dab7816bd120..1d7d9e47566236 100644 --- a/deps/npm/node_modules/minipass-fetch/package.json +++ b/deps/npm/node_modules/minipass-fetch/package.json @@ -1,6 +1,6 @@ { "name": "minipass-fetch", - "version": "1.3.4", + "version": "1.4.1", "description": "An implementation of window.fetch in Node.js using Minipass streams", "license": "MIT", "main": "lib/index.js", @@ -22,11 +22,10 @@ "form-data": "^2.5.1", "parted": "^0.1.1", "string-to-arraybuffer": "^1.0.2", - "tap": "^14.6.9", + "tap": "^15.0.9", "whatwg-url": "^7.0.0" }, "dependencies": { - "encoding": "^0.1.12", "minipass": "^3.1.0", "minipass-sized": "^1.0.3", "minizlib": "^2.0.0" diff --git a/deps/npm/node_modules/minipass/index.js b/deps/npm/node_modules/minipass/index.js index 56cbd665d2526d..ae134a066d77f0 100644 --- a/deps/npm/node_modules/minipass/index.js +++ b/deps/npm/node_modules/minipass/index.js @@ -1,4 +1,8 @@ 'use strict' +const proc = typeof process === 'object' && process ? process : { + stdout: null, + stderr: null, +} const EE = require('events') const Stream = require('stream') const Yallist = require('yallist') @@ -8,6 +12,7 @@ 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') @@ -66,6 +71,7 @@ module.exports = class Minipass extends Stream { this[EMITTED_END] = false this[EMITTING_END] = false this[CLOSED] = false + this[EMITTED_ERROR] = null this.writable = true this.readable = true this[BUFFERLENGTH] = 0 @@ -310,7 +316,7 @@ module.exports = class Minipass extends Stream { const ended = this[EMITTED_END] opts = opts || {} - if (dest === process.stdout || dest === process.stderr) + if (dest === proc.stdout || dest === proc.stderr) opts.end = false else opts.end = opts.end !== false @@ -339,6 +345,8 @@ module.exports = class Minipass extends Stream { else if (isEndish(ev) && this[EMITTED_END]) { super.emit(ev) this.removeAllListeners(ev) + } else if (ev === 'error' && this[EMITTED_ERROR]) { + fn.call(this, this[EMITTED_ERROR]) } } } @@ -400,6 +408,8 @@ module.exports = class Minipass extends Stream { // don't emit close before 'end' and 'finish' if (!this[EMITTED_END] && !this[DESTROYED]) return + } else if (ev === 'error') { + this[EMITTED_ERROR] = data } // TODO: replace with a spread operator when Node v4 support drops @@ -452,8 +462,8 @@ module.exports = class Minipass extends Stream { promise () { return new Promise((resolve, reject) => { this.on(DESTROYED, () => reject(new Error('stream destroyed'))) - this.on('end', () => resolve()) this.on('error', er => reject(er)) + this.on('end', () => resolve()) }) } diff --git a/deps/npm/node_modules/minipass/package.json b/deps/npm/node_modules/minipass/package.json index 54f62d56d46d86..165fa662ab4a7c 100644 --- a/deps/npm/node_modules/minipass/package.json +++ b/deps/npm/node_modules/minipass/package.json @@ -1,6 +1,6 @@ { "name": "minipass", - "version": "3.1.3", + "version": "3.1.5", "description": "minimal implementation of a PassThrough stream", "main": "index.js", "dependencies": { @@ -8,7 +8,7 @@ }, "devDependencies": { "end-of-stream": "^1.4.0", - "tap": "^14.6.5", + "tap": "^15.0.9", "through2": "^2.0.3" }, "scripts": { diff --git a/deps/npm/node_modules/npmlog/log.js b/deps/npm/node_modules/npmlog/log.js index 069154262e4da9..85ab8a4c7905cf 100644 --- a/deps/npm/node_modules/npmlog/log.js +++ b/deps/npm/node_modules/npmlog/log.js @@ -13,8 +13,9 @@ var stream = process.stderr Object.defineProperty(log, 'stream', { set: function (newStream) { stream = newStream - if (this.gauge) + if (this.gauge) { this.gauge.setWriteTo(stream, stream) + } }, get: function () { return stream @@ -78,20 +79,23 @@ log.setGaugeTemplate = function (template) { } log.enableProgress = function () { - if (this.progressEnabled) + if (this.progressEnabled) { return + } this.progressEnabled = true this.tracker.on('change', this.showProgress) - if (this._paused) + if (this._paused) { return + } this.gauge.enable() } log.disableProgress = function () { - if (!this.progressEnabled) + if (!this.progressEnabled) { return + } this.progressEnabled = false this.tracker.removeListener('change', this.showProgress) this.gauge.disable() @@ -103,19 +107,23 @@ var mixinLog = function (tracker) { // mixin the public methods from log into the tracker // (except: conflicts and one's we handle specially) Object.keys(log).forEach(function (P) { - if (P[0] === '_') + if (P[0] === '_') { return + } if (trackerConstructors.filter(function (C) { return C === P - }).length) + }).length) { return + } - if (tracker[P]) + if (tracker[P]) { return + } - if (typeof log[P] !== 'function') + if (typeof log[P] !== 'function') { return + } var func = log[P] tracker[P] = function () { @@ -143,27 +151,31 @@ trackerConstructors.forEach(function (C) { }) log.clearProgress = function (cb) { - if (!this.progressEnabled) + if (!this.progressEnabled) { return cb && process.nextTick(cb) + } this.gauge.hide(cb) } log.showProgress = function (name, completed) { - if (!this.progressEnabled) + if (!this.progressEnabled) { return + } var values = {} - if (name) + if (name) { values.section = name + } var last = log.record[log.record.length - 1] if (last) { values.subsection = last.prefix var disp = log.disp[last.level] || last.level var logline = this._format(disp, log.style[last.level]) - if (last.prefix) + if (last.prefix) { logline += ' ' + this._format(last.prefix, this.prefixStyle) + } logline += ' ' + last.message.split(/\r?\n/)[0] values.logline = logline @@ -175,13 +187,15 @@ log.showProgress = function (name, completed) { // temporarily stop emitting, but don't drop log.pause = function () { this._paused = true - if (this.progressEnabled) + if (this.progressEnabled) { this.gauge.disable() + } } log.resume = function () { - if (!this._paused) + if (!this._paused) { return + } this._paused = false @@ -190,8 +204,9 @@ log.resume = function () { b.forEach(function (m) { this.emitLog(m) }, this) - if (this.progressEnabled) + if (this.progressEnabled) { this.gauge.enable() + } } log._buffer = [] @@ -220,8 +235,9 @@ log.log = function (lvl, prefix, message) { }) } } - if (stack) + if (stack) { a.unshift(stack + '\n') + } message = util.format.apply(util, a) var m = { @@ -234,8 +250,9 @@ log.log = function (lvl, prefix, message) { this.emit('log', m) this.emit('log.' + lvl, m) - if (m.prefix) + if (m.prefix) { this.emit(m.prefix, m) + } this.record.push(m) var mrs = this.maxRecordSize @@ -253,18 +270,22 @@ log.emitLog = function (m) { this._buffer.push(m) return } - if (this.progressEnabled) + if (this.progressEnabled) { this.gauge.pulse(m.prefix) + } var l = this.levels[m.level] - if (l === undefined) + if (l === undefined) { return + } - if (l < this.levels[this.level]) + if (l < this.levels[this.level]) { return + } - if (l > 0 && !isFinite(l)) + if (l > 0 && !isFinite(l)) { return + } // If 'disp' is null or undefined, use the lvl as a default // Allows: '', 0 as valid disp @@ -277,8 +298,9 @@ log.emitLog = function (m) { } this.write(disp, log.style[m.level]) var p = m.prefix || '' - if (p) + if (p) { this.write(' ') + } this.write(p, this.prefixStyle) this.write(' ' + line + '\n') @@ -287,52 +309,63 @@ log.emitLog = function (m) { } log._format = function (msg, style) { - if (!stream) + if (!stream) { return + } var output = '' if (this.useColor()) { style = style || {} var settings = [] - if (style.fg) + if (style.fg) { settings.push(style.fg) + } - if (style.bg) + if (style.bg) { settings.push('bg' + style.bg[0].toUpperCase() + style.bg.slice(1)) + } - if (style.bold) + if (style.bold) { settings.push('bold') + } - if (style.underline) + if (style.underline) { settings.push('underline') + } - if (style.inverse) + if (style.inverse) { settings.push('inverse') + } - if (settings.length) + if (settings.length) { output += consoleControl.color(settings) + } - if (style.beep) + if (style.beep) { output += consoleControl.beep() + } } output += msg - if (this.useColor()) + if (this.useColor()) { output += consoleControl.color('reset') + } return output } log.write = function (msg, style) { - if (!stream) + if (!stream) { return + } stream.write(this._format(msg, style)) } log.addLevel = function (lvl, n, style, disp) { // If 'disp' is null or undefined, use the lvl as a default - if (disp == null) + if (disp == null) { disp = lvl + } this.levels[lvl] = n this.style[lvl] = style @@ -340,8 +373,9 @@ log.addLevel = function (lvl, n, style, disp) { this[lvl] = function () { var a = new Array(arguments.length + 1) a[0] = lvl - for (var i = 0; i < arguments.length; i++) + for (var i = 0; i < arguments.length; i++) { a[i + 1] = arguments[i] + } return this.log.apply(this, a) }.bind(this) diff --git a/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE.md b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE.md new file mode 100644 index 00000000000000..845be76f64e789 --- /dev/null +++ b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE.md @@ -0,0 +1,18 @@ +ISC License + +Copyright npm, 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 NPM DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL NPM BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE +USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/index.js b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/index.js new file mode 100644 index 00000000000000..57d8743fdad177 --- /dev/null +++ b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/index.js @@ -0,0 +1,4 @@ +'use strict' +exports.TrackerGroup = require('./tracker-group.js') +exports.Tracker = require('./tracker.js') +exports.TrackerStream = require('./tracker-stream.js') diff --git a/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-base.js b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-base.js new file mode 100644 index 00000000000000..6f436875578a7a --- /dev/null +++ b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-base.js @@ -0,0 +1,11 @@ +'use strict' +var EventEmitter = require('events').EventEmitter +var util = require('util') + +var trackerId = 0 +var TrackerBase = module.exports = function (name) { + EventEmitter.call(this) + this.id = ++trackerId + this.name = name +} +util.inherits(TrackerBase, EventEmitter) diff --git a/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-group.js b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-group.js new file mode 100644 index 00000000000000..9da13f8a7e116a --- /dev/null +++ b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-group.js @@ -0,0 +1,116 @@ +'use strict' +var util = require('util') +var TrackerBase = require('./tracker-base.js') +var Tracker = require('./tracker.js') +var TrackerStream = require('./tracker-stream.js') + +var TrackerGroup = module.exports = function (name) { + TrackerBase.call(this, name) + this.parentGroup = null + this.trackers = [] + this.completion = {} + this.weight = {} + this.totalWeight = 0 + this.finished = false + this.bubbleChange = bubbleChange(this) +} +util.inherits(TrackerGroup, TrackerBase) + +function bubbleChange (trackerGroup) { + return function (name, completed, tracker) { + trackerGroup.completion[tracker.id] = completed + if (trackerGroup.finished) { + return + } + trackerGroup.emit('change', name || trackerGroup.name, trackerGroup.completed(), trackerGroup) + } +} + +TrackerGroup.prototype.nameInTree = function () { + var names = [] + var from = this + while (from) { + names.unshift(from.name) + from = from.parentGroup + } + return names.join('/') +} + +TrackerGroup.prototype.addUnit = function (unit, weight) { + if (unit.addUnit) { + var toTest = this + while (toTest) { + if (unit === toTest) { + throw new Error( + 'Attempted to add tracker group ' + + unit.name + ' to tree that already includes it ' + + this.nameInTree(this)) + } + toTest = toTest.parentGroup + } + unit.parentGroup = this + } + this.weight[unit.id] = weight || 1 + this.totalWeight += this.weight[unit.id] + this.trackers.push(unit) + this.completion[unit.id] = unit.completed() + unit.on('change', this.bubbleChange) + if (!this.finished) { + this.emit('change', unit.name, this.completion[unit.id], unit) + } + return unit +} + +TrackerGroup.prototype.completed = function () { + if (this.trackers.length === 0) { + return 0 + } + var valPerWeight = 1 / this.totalWeight + var completed = 0 + for (var ii = 0; ii < this.trackers.length; ii++) { + var trackerId = this.trackers[ii].id + completed += + valPerWeight * this.weight[trackerId] * this.completion[trackerId] + } + return completed +} + +TrackerGroup.prototype.newGroup = function (name, weight) { + return this.addUnit(new TrackerGroup(name), weight) +} + +TrackerGroup.prototype.newItem = function (name, todo, weight) { + return this.addUnit(new Tracker(name, todo), weight) +} + +TrackerGroup.prototype.newStream = function (name, todo, weight) { + return this.addUnit(new TrackerStream(name, todo), weight) +} + +TrackerGroup.prototype.finish = function () { + this.finished = true + if (!this.trackers.length) { + this.addUnit(new Tracker(), 1, true) + } + for (var ii = 0; ii < this.trackers.length; ii++) { + var tracker = this.trackers[ii] + tracker.finish() + tracker.removeListener('change', this.bubbleChange) + } + this.emit('change', this.name, 1, this) +} + +var buffer = ' ' +TrackerGroup.prototype.debug = function (depth) { + depth = depth || 0 + var indent = depth ? buffer.substr(0, depth) : '' + var output = indent + (this.name || 'top') + ': ' + this.completed() + '\n' + this.trackers.forEach(function (tracker) { + if (tracker instanceof TrackerGroup) { + output += tracker.debug(depth + 1) + } else { + output += indent + ' ' + tracker.name + ': ' + tracker.completed() + '\n' + } + }) + return output +} diff --git a/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-stream.js b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-stream.js new file mode 100644 index 00000000000000..e1cf85055702a7 --- /dev/null +++ b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker-stream.js @@ -0,0 +1,36 @@ +'use strict' +var util = require('util') +var stream = require('readable-stream') +var delegate = require('delegates') +var Tracker = require('./tracker.js') + +var TrackerStream = module.exports = function (name, size, options) { + stream.Transform.call(this, options) + this.tracker = new Tracker(name, size) + this.name = name + this.id = this.tracker.id + this.tracker.on('change', delegateChange(this)) +} +util.inherits(TrackerStream, stream.Transform) + +function delegateChange (trackerStream) { + return function (name, completion, tracker) { + trackerStream.emit('change', name, completion, trackerStream) + } +} + +TrackerStream.prototype._transform = function (data, encoding, cb) { + this.tracker.completeWork(data.length ? data.length : 1) + this.push(data) + cb() +} + +TrackerStream.prototype._flush = function (cb) { + this.tracker.finish() + cb() +} + +delegate(TrackerStream.prototype, 'tracker') + .method('completed') + .method('addWork') + .method('finish') diff --git a/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker.js b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker.js new file mode 100644 index 00000000000000..a8f8b3ba013915 --- /dev/null +++ b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/lib/tracker.js @@ -0,0 +1,32 @@ +'use strict' +var util = require('util') +var TrackerBase = require('./tracker-base.js') + +var Tracker = module.exports = function (name, todo) { + TrackerBase.call(this, name) + this.workDone = 0 + this.workTodo = todo || 0 +} +util.inherits(Tracker, TrackerBase) + +Tracker.prototype.completed = function () { + return this.workTodo === 0 ? 0 : this.workDone / this.workTodo +} + +Tracker.prototype.addWork = function (work) { + this.workTodo += work + this.emit('change', this.name, this.completed(), this) +} + +Tracker.prototype.completeWork = function (work) { + this.workDone += work + if (this.workDone > this.workTodo) { + this.workDone = this.workTodo + } + this.emit('change', this.name, this.completed(), this) +} + +Tracker.prototype.finish = function () { + this.workTodo = this.workDone = 1 + this.emit('change', this.name, 1, this) +} diff --git a/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/package.json b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/package.json new file mode 100644 index 00000000000000..5714e09c3b3714 --- /dev/null +++ b/deps/npm/node_modules/npmlog/node_modules/are-we-there-yet/package.json @@ -0,0 +1,53 @@ +{ + "name": "are-we-there-yet", + "version": "2.0.0", + "description": "Keep track of the overall completion of many disparate processes", + "main": "lib/index.js", + "scripts": { + "test": "tap", + "npmclilint": "npmcli-lint", + "lint": "eslint '**/*.js'", + "lintfix": "npm run lint -- --fix", + "posttest": "npm run lint", + "postsnap": "npm run lintfix --", + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags", + "snap": "tap" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/are-we-there-yet.git" + }, + "author": "GitHub Inc.", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/are-we-there-yet/issues" + }, + "homepage": "https://github.com/npm/are-we-there-yet", + "devDependencies": { + "@npmcli/eslint-config": "^1.0.0", + "@npmcli/template-oss": "^1.0.2", + "eslint": "^7.32.0", + "eslint-plugin-node": "^11.1.0", + "tap": "^15.0.9" + }, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "files": [ + "bin", + "lib" + ], + "engines": { + "node": ">=10" + }, + "tap": { + "branches": 68, + "statements": 92, + "functions": 86, + "lines": 92 + }, + "templateVersion": "1.0.2" +} diff --git a/deps/npm/node_modules/npmlog/package.json b/deps/npm/node_modules/npmlog/package.json index 5288b9ca062569..960ea9250d949c 100644 --- a/deps/npm/node_modules/npmlog/package.json +++ b/deps/npm/node_modules/npmlog/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "name": "npmlog", "description": "logger for npm", - "version": "5.0.0", + "version": "5.0.1", "repository": { "type": "git", "url": "https://github.com/npm/npmlog.git" @@ -20,7 +20,7 @@ "postsnap": "npm run lintfix --" }, "dependencies": { - "are-we-there-yet": "^1.1.5", + "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", "gauge": "^3.0.0", "set-blocking": "^2.0.0" diff --git a/deps/npm/node_modules/process-nextick-args/index.js b/deps/npm/node_modules/process-nextick-args/index.js deleted file mode 100644 index 3eecf11488531c..00000000000000 --- a/deps/npm/node_modules/process-nextick-args/index.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -if (typeof process === 'undefined' || - !process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { nextTick: nextTick }; -} else { - module.exports = process -} - -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); - } -} - diff --git a/deps/npm/node_modules/process-nextick-args/license.md b/deps/npm/node_modules/process-nextick-args/license.md deleted file mode 100644 index c67e3532b54245..00000000000000 --- a/deps/npm/node_modules/process-nextick-args/license.md +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2015 Calvin Metcalf - -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/deps/npm/node_modules/process-nextick-args/package.json b/deps/npm/node_modules/process-nextick-args/package.json deleted file mode 100644 index 6070b723fcd347..00000000000000 --- a/deps/npm/node_modules/process-nextick-args/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "process-nextick-args", - "version": "2.0.1", - "description": "process.nextTick but always with args", - "main": "index.js", - "files": [ - "index.js" - ], - "scripts": { - "test": "node test.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/calvinmetcalf/process-nextick-args.git" - }, - "author": "", - "license": "MIT", - "bugs": { - "url": "https://github.com/calvinmetcalf/process-nextick-args/issues" - }, - "homepage": "https://github.com/calvinmetcalf/process-nextick-args", - "devDependencies": { - "tap": "~0.2.6" - } -} diff --git a/deps/npm/node_modules/process-nextick-args/readme.md b/deps/npm/node_modules/process-nextick-args/readme.md deleted file mode 100644 index ecb432c9b21ffd..00000000000000 --- a/deps/npm/node_modules/process-nextick-args/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -process-nextick-args -===== - -[![Build Status](https://travis-ci.org/calvinmetcalf/process-nextick-args.svg?branch=master)](https://travis-ci.org/calvinmetcalf/process-nextick-args) - -```bash -npm install --save process-nextick-args -``` - -Always be able to pass arguments to process.nextTick, no matter the platform - -```js -var pna = require('process-nextick-args'); - -pna.nextTick(function (a, b, c) { - console.log(a, b, c); -}, 'step', 3, 'profit'); -``` diff --git a/deps/npm/node_modules/read-package-json/package.json b/deps/npm/node_modules/read-package-json/package.json index 5ca535cfd14adb..fb263fd711ee7f 100644 --- a/deps/npm/node_modules/read-package-json/package.json +++ b/deps/npm/node_modules/read-package-json/package.json @@ -1,6 +1,6 @@ { "name": "read-package-json", - "version": "4.0.1", + "version": "4.1.1", "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "description": "The thing npm uses to read package.json files with semantics and defaults and validation", "repository": { @@ -12,7 +12,7 @@ "prerelease": "npm t", "postrelease": "npm publish && git push --follow-tags", "release": "standard-version -s", - "test": "tap --nyc-arg=--all --coverage test/*.js --branches 68 --functions 83 --lines 76 --statements 77", + "test": "tap --nyc-arg=--all --coverage test/*.js", "npmclilint": "npmcli-lint", "lint": "npm run npmclilint -- --ignore-pattern test/fixtures \"*.*js\" \"test/**/*.*js\"", "lintfix": "npm run lint -- --fix", @@ -36,5 +36,11 @@ ], "engines": { "node": ">=10" + }, + "tap": { + "branches": 68, + "functions": 83, + "lines": 76, + "statements": 77 } } diff --git a/deps/npm/node_modules/read-package-json/read-json.js b/deps/npm/node_modules/read-package-json/read-json.js index 04d22e3af7e211..468a33e3977742 100644 --- a/deps/npm/node_modules/read-package-json/read-json.js +++ b/deps/npm/node_modules/read-package-json/read-json.js @@ -21,6 +21,7 @@ readJson.extraSet = [ mans, bins, githead, + fillTypes, ] var typoWarned = {} @@ -339,16 +340,17 @@ function readme_ (file, data, rm, cb) { } function mans (file, data, cb) { - var m = data.directories && data.directories.man - if (data.man || !m) { + let cwd = data.directories && data.directories.man + if (data.man || !cwd) { return cb(null, data) } - m = path.resolve(path.dirname(file), m) - glob('**/*.[0-9]', { cwd: m }, function (er, mans) { + const dirname = path.dirname(file) + cwd = path.resolve(path.dirname(file), cwd) + glob('**/*.[0-9]', { cwd }, function (er, mans) { if (er) { return cb(er) } - data.man = mans + data.man = mans.map(man => path.relative(dirname, path.join(cwd, man))) return cb(null, data) }) } @@ -517,6 +519,45 @@ function final (file, data, log, strict, cb) { }) } +function fillTypes (file, data, cb) { + var index = data.main ? data.main : 'index.js' + + // TODO exports is much more complicated than this in verbose format + // We need to support for instance + + // "exports": { + // ".": [ + // { + // "default": "./lib/npm.js" + // }, + // "./lib/npm.js" + // ], + // "./package.json": "./package.json" + // }, + // as well as conditional exports + + // if (data.exports && typeof data.exports === 'string') { + // index = data.exports + // } + + // if (data.exports && data.exports['.']) { + // index = data.exports['.'] + // if (typeof index !== 'string') { + // } + // } + + var extless = + path.join(path.dirname(index), path.basename(index, path.extname(index))) + var dts = `./${extless}.d.ts` + var dtsPath = path.join(path.dirname(file), dts) + var hasDTSFields = 'types' in data || 'typings' in data + if (!hasDTSFields && fs.existsSync(dtsPath)) { + data.types = dts + } + + cb(null, data) +} + function makePackageId (data) { var name = cleanString(data.name) var ver = cleanString(data.version) diff --git a/deps/npm/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/deps/npm/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md deleted file mode 100644 index 83275f192e4077..00000000000000 --- a/deps/npm/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +++ /dev/null @@ -1,60 +0,0 @@ -# streams WG Meeting 2015-01-30 - -## Links - -* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg -* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 -* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ - -## Agenda - -Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. - -* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) -* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) -* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) -* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) - -## Minutes - -### adopt a charter - -* group: +1's all around - -### What versioning scheme should be adopted? -* group: +1’s 3.0.0 -* domenic+group: pulling in patches from other sources where appropriate -* mikeal: version independently, suggesting versions for io.js -* mikeal+domenic: work with TC to notify in advance of changes -simpler stream creation - -### streamline creation of streams -* sam: streamline creation of streams -* domenic: nice simple solution posted - but, we lose the opportunity to change the model - may not be backwards incompatible (double check keys) - - **action item:** domenic will check - -### remove implicit flowing of streams on(‘data’) -* add isFlowing / isPaused -* mikeal: worrying that we’re documenting polyfill methods – confuses users -* domenic: more reflective API is probably good, with warning labels for users -* new section for mad scientists (reflective stream access) -* calvin: name the “third state” -* mikeal: maybe borrow the name from whatwg? -* domenic: we’re missing the “third state” -* consensus: kind of difficult to name the third state -* mikeal: figure out differences in states / compat -* mathias: always flow on data – eliminates third state - * explore what it breaks - -**action items:** -* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) -* ask rod/build for infrastructure -* **chris**: explore the “flow on data” approach -* add isPaused/isFlowing -* add new docs section -* move isPaused to that section - - diff --git a/deps/npm/node_modules/readable-stream/duplex-browser.js b/deps/npm/node_modules/readable-stream/duplex-browser.js deleted file mode 100644 index f8b2db83dbe733..00000000000000 --- a/deps/npm/node_modules/readable-stream/duplex-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/_stream_duplex.js'); diff --git a/deps/npm/node_modules/readable-stream/duplex.js b/deps/npm/node_modules/readable-stream/duplex.js deleted file mode 100644 index 46924cbfdf5387..00000000000000 --- a/deps/npm/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./readable').Duplex diff --git a/deps/npm/node_modules/readable-stream/errors-browser.js b/deps/npm/node_modules/readable-stream/errors-browser.js new file mode 100644 index 00000000000000..fb8e73e1893b10 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/errors-browser.js @@ -0,0 +1,127 @@ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; diff --git a/deps/npm/node_modules/readable-stream/errors.js b/deps/npm/node_modules/readable-stream/errors.js new file mode 100644 index 00000000000000..8471526d6e7f75 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/errors.js @@ -0,0 +1,116 @@ +'use strict'; + +const codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error + } + + function getMessage (arg1, arg2, arg3) { + if (typeof message === 'string') { + return message + } else { + return message(arg1, arg2, arg3) + } + } + + class NodeError extends Base { + constructor (arg1, arg2, arg3) { + super(getMessage(arg1, arg2, arg3)); + } + } + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + + codes[code] = NodeError; +} + +// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + const len = expected.length; + expected = expected.map((i) => String(i)); + if (len > 2) { + return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` + + expected[len - 1]; + } else if (len === 2) { + return `one of ${thing} ${expected[0]} or ${expected[1]}`; + } else { + return `of ${thing} ${expected[0]}`; + } + } else { + return `of ${thing} ${String(expected)}`; + } +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + return str.substring(this_len - search.length, this_len) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"' +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + let determiner; + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + let msg; + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`; + } else { + const type = includes(name, '.') ? 'property' : 'argument'; + msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, 'type')}`; + } + + msg += `. Received type ${typeof actual}`; + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented' +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); + +module.exports.codes = codes; diff --git a/deps/npm/node_modules/readable-stream/experimentalWarning.js b/deps/npm/node_modules/readable-stream/experimentalWarning.js new file mode 100644 index 00000000000000..78e841495bf24d --- /dev/null +++ b/deps/npm/node_modules/readable-stream/experimentalWarning.js @@ -0,0 +1,17 @@ +'use strict' + +var experimentalWarnings = new Set(); + +function emitExperimentalWarning(feature) { + if (experimentalWarnings.has(feature)) return; + var msg = feature + ' is an experimental feature. This feature could ' + + 'change at any time'; + experimentalWarnings.add(feature); + process.emitWarning(msg, 'ExperimentalWarning'); +} + +function noop() {} + +module.exports.emitExperimentalWarning = process.emitWarning + ? emitExperimentalWarning + : noop; diff --git a/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js b/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js index 57003c32d256c0..67525192250f6d 100644 --- a/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js +++ b/deps/npm/node_modules/readable-stream/lib/_stream_duplex.js @@ -18,43 +18,37 @@ // 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. - // a duplex stream is just a stream that is both readable and writable. // Since JS doesn't have multiple prototypal inheritance, this class // prototypally inherits from Readable, and then parasitically from // Writable. - 'use strict'; - /**/ -var pna = require('process-nextick-args'); -/**/ - -/**/ var objectKeys = Object.keys || function (obj) { var keys = []; + for (var key in obj) { keys.push(key); - }return keys; + } + + return keys; }; /**/ -module.exports = Duplex; -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ +module.exports = Duplex; var Readable = require('./_stream_readable'); + var Writable = require('./_stream_writable'); -util.inherits(Duplex, Readable); +require('inherits')(Duplex, Readable); { - // avoid scope creep, the keys array can then be collected + // Allow the keys array to be GC'ed. var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { var method = keys[v]; if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; @@ -63,18 +57,19 @@ util.inherits(Duplex, Readable); function Duplex(options) { if (!(this instanceof Duplex)) return new Duplex(options); - Readable.call(this, options); Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - this.once('end', onend); + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } } Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { @@ -82,20 +77,35 @@ Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function () { + get: function get() { return this._writableState.highWaterMark; } }); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer -// the no-half-open enforcer function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. // But allow more writes to happen in this tick. - pna.nextTick(onEndNT, this); + + process.nextTick(onEndNT, this); } function onEndNT(self) { @@ -103,29 +113,27 @@ function onEndNT(self) { } Object.defineProperty(Duplex.prototype, 'destroyed', { - get: function () { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { if (this._readableState === undefined || this._writableState === undefined) { return false; } + return this._readableState.destroyed && this._writableState.destroyed; }, - set: function (value) { + set: function set(value) { // we ignore the value if the stream // has not been initialized yet if (this._readableState === undefined || this._writableState === undefined) { return; - } - - // backward compatibility, the user is explicitly + } // backward compatibility, the user is explicitly // managing destroyed + + this._readableState.destroyed = value; this._writableState.destroyed = value; } -}); - -Duplex.prototype._destroy = function (err, cb) { - this.push(null); - this.end(); - - pna.nextTick(cb, err); -}; \ No newline at end of file +}); \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/_stream_passthrough.js b/deps/npm/node_modules/readable-stream/lib/_stream_passthrough.js index 612edb4d8b443f..32e7414c5a8271 100644 --- a/deps/npm/node_modules/readable-stream/lib/_stream_passthrough.js +++ b/deps/npm/node_modules/readable-stream/lib/_stream_passthrough.js @@ -18,27 +18,19 @@ // 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. - // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. - 'use strict'; module.exports = PassThrough; var Transform = require('./_stream_transform'); -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); +require('inherits')(PassThrough, Transform); function PassThrough(options) { if (!(this instanceof PassThrough)) return new PassThrough(options); - Transform.call(this, options); } diff --git a/deps/npm/node_modules/readable-stream/lib/_stream_readable.js b/deps/npm/node_modules/readable-stream/lib/_stream_readable.js index 0f807646b0f67d..192d451488f208 100644 --- a/deps/npm/node_modules/readable-stream/lib/_stream_readable.js +++ b/deps/npm/node_modules/readable-stream/lib/_stream_readable.js @@ -18,118 +18,110 @@ // 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. - 'use strict'; -/**/ - -var pna = require('process-nextick-args'); -/**/ - module.exports = Readable; - /**/ -var isArray = require('isarray'); -/**/ -/**/ var Duplex; /**/ Readable.ReadableState = ReadableState; - /**/ + var EE = require('events').EventEmitter; -var EElistenerCount = function (emitter, type) { +var EElistenerCount = function EElistenerCount(emitter, type) { return emitter.listeners(type).length; }; /**/ /**/ + + var Stream = require('./internal/streams/stream'); /**/ -/**/ -var Buffer = require('safe-buffer').Buffer; +var Buffer = require('buffer').Buffer; + var OurUint8Array = global.Uint8Array || function () {}; + function _uint8ArrayToBuffer(chunk) { return Buffer.from(chunk); } + function _isUint8Array(obj) { return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; } - -/**/ - /**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ -/**/ + var debugUtil = require('util'); -var debug = void 0; + +var debug; + if (debugUtil && debugUtil.debuglog) { debug = debugUtil.debuglog('stream'); } else { - debug = function () {}; + debug = function debug() {}; } /**/ -var BufferList = require('./internal/streams/BufferList'); + +var BufferList = require('./internal/streams/buffer_list'); + var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + var StringDecoder; +var createReadableStreamAsyncIterator; +var from; -util.inherits(Readable, Stream); +require('inherits')(Readable, Stream); +var errorOrDestroy = destroyImpl.errorOrDestroy; var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; function prependListener(emitter, event, fn) { // Sadly this is not cacheable as some libraries bundle their own // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); - - // This is a hack to make sure that our error handler is attached before any + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any // userland ones. NEVER DO THIS. This is here only because this code needs // to continue to work with older versions of Node.js that do not include // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; } -function ReadableState(options, stream) { +function ReadableState(options, stream, isDuplex) { Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share + options = options || {}; // Duplex streams are both readable and writable, but share // the same options object. // However, some cases require setting options to different // values for the readable and the writable sides of the duplex stream. // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - // object stream flag. Used to make read(n) ignore n and to + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var readableHwm = options.readableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - // A linked list is used to store data chunks instead of an array because the + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the // linked list can remove elements from the beginning faster than // array.shift() + this.buffer = new BufferList(); this.length = 0; this.pipes = null; @@ -137,37 +129,36 @@ function ReadableState(options, stream) { this.flowing = null; this.ended = false; this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the event 'readable'/'data' is emitted + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted // immediately, or on a later tick. We set this to true at first, because // any actions that shouldn't happen until "later" should generally also // not happen before the first read call. - this.sync = true; - // whenever we return null, then we set a flag to say + this.sync = true; // whenever we return null, then we set a flag to say // that we're awaiting a 'readable' event emission. + this.needReadable = false; this.emittedReadable = false; this.readableListening = false; this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. - // has it been destroyed - this.destroyed = false; + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') - // Crypto is kind of old and crusty. Historically, its default string + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s - // if true, a maybeReadMore has been scheduled - this.readingMore = false; + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + this.readingMore = false; this.decoder = null; this.encoding = null; + if (options.encoding) { if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; this.decoder = new StringDecoder(options.encoding); @@ -177,17 +168,16 @@ function ReadableState(options, stream) { function Readable(options) { Duplex = Duplex || require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy - // legacy this.readable = true; if (options) { if (typeof options.read === 'function') this._read = options.read; - if (typeof options.destroy === 'function') this._destroy = options.destroy; } @@ -195,36 +185,40 @@ function Readable(options) { } Object.defineProperty(Readable.prototype, 'destroyed', { - get: function () { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { if (this._readableState === undefined) { return false; } + return this._readableState.destroyed; }, - set: function (value) { + set: function set(value) { // we ignore the value if the stream // has not been initialized yet if (!this._readableState) { return; - } - - // backward compatibility, the user is explicitly + } // backward compatibility, the user is explicitly // managing destroyed + + this._readableState.destroyed = value; } }); - Readable.prototype.destroy = destroyImpl.destroy; Readable.prototype._undestroy = destroyImpl.undestroy; + Readable.prototype._destroy = function (err, cb) { - this.push(null); cb(err); -}; - -// Manually shove something into the read() buffer. +}; // Manually shove something into the read() buffer. // This returns true if the highWaterMark has not been hit yet, // similar to how Writable.write() returns true if you should // write() some more. + + Readable.prototype.push = function (chunk, encoding) { var state = this._readableState; var skipChunkCheck; @@ -232,10 +226,12 @@ Readable.prototype.push = function (chunk, encoding) { if (!state.objectMode) { if (typeof chunk === 'string') { encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { chunk = Buffer.from(chunk, encoding); encoding = ''; } + skipChunkCheck = true; } } else { @@ -243,34 +239,40 @@ Readable.prototype.push = function (chunk, encoding) { } return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; +}; // Unshift should *always* be something directly out of read() + -// Unshift should *always* be something directly out of read() Readable.prototype.unshift = function (chunk) { return readableAddChunk(this, chunk, null, true, false); }; function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); var state = stream._readableState; + if (chunk === null) { state.reading = false; onEofChunk(stream, state); } else { var er; if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { - stream.emit('error', er); + errorOrDestroy(stream, er); } else if (state.objectMode || chunk && chunk.length > 0) { if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { chunk = _uint8ArrayToBuffer(chunk); } if (addToFront) { - if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); } else if (state.ended) { - stream.emit('error', new Error('stream.push() after EOF')); + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; } else { state.reading = false; + if (state.decoder && !encoding) { chunk = state.decoder.write(chunk); if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); @@ -280,61 +282,73 @@ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { } } else if (!addToFront) { state.reading = false; + maybeReadMore(stream, state); } - } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. - return needMoreData(state); + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); } function addChunk(stream, state, chunk, addToFront) { if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; stream.emit('data', chunk); - stream.read(0); } else { // update the buffer info. state.length += state.objectMode ? 1 : chunk.length; if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - if (state.needReadable) emitReadable(stream); } + maybeReadMore(stream, state); } function chunkInvalid(state, chunk) { var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); } - return er; -} -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); + return er; } Readable.prototype.isPaused = function () { return this._readableState.flowing === false; -}; +}; // backwards compatibility. + -// backwards compatibility. Readable.prototype.setEncoding = function (enc) { if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; return this; -}; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; function computeNewHighWaterMark(n) { if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. n = MAX_HWM; } else { // Get the next highest power of 2 to prevent increasing hwm excessively in @@ -347,56 +361,55 @@ function computeNewHighWaterMark(n) { n |= n >>> 16; n++; } - return n; -} -// This function is designed to be inlinable, so please take care when making + return n; +} // This function is designed to be inlinable, so please take care when making // changes to the function body. + + function howMuchToRead(n, state) { if (n <= 0 || state.length === 0 && state.ended) return 0; if (state.objectMode) return 1; + if (n !== n) { // Only flow one buffer at a time if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. + } // If we're asking for more than the current hwm, then raise the hwm. + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough + if (n <= state.length) return n; // Don't have enough + if (!state.ended) { state.needReadable = true; return 0; } + return state.length; -} +} // you can override either this method, or the async _read(n) below. + -// you can override either this method, or the async _read(n) below. Readable.prototype.read = function (n) { debug('read', n); n = parseInt(n, 10); var state = this._readableState; var nOrig = n; - - if (n !== 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we // already have a bunch of data in the buffer, then just trigger // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { debug('read: emitReadable', state.length, state.ended); if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); return null; } - n = howMuchToRead(n, state); + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. - // if we've ended, and we're now clear, then finish it up. if (n === 0 && state.ended) { if (state.length === 0) endReadable(this); return null; - } - - // All the actual chunk generation logic needs to be + } // All the actual chunk generation logic needs to be // *below* the call to _read. The reason is that in certain // synthetic stream cases, such as passthrough streams, _read // may be a completely synchronous operation which may change @@ -417,33 +430,34 @@ Readable.prototype.read = function (n) { // 'readable' etc. // // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. + + var doRead = state.needReadable; - debug('need readable', doRead); + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some - // if we currently have less than the highWaterMark, then also read some if (state.length === 0 || state.length - n < state.highWaterMark) { doRead = true; debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already + } // however, if we've ended, then there's no point, and if we're already // reading, then it's unnecessary. + + if (state.ended || state.reading) { doRead = false; debug('reading or ended', doRead); } else if (doRead) { debug('do read'); state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); } @@ -451,91 +465,144 @@ Readable.prototype.read = function (n) { if (n > 0) ret = fromList(n, state);else ret = null; if (ret === null) { - state.needReadable = true; + state.needReadable = state.length <= state.highWaterMark; n = 0; } else { state.length -= n; + state.awaitDrain = 0; } if (state.length === 0) { // If we have nothing in the buffer, then we want to know // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. - // If we tried to read() past the EOF, then emit end on the next tick. if (nOrig !== n && state.ended) endReadable(this); } if (ret !== null) this.emit('data', ret); - return ret; }; function onEofChunk(stream, state) { + debug('onEofChunk'); if (state.ended) return; + if (state.decoder) { var chunk = state.decoder.end(); + if (chunk && chunk.length) { state.buffer.push(chunk); state.length += state.objectMode ? 1 : chunk.length; } } + state.ended = true; - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; -// Don't emit readable right away in sync mode, because this can trigger + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger // another read() call => stack overflow. This way, it might trigger // a nextTick recursion warning, but that's not so bad. + + function emitReadable(stream) { var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); state.needReadable = false; + if (!state.emittedReadable) { debug('emitReadable', state.flowing); state.emittedReadable = true; - if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + process.nextTick(emitReadable_, stream); } } function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); -// at this point, the user has presumably seen the 'readable' event, + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, // and called read() to consume some data. that may have triggered // in turn another _read(n) call, in which case reading = true if // it's in progress. // However, if we're not ended, or reading, and the length < hwm, // then go ahead and try to read some more preemptively. + + function maybeReadMore(stream, state) { if (!state.readingMore) { state.readingMore = true; - pna.nextTick(maybeReadMore_, stream, state); + process.nextTick(maybeReadMore_, stream, state); } } function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; debug('maybeReadMore read 0'); stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; + if (len === state.length) // didn't get any data, stop spinning. + break; } - state.readingMore = false; -} -// abstract method. to be overridden in specific implementation classes. + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. // call cb(er, data) where data is <= n in length. // for virtual (non-string, non-buffer) streams, "length" is somewhat // arbitrary, and perhaps not very meaningful. + + Readable.prototype._read = function (n) { - this.emit('error', new Error('_read() is not implemented')); + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); }; Readable.prototype.pipe = function (dest, pipeOpts) { @@ -546,24 +613,26 @@ Readable.prototype.pipe = function (dest, pipeOpts) { case 0: state.pipes = dest; break; + case 1: state.pipes = [state.pipes, dest]; break; + default: state.pipes.push(dest); break; } + state.pipesCount += 1; debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); - + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { debug('onunpipe'); + if (readable === src) { if (unpipeInfo && unpipeInfo.hasUnpiped === false) { unpipeInfo.hasUnpiped = true; @@ -575,19 +644,19 @@ Readable.prototype.pipe = function (dest, pipeOpts) { function onend() { debug('onend'); dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter + } // when the dest drains, it reduces the awaitDrain counter // on the source. This would be more elegant with a .once() // handler in flow(), but adding and removing repeatedly is // too slow. + + var ondrain = pipeOnDrain(src); dest.on('drain', ondrain); - var cleanedUp = false; + function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken + debug('cleanup'); // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); dest.removeListener('finish', onfinish); dest.removeListener('drain', ondrain); @@ -596,75 +665,71 @@ Readable.prototype.pipe = function (dest, pipeOpts) { src.removeListener('end', onend); src.removeListener('end', unpipe); src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this + cleanedUp = true; // if the reader is waiting for a drain event from this // specific writer, then it would cause it to never start // flowing again. // So, if this is awaiting a drain, then we just call it now. // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); } - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; src.on('data', ondata); + function ondata(chunk) { debug('ondata'); - increasedAwaitDrain = false; var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { + debug('dest.write', ret); + + if (ret === false) { // If the user unpiped during `dest.write()`, it is possible // to get stuck in a permanently paused state if that write // also returned false. // => Check whether `dest` is still a piping destination. if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; } + src.pause(); } - } - - // if the dest has an error, then stop piping into it. + } // if the dest has an error, then stop piping into it. // however, don't suppress the throwing behavior for this. + + function onerror(er) { debug('onerror', er); unpipe(); dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - // Both close and finish should trigger unpipe, but only once. + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + function onclose() { dest.removeListener('finish', onfinish); unpipe(); } + dest.once('close', onclose); + function onfinish() { debug('onfinish'); dest.removeListener('close', onclose); unpipe(); } + dest.once('finish', onfinish); function unpipe() { debug('unpipe'); src.unpipe(dest); - } + } // tell the dest that it's being piped to - // tell the dest that it's being piped to - dest.emit('pipe', src); - // start the flow if it hasn't been started already. + dest.emit('pipe', src); // start the flow if it hasn't been started already. + if (!state.flowing) { debug('pipe resume'); src.resume(); @@ -674,10 +739,11 @@ Readable.prototype.pipe = function (dest, pipeOpts) { }; function pipeOnDrain(src) { - return function () { + return function pipeOnDrainFunctionResult() { var state = src._readableState; debug('pipeOnDrain', state.awaitDrain); if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { state.flowing = true; flow(src); @@ -687,27 +753,24 @@ function pipeOnDrain(src) { Readable.prototype.unpipe = function (dest) { var state = this._readableState; - var unpipeInfo = { hasUnpiped: false }; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; + if (state.pipesCount === 0) return this; // just one destination. most common case. - // just one destination. most common case. if (state.pipesCount === 1) { // passed in one, but it's not the right one. if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. - if (!dest) dest = state.pipes; - - // got a match. state.pipes = null; state.pipesCount = 0; state.flowing = false; if (dest) dest.emit('unpipe', this, unpipeInfo); return this; - } + } // slow case. multiple pipe destinations. - // slow case. multiple pipe destinations. if (!dest) { // remove all. @@ -718,80 +781,139 @@ Readable.prototype.unpipe = function (dest) { state.flowing = false; for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, unpipeInfo); - }return this; - } + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + - // try to find the right one. var index = indexOf(state.pipes, dest); if (index === -1) return this; - state.pipes.splice(index, 1); state.pipesCount -= 1; if (state.pipesCount === 1) state.pipes = state.pipes[0]; - dest.emit('unpipe', this, unpipeInfo); - return this; -}; - -// set up data events if they are asked for +}; // set up data events if they are asked for // Ensure readable listeners eventually get something + + Readable.prototype.on = function (ev, fn) { var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); } else if (ev === 'readable') { - var state = this._readableState; if (!state.endEmitted && !state.readableListening) { state.readableListening = state.needReadable = true; + state.flowing = false; state.emittedReadable = false; - if (!state.reading) { - pna.nextTick(nReadingNextTick, this); - } else if (state.length) { + debug('on readable', state.length, state.reading); + + if (state.length) { emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); } } } return res; }; + Readable.prototype.addListener = Readable.prototype.on; +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + function nReadingNextTick(self) { debug('readable nexttick read 0'); self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API +} // pause() and resume() are remnants of the legacy readable stream API // If the user uses them, then switch into old mode. + + Readable.prototype.resume = function () { var state = this._readableState; + if (!state.flowing) { - debug('resume'); - state.flowing = true; + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; resume(this, state); } + + state.paused = false; return this; }; function resume(stream, state) { if (!state.resumeScheduled) { state.resumeScheduled = true; - pna.nextTick(resume_, stream, state); + process.nextTick(resume_, stream, state); } } function resume_(stream, state) { + debug('resume', state.reading); + if (!state.reading) { - debug('resume read 0'); stream.read(0); } state.resumeScheduled = false; - state.awaitDrain = 0; stream.emit('resume'); flow(stream); if (state.flowing && !state.reading) stream.read(0); @@ -799,31 +921,37 @@ function resume_(stream, state) { Readable.prototype.pause = function () { debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { + + if (this._readableState.flowing !== false) { debug('pause'); this._readableState.flowing = false; this.emit('pause'); } + + this._readableState.paused = true; return this; }; function flow(stream) { var state = stream._readableState; debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} -} -// wrap an old-style stream as the async data source. + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. // This is *not* part of the readable stream interface. // It is an ugly unfortunate mess of history. + + Readable.prototype.wrap = function (stream) { var _this = this; var state = this._readableState; var paused = false; - stream.on('end', function () { debug('wrapped end'); + if (state.decoder && !state.ended) { var chunk = state.decoder.end(); if (chunk && chunk.length) _this.push(chunk); @@ -831,42 +959,41 @@ Readable.prototype.wrap = function (stream) { _this.push(null); }); - stream.on('data', function (chunk) { debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode - // don't skip over falsy values in objectMode if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; var ret = _this.push(chunk); + if (!ret) { paused = true; stream.pause(); } - }); - - // proxy all the other methods. + }); // proxy all the other methods. // important when wrapping filters and duplexes. + for (var i in stream) { if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { return stream[method].apply(stream, arguments); }; }(i); } - } + } // proxy certain important events. + - // proxy certain important events. for (var n = 0; n < kProxyEvents.length; n++) { stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } - - // when we try to consume some more bytes, simply unpause the + } // when we try to consume some more bytes, simply unpause the // underlying stream. + + this._read = function (n) { debug('wrapped _read', n); + if (paused) { paused = false; stream.resume(); @@ -876,144 +1003,122 @@ Readable.prototype.wrap = function (stream) { return this; }; +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function () { + get: function get() { return this._readableState.highWaterMark; } }); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. -// exposed for testing purposes only. Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. // Length is the combined lengths of all the buffers in the list. // This function is designed to be inlinable, so please take care when making // changes to the function body. + function fromList(n, state) { // nothing buffered if (state.length === 0) return null; - var ret; if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); state.buffer.clear(); } else { // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); + ret = state.buffer.consume(n, state.decoder); } - - return ret; -} - -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; -} - -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = Buffer.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; return ret; } function endReadable(stream) { var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + debug('endReadable', state.endEmitted); if (!state.endEmitted) { state.ended = true; - pna.nextTick(endReadableNT, state, stream); + process.nextTick(endReadableNT, state, stream); } } function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { state.endEmitted = true; stream.readable = false; stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } } } +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = require('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + function indexOf(xs, x) { for (var i = 0, l = xs.length; i < l; i++) { if (xs[i] === x) return i; } + return -1; } \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/_stream_transform.js b/deps/npm/node_modules/readable-stream/lib/_stream_transform.js index fcfc105af8e9a1..41a738c4e93599 100644 --- a/deps/npm/node_modules/readable-stream/lib/_stream_transform.js +++ b/deps/npm/node_modules/readable-stream/lib/_stream_transform.js @@ -18,7 +18,6 @@ // 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. - // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -60,40 +59,37 @@ // However, even in such a pathological case, only a single written chunk // would be consumed, and then the rest would wait (un-transformed) until // the results of the previous transformed chunk were consumed. - 'use strict'; module.exports = Transform; -var Duplex = require('./_stream_duplex'); +var _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; -/**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ +var Duplex = require('./_stream_duplex'); -util.inherits(Transform, Duplex); +require('inherits')(Transform, Duplex); function afterTransform(er, data) { var ts = this._transformState; ts.transforming = false; - var cb = ts.writecb; - if (!cb) { - return this.emit('error', new Error('write callback called multiple times')); + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); } ts.writechunk = null; ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` this.push(data); - cb(er); - var rs = this._readableState; rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { this._read(rs.highWaterMark); } @@ -101,9 +97,7 @@ function afterTransform(er, data) { function Transform(options) { if (!(this instanceof Transform)) return new Transform(options); - Duplex.call(this, options); - this._transformState = { afterTransform: afterTransform.bind(this), needTransform: false, @@ -111,30 +105,27 @@ function Transform(options) { writecb: null, writechunk: null, writeencoding: null - }; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; + }; // start out asking for a readable event once data is transformed. - // we have implemented the _read method, and done the other things + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things // that Readable wants before the first _read call, so unset the // sync guard flag. + this._readableState.sync = false; if (options) { if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } + } // When the writable side finishes, then flush out anything remaining. + - // When the writable side finishes, then flush out anything remaining. this.on('prefinish', prefinish); } function prefinish() { var _this = this; - if (typeof this._flush === 'function') { + if (typeof this._flush === 'function' && !this._readableState.destroyed) { this._flush(function (er, data) { done(_this, er, data); }); @@ -146,9 +137,7 @@ function prefinish() { Transform.prototype.push = function (chunk, encoding) { this._transformState.needTransform = false; return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! +}; // This is the part where you do stuff! // override this function in implementation classes. // 'chunk' is an input chunk. // @@ -158,8 +147,10 @@ Transform.prototype.push = function (chunk, encoding) { // Call `cb(err)` when you are done with this chunk. If you pass // an error, then that'll put the hurt on the whole operation. If you // never call cb(), then you'll never get another chunk. + + Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('_transform() is not implemented'); + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); }; Transform.prototype._write = function (chunk, encoding, cb) { @@ -167,20 +158,22 @@ Transform.prototype._write = function (chunk, encoding, cb) { ts.writecb = cb; ts.writechunk = chunk; ts.writeencoding = encoding; + if (!ts.transforming) { var rs = this._readableState; if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); } -}; - -// Doesn't matter what the args are here. +}; // Doesn't matter what the args are here. // _transform does all the work. // That we got here means that the readable side wants more data. + + Transform.prototype._read = function (n) { var ts = this._transformState; - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + if (ts.writechunk !== null && !ts.transforming) { ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); } else { // mark that we need a transform, so that any data that comes in @@ -190,25 +183,19 @@ Transform.prototype._read = function (n) { }; Transform.prototype._destroy = function (err, cb) { - var _this2 = this; - Duplex.prototype._destroy.call(this, err, function (err2) { cb(err2); - _this2.emit('close'); }); }; function done(stream, er, data) { if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); - + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases // if there's nothing in the write buffer, then that means // that nothing more will ever be provided - if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); - - if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); return stream.push(null); } \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/_stream_writable.js b/deps/npm/node_modules/readable-stream/lib/_stream_writable.js index b0b02200cd7233..a2634d7c24fd5e 100644 --- a/deps/npm/node_modules/readable-stream/lib/_stream_writable.js +++ b/deps/npm/node_modules/readable-stream/lib/_stream_writable.js @@ -18,35 +18,29 @@ // 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. - // A bit simpler than readable streams. // Implement an async ._write(chunk, encoding, cb), and it'll handle all // the drain event emission and buffering. - 'use strict'; -/**/ - -var pna = require('process-nextick-args'); -/**/ - module.exports = Writable; - /* */ + function WriteReq(chunk, encoding, cb) { this.chunk = chunk; this.encoding = encoding; this.callback = cb; this.next = null; -} - -// It seems a linked list but it is not +} // It seems a linked list but it is not // there will be only 2 of these for each stream + + function CorkedRequest(state) { var _this = this; this.next = null; this.entry = null; + this.finish = function () { onCorkedFinish(_this, state); }; @@ -54,266 +48,247 @@ function CorkedRequest(state) { /* */ /**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; -/**/ -/**/ + var Duplex; /**/ Writable.WritableState = WritableState; - /**/ -var util = Object.create(require('core-util-is')); -util.inherits = require('inherits'); -/**/ -/**/ var internalUtil = { deprecate: require('util-deprecate') }; /**/ /**/ + var Stream = require('./internal/streams/stream'); /**/ -/**/ -var Buffer = require('safe-buffer').Buffer; +var Buffer = require('buffer').Buffer; + var OurUint8Array = global.Uint8Array || function () {}; + function _uint8ArrayToBuffer(chunk) { return Buffer.from(chunk); } + function _isUint8Array(obj) { return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; } -/**/ - var destroyImpl = require('./internal/streams/destroy'); -util.inherits(Writable, Stream); +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; -function nop() {} +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); +var errorOrDestroy = destroyImpl.errorOrDestroy; - options = options || {}; +require('inherits')(Writable, Stream); - // Duplex streams are both readable and writable, but share +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share // the same options object. // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. - // object stream flag to indicate whether or not this stream + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - // the point at which write() starts returning false + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false // Note: 0 is a valid value, means that we always return false if // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var writableHwm = options.writableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); + this.needDrain = false; // at the start of calling end() - // if _final has been called - this.finalCalled = false; + this.ending = false; // when end() has been called, and returned - // drain event flag. - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; + this.ended = false; // when 'finish' is emitted - // has it been destroyed - this.destroyed = false; + this.finished = false; // has it been destroyed - // should we decode strings into buffers before passing to _write? + this.destroyed = false; // should we decode strings into buffers before passing to _write? // this is here so that some node-core streams can optimize string // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - // Crypto is kind of old and crusty. Historically, its default string + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - // not an actual buffer we keep track of, but a measurement + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement // of how much we're waiting to get pushed to some underlying // socket or file. - this.length = 0; - // a flag to see when we're in the middle of a write. - this.writing = false; + this.length = 0; // a flag to see when we're in the middle of a write. - // when true all writes will be buffered until .uncork() call - this.corked = 0; + this.writing = false; // when true all writes will be buffered until .uncork() call - // a flag to be able to tell if the onwrite cb is called immediately, + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, // or on a later tick. We set this to true at first, because any // actions that shouldn't happen until "later" should generally also // not happen before the first write call. - this.sync = true; - // a flag to know if we're processing previously buffered items, which + this.sync = true; // a flag to know if we're processing previously buffered items, which // may call the _write() callback in the same tick, so that we don't // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - // the callback that's passed to _write(chunk,cb) + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { onwrite(stream, er); - }; + }; // the callback that the user supplies to write(chunk,encoding,cb) - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - // the amount that is being written when _write is called. - this.writelen = 0; + this.writecb = null; // the amount that is being written when _write is called. + this.writelen = 0; this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - // emit prefinish if the only thing we're waiting for is _write cbs + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs // This is relevant for synchronous Transform streams - this.prefinished = false; - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; + this.prefinished = false; // True if the error was already emitted and should not be thrown again - // count buffered requests - this.bufferedRequestCount = 0; + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. - // allocate the first CorkedRequest, there is always + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); } WritableState.prototype.getBuffer = function getBuffer() { var current = this.bufferedRequest; var out = []; + while (current) { out.push(current); current = current.next; } + return out; }; (function () { try { Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { + get: internalUtil.deprecate(function writableStateBufferGetter() { return this.getBuffer(); }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') }); } catch (_) {} -})(); - -// Test _writableState for inheritance to account for Duplex streams, +})(); // Test _writableState for inheritance to account for Duplex streams, // whose prototype chain only points to Readable. + + var realHasInstance; + if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { realHasInstance = Function.prototype[Symbol.hasInstance]; Object.defineProperty(Writable, Symbol.hasInstance, { - value: function (object) { + value: function value(object) { if (realHasInstance.call(this, object)) return true; if (this !== Writable) return false; - return object && object._writableState instanceof WritableState; } }); } else { - realHasInstance = function (object) { + realHasInstance = function realHasInstance(object) { return object instanceof this; }; } function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, too. + Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. // `realHasInstance` is necessary because using plain `instanceof` // would return false, as no `_writableState` property is attached. - // Trying to use the custom `instanceof` for Writable here will also break the // Node.js LazyTransform implementation, which has a non-trivial getter for // `_writableState` that would lead to infinite recursion. - if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { - return new Writable(options); - } + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 - this._writableState = new WritableState(options, this); + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. - // legacy. this.writable = true; if (options) { if (typeof options.write === 'function') this._write = options.write; - if (typeof options.writev === 'function') this._writev = options.writev; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options.final === 'function') this._final = options.final; } Stream.call(this); -} +} // Otherwise people can pipe Writable streams, which is just wrong. + -// Otherwise people can pipe Writable streams, which is just wrong. Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); }; function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - pna.nextTick(cb, er); -} + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb -// Checks that a user-supplied chunk is valid, especially for the particular + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular // mode the stream is in. Currently this means that `null` is never accepted // and undefined/non-string values are only allowed in object mode. + + function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; + var er; if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); } + if (er) { - stream.emit('error', er); - pna.nextTick(cb, er); - valid = false; + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; } - return valid; + + return true; } Writable.prototype.write = function (chunk, encoding, cb) { var state = this._writableState; var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); if (isBuf && !Buffer.isBuffer(chunk)) { @@ -326,21 +301,16 @@ Writable.prototype.write = function (chunk, encoding, cb) { } if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { state.pendingcb++; ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); } - return ret; }; Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; + this._writableState.corked++; }; Writable.prototype.uncork = function () { @@ -348,23 +318,33 @@ Writable.prototype.uncork = function () { if (state.corked) { state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); } }; Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { // node::ParseEncoding() requires lower case. if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); this._writableState.defaultEncoding = encoding; return this; }; +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + function decodeChunk(state, chunk, encoding) { if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { chunk = Buffer.from(chunk, encoding); } + return chunk; } @@ -373,29 +353,28 @@ Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function () { + get: function get() { return this._writableState.highWaterMark; } -}); - -// if we're already writing something, then just put this +}); // if we're already writing something, then just put this // in the queue, and wait our turn. Otherwise, call _write // If we return false, then we need a drain event, so set that flag. + function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { if (!isBuf) { var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { isBuf = true; encoding = 'buffer'; chunk = newChunk; } } - var len = state.objectMode ? 1 : chunk.length; + var len = state.objectMode ? 1 : chunk.length; state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. if (!ret) state.needDrain = true; if (state.writing || state.corked) { @@ -407,11 +386,13 @@ function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { callback: cb, next: null }; + if (last) { last.next = state.lastBufferedRequest; } else { state.bufferedRequest = state.lastBufferedRequest; } + state.bufferedRequestCount += 1; } else { doWrite(stream, state, false, len, chunk, encoding, cb); @@ -425,7 +406,7 @@ function doWrite(stream, state, writev, len, chunk, encoding, cb) { state.writecb = cb; state.writing = true; state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); state.sync = false; } @@ -435,20 +416,20 @@ function onwriteError(stream, state, sync, er, cb) { if (sync) { // defer the callback if we are being called synchronously // to avoid piling up things on the stack - pna.nextTick(cb, er); - // this can emit finish, and it will always happen + process.nextTick(cb, er); // this can emit finish, and it will always happen // after error - pna.nextTick(finishMaybe, stream, state); + + process.nextTick(finishMaybe, stream, state); stream._writableState.errorEmitted = true; - stream.emit('error', er); + errorOrDestroy(stream, er); } else { // the caller expect this to happen before if // it is async cb(er); stream._writableState.errorEmitted = true; - stream.emit('error', er); - // this can emit finish, but finish must + errorOrDestroy(stream, er); // this can emit finish, but finish must // always follow error + finishMaybe(stream, state); } } @@ -464,21 +445,18 @@ function onwrite(stream, er) { var state = stream._writableState; var sync = state.sync; var cb = state.writecb; - + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); onwriteStateUpdate(state); - if (er) onwriteError(stream, state, sync, er, cb);else { // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); + var finished = needFinish(state) || stream.destroyed; if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { clearBuffer(stream, state); } if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ + process.nextTick(afterWrite, stream, state, finished, cb); } else { afterWrite(stream, state, finished, cb); } @@ -490,19 +468,19 @@ function afterWrite(stream, state, finished, cb) { state.pendingcb--; cb(); finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't +} // Must force callback to be called on nextTick, so that we don't // emit 'drain' before the write() consumer gets the 'false' return // value, and has a chance to attach a 'drain' listener. + + function onwriteDrain(stream, state) { if (state.length === 0 && state.needDrain) { state.needDrain = false; stream.emit('drain'); } -} +} // if there's something in the buffer waiting, then process it + -// if there's something in the buffer waiting, then process it function clearBuffer(stream, state) { state.bufferProcessing = true; var entry = state.bufferedRequest; @@ -513,29 +491,30 @@ function clearBuffer(stream, state) { var buffer = new Array(l); var holder = state.corkedRequestsFree; holder.entry = entry; - var count = 0; var allBuffers = true; + while (entry) { buffer[count] = entry; if (!entry.isBuf) allBuffers = false; entry = entry.next; count += 1; } - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is almost always async, defer these to save a bit of time + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time // as the hot path ends with doWrite + state.pendingcb++; state.lastBufferedRequest = null; + if (holder.next) { state.corkedRequestsFree = holder.next; holder.next = null; } else { state.corkedRequestsFree = new CorkedRequest(state); } + state.bufferedRequestCount = 0; } else { // Slow case, write chunks one-by-one @@ -544,14 +523,13 @@ function clearBuffer(stream, state) { var encoding = entry.encoding; var cb = entry.callback; var len = state.objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, cb); entry = entry.next; - state.bufferedRequestCount--; - // if we didn't call the onwrite immediately, then + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then // it means that we need to wait until it does. // also, that means that the chunk and cb are currently // being processed, so move the buffer counter past them. + if (state.writing) { break; } @@ -565,7 +543,7 @@ function clearBuffer(stream, state) { } Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('_write() is not implemented')); + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); }; Writable.prototype._writev = null; @@ -582,38 +560,52 @@ Writable.prototype.end = function (chunk, encoding, cb) { encoding = null; } - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks - // .end() fully uncorks if (state.corked) { state.corked = 1; this.uncork(); - } + } // ignore unnecessary end() calls. + - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); + if (!state.ending) endWritable(this, state, cb); + return this; }; +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + function needFinish(state) { return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; } + function callFinal(stream, state) { stream._final(function (err) { state.pendingcb--; + if (err) { - stream.emit('error', err); + errorOrDestroy(stream, err); } + state.prefinished = true; stream.emit('prefinish'); finishMaybe(stream, state); }); } + function prefinish(stream, state) { if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function') { + if (typeof stream._final === 'function' && !state.destroyed) { state.pendingcb++; state.finalCalled = true; - pna.nextTick(callFinal, stream, state); + process.nextTick(callFinal, stream, state); } else { state.prefinished = true; stream.emit('prefinish'); @@ -623,22 +615,37 @@ function prefinish(stream, state) { function finishMaybe(stream, state) { var need = needFinish(state); + if (need) { prefinish(stream, state); + if (state.pendingcb === 0) { state.finished = true; stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } } } + return need; } function endWritable(stream, state, cb) { state.ending = true; finishMaybe(stream, state); + if (cb) { - if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); } + state.ended = true; stream.writable = false; } @@ -646,42 +653,45 @@ function endWritable(stream, state, cb) { function onCorkedFinish(corkReq, state, err) { var entry = corkReq.entry; corkReq.entry = null; + while (entry) { var cb = entry.callback; state.pendingcb--; cb(err); entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = corkReq; - } else { - state.corkedRequestsFree = corkReq; - } + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; } Object.defineProperty(Writable.prototype, 'destroyed', { - get: function () { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { if (this._writableState === undefined) { return false; } + return this._writableState.destroyed; }, - set: function (value) { + set: function set(value) { // we ignore the value if the stream // has not been initialized yet if (!this._writableState) { return; - } - - // backward compatibility, the user is explicitly + } // backward compatibility, the user is explicitly // managing destroyed + + this._writableState.destroyed = value; } }); - Writable.prototype.destroy = destroyImpl.destroy; Writable.prototype._undestroy = destroyImpl.undestroy; + Writable.prototype._destroy = function (err, cb) { - this.end(); cb(err); }; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/BufferList.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/BufferList.js deleted file mode 100644 index aefc68bd90b9c2..00000000000000 --- a/deps/npm/node_modules/readable-stream/lib/internal/streams/BufferList.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict'; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Buffer = require('safe-buffer').Buffer; -var util = require('util'); - -function copyBuffer(src, target, offset) { - src.copy(target, offset); -} - -module.exports = function () { - function BufferList() { - _classCallCheck(this, BufferList); - - this.head = null; - this.tail = null; - this.length = 0; - } - - BufferList.prototype.push = function push(v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; - - BufferList.prototype.unshift = function unshift(v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; - - BufferList.prototype.shift = function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; - - BufferList.prototype.clear = function clear() { - this.head = this.tail = null; - this.length = 0; - }; - - BufferList.prototype.join = function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; - }; - - BufferList.prototype.concat = function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - return ret; - }; - - return BufferList; -}(); - -if (util && util.inspect && util.inspect.custom) { - module.exports.prototype[util.inspect.custom] = function () { - var obj = util.inspect({ length: this.length }); - return this.constructor.name + ' ' + obj; - }; -} \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js new file mode 100644 index 00000000000000..9fb615a2f3bc44 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js @@ -0,0 +1,207 @@ +'use strict'; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = require('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/buffer_list.js new file mode 100644 index 00000000000000..cdea425f19dd96 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/buffer_list.js @@ -0,0 +1,210 @@ +'use strict'; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +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; } + +var _require = require('buffer'), + Buffer = _require.Buffer; + +var _require2 = require('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js index 5a0a0d88cec6f3..3268a16f3b6f23 100644 --- a/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -1,11 +1,5 @@ -'use strict'; +'use strict'; // undocumented cb() API, needed for core, not for public API -/**/ - -var pna = require('process-nextick-args'); -/**/ - -// undocumented cb() API, needed for core, not for public API function destroy(err, cb) { var _this = this; @@ -15,38 +9,61 @@ function destroy(err, cb) { if (readableDestroyed || writableDestroyed) { if (cb) { cb(err); - } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { - pna.nextTick(emitErrorNT, this, err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } } - return this; - } - // we set destroyed to true before firing error callbacks in order + return this; + } // we set destroyed to true before firing error callbacks in order // to make it re-entrance safe in case destroy() is called within callbacks + if (this._readableState) { this._readableState.destroyed = true; - } + } // if this is a duplex stream mark the writable part as destroyed as well + - // if this is a duplex stream mark the writable part as destroyed as well if (this._writableState) { this._writableState.destroyed = true; } this._destroy(err || null, function (err) { if (!cb && err) { - pna.nextTick(emitErrorNT, _this, err); - if (_this._writableState) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); } } else if (cb) { + process.nextTick(emitCloseNT, _this); cb(err); + } else { + process.nextTick(emitCloseNT, _this); } }); return this; } +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + function undestroy() { if (this._readableState) { this._readableState.destroyed = false; @@ -59,6 +76,8 @@ function undestroy() { this._writableState.destroyed = false; this._writableState.ended = false; this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; this._writableState.finished = false; this._writableState.errorEmitted = false; } @@ -68,7 +87,19 @@ function emitErrorNT(self, err) { self.emit('error', err); } +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + module.exports = { destroy: destroy, - undestroy: undestroy + undestroy: undestroy, + errorOrDestroy: errorOrDestroy }; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js new file mode 100644 index 00000000000000..831f286d98fa95 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js @@ -0,0 +1,104 @@ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/from-browser.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/from-browser.js new file mode 100644 index 00000000000000..a4ce56f3c90f60 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/from-browser.js @@ -0,0 +1,3 @@ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/from.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/from.js new file mode 100644 index 00000000000000..6c41284416799c --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/from.js @@ -0,0 +1,64 @@ +'use strict'; + +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); }); }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE; + +function from(Readable, iterable, opts) { + var iterator; + + if (iterable && typeof iterable.next === 'function') { + iterator = iterable; + } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); + + var readable = new Readable(_objectSpread({ + objectMode: true + }, opts)); // Reading boolean to protect against _read + // being called before last iteration completion. + + var reading = false; + + readable._read = function () { + if (!reading) { + reading = true; + next(); + } + }; + + function next() { + return _next2.apply(this, arguments); + } + + function _next2() { + _next2 = _asyncToGenerator(function* () { + try { + var _ref = yield iterator.next(), + value = _ref.value, + done = _ref.done; + + if (done) { + readable.push(null); + } else if (readable.push((yield value))) { + next(); + } else { + reading = false; + } + } catch (err) { + readable.destroy(err); + } + }); + return _next2.apply(this, arguments); + } + + return readable; +} + +module.exports = from; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/pipeline.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/pipeline.js new file mode 100644 index 00000000000000..6589909889c585 --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/pipeline.js @@ -0,0 +1,97 @@ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = require('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/state.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/state.js new file mode 100644 index 00000000000000..19887eb8a9070e --- /dev/null +++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/state.js @@ -0,0 +1,27 @@ +'use strict'; + +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; \ No newline at end of file diff --git a/deps/npm/node_modules/readable-stream/package.json b/deps/npm/node_modules/readable-stream/package.json index 2afa6fbd81e225..0b0c4bd207ace3 100644 --- a/deps/npm/node_modules/readable-stream/package.json +++ b/deps/npm/node_modules/readable-stream/package.json @@ -1,31 +1,46 @@ { "name": "readable-stream", - "version": "2.3.7", + "version": "3.6.0", "description": "Streams3, a user-land copy of the stream library from Node.js", "main": "readable.js", + "engines": { + "node": ">= 6" + }, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "devDependencies": { + "@babel/cli": "^7.2.0", + "@babel/core": "^7.2.0", + "@babel/polyfill": "^7.0.0", + "@babel/preset-env": "^7.2.0", + "airtap": "0.0.9", "assert": "^1.4.0", - "babel-polyfill": "^6.9.1", - "buffer": "^4.9.0", - "lolex": "^2.3.2", - "nyc": "^6.4.0", - "tap": "^0.7.0", - "tape": "^4.8.0" + "bl": "^2.0.0", + "deep-strict-equal": "^0.2.0", + "events.once": "^2.0.2", + "glob": "^7.1.2", + "gunzip-maybe": "^1.4.1", + "hyperquest": "^2.1.3", + "lolex": "^2.6.0", + "nyc": "^11.0.0", + "pump": "^3.0.0", + "rimraf": "^2.6.2", + "tap": "^12.0.0", + "tape": "^4.9.0", + "tar-fs": "^1.16.2", + "util-promisify": "^2.1.0" }, "scripts": { - "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js", - "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js", + "test": "tap -J --no-esm test/parallel/*.js test/ours/*.js", + "ci": "TAP=1 tap --no-esm test/parallel/*.js test/ours/*.js | tee test.tap", + "test-browsers": "airtap --sauce-connect --loopback airtap.local -- test/browser.js", + "test-browser-local": "airtap --open --local -- test/browser.js", "cover": "nyc npm test", - "report": "nyc report --reporter=lcov" + "report": "nyc report --reporter=lcov", + "update-browser-errors": "babel -o errors-browser.js errors.js" }, "repository": { "type": "git", @@ -38,9 +53,10 @@ ], "browser": { "util": false, + "worker_threads": false, + "./errors": "./errors-browser.js", "./readable.js": "./readable-browser.js", - "./writable.js": "./writable-browser.js", - "./duplex.js": "./duplex-browser.js", + "./lib/internal/streams/from.js": "./lib/internal/streams/from-browser.js", "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js" }, "nyc": { diff --git a/deps/npm/node_modules/readable-stream/passthrough.js b/deps/npm/node_modules/readable-stream/passthrough.js deleted file mode 100644 index ffd791d7ff275a..00000000000000 --- a/deps/npm/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./readable').PassThrough diff --git a/deps/npm/node_modules/readable-stream/readable-browser.js b/deps/npm/node_modules/readable-stream/readable-browser.js index e50372592ee6c6..adbf60de832f9d 100644 --- a/deps/npm/node_modules/readable-stream/readable-browser.js +++ b/deps/npm/node_modules/readable-stream/readable-browser.js @@ -5,3 +5,5 @@ exports.Writable = require('./lib/_stream_writable.js'); exports.Duplex = require('./lib/_stream_duplex.js'); exports.Transform = require('./lib/_stream_transform.js'); exports.PassThrough = require('./lib/_stream_passthrough.js'); +exports.finished = require('./lib/internal/streams/end-of-stream.js'); +exports.pipeline = require('./lib/internal/streams/pipeline.js'); diff --git a/deps/npm/node_modules/readable-stream/readable.js b/deps/npm/node_modules/readable-stream/readable.js index ec89ec53306497..9e0ca120ded827 100644 --- a/deps/npm/node_modules/readable-stream/readable.js +++ b/deps/npm/node_modules/readable-stream/readable.js @@ -1,13 +1,8 @@ var Stream = require('stream'); if (process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; - exports = module.exports = Stream.Readable; - exports.Readable = Stream.Readable; - exports.Writable = Stream.Writable; - exports.Duplex = Stream.Duplex; - exports.Transform = Stream.Transform; - exports.PassThrough = Stream.PassThrough; - exports.Stream = Stream; + module.exports = Stream.Readable; + Object.assign(module.exports, Stream); + module.exports.Stream = Stream; } else { exports = module.exports = require('./lib/_stream_readable.js'); exports.Stream = Stream || exports; @@ -16,4 +11,6 @@ if (process.env.READABLE_STREAM === 'disable' && Stream) { exports.Duplex = require('./lib/_stream_duplex.js'); exports.Transform = require('./lib/_stream_transform.js'); exports.PassThrough = require('./lib/_stream_passthrough.js'); + exports.finished = require('./lib/internal/streams/end-of-stream.js'); + exports.pipeline = require('./lib/internal/streams/pipeline.js'); } diff --git a/deps/npm/node_modules/readable-stream/transform.js b/deps/npm/node_modules/readable-stream/transform.js deleted file mode 100644 index b1baba26da03dc..00000000000000 --- a/deps/npm/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./readable').Transform diff --git a/deps/npm/node_modules/readable-stream/writable-browser.js b/deps/npm/node_modules/readable-stream/writable-browser.js deleted file mode 100644 index ebdde6a85dcb19..00000000000000 --- a/deps/npm/node_modules/readable-stream/writable-browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/_stream_writable.js'); diff --git a/deps/npm/node_modules/readable-stream/writable.js b/deps/npm/node_modules/readable-stream/writable.js deleted file mode 100644 index 3211a6f80d1abc..00000000000000 --- a/deps/npm/node_modules/readable-stream/writable.js +++ /dev/null @@ -1,8 +0,0 @@ -var Stream = require("stream") -var Writable = require("./lib/_stream_writable.js") - -if (process.env.READABLE_STREAM === 'disable') { - module.exports = Stream && Stream.Writable || Writable -} else { - module.exports = Writable -} diff --git a/deps/npm/node_modules/safe-buffer/index.js b/deps/npm/node_modules/safe-buffer/index.js index 22438dabbbceef..f8d3ec98852f44 100644 --- a/deps/npm/node_modules/safe-buffer/index.js +++ b/deps/npm/node_modules/safe-buffer/index.js @@ -1,3 +1,4 @@ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ /* eslint-disable node/no-deprecated-api */ var buffer = require('buffer') var Buffer = buffer.Buffer @@ -20,6 +21,8 @@ function SafeBuffer (arg, encodingOrOffset, length) { return Buffer(arg, encodingOrOffset, length) } +SafeBuffer.prototype = Object.create(Buffer.prototype) + // Copy static methods from Buffer copyProps(Buffer, SafeBuffer) diff --git a/deps/npm/node_modules/safe-buffer/package.json b/deps/npm/node_modules/safe-buffer/package.json index 623fbc3f6b0c48..f2869e256477a9 100644 --- a/deps/npm/node_modules/safe-buffer/package.json +++ b/deps/npm/node_modules/safe-buffer/package.json @@ -1,18 +1,18 @@ { "name": "safe-buffer", "description": "Safer Node.js Buffer API", - "version": "5.1.2", + "version": "5.2.1", "author": { "name": "Feross Aboukhadijeh", "email": "feross@feross.org", - "url": "http://feross.org" + "url": "https://feross.org" }, "bugs": { "url": "https://github.com/feross/safe-buffer/issues" }, "devDependencies": { "standard": "*", - "tape": "^4.0.0" + "tape": "^5.0.0" }, "homepage": "https://github.com/feross/safe-buffer", "keywords": [ @@ -33,5 +33,19 @@ }, "scripts": { "test": "standard && tape test/*.js" - } + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] } diff --git a/deps/npm/node_modules/string_decoder/package.json b/deps/npm/node_modules/string_decoder/package.json index 518c3eb9fb1ffb..b2bb141160cad3 100644 --- a/deps/npm/node_modules/string_decoder/package.json +++ b/deps/npm/node_modules/string_decoder/package.json @@ -1,10 +1,13 @@ { "name": "string_decoder", - "version": "1.1.1", + "version": "1.3.0", "description": "The string_decoder module from Node core", "main": "lib/string_decoder.js", + "files": [ + "lib" + ], "dependencies": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" }, "devDependencies": { "babel-polyfill": "^6.23.0", diff --git a/deps/npm/package.json b/deps/npm/package.json index d5f3cf54cf89c6..38b45947706dc7 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "7.21.1", + "version": "7.24.0", "name": "npm", "description": "a package manager for JavaScript", "workspaces": [ @@ -53,9 +53,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@npmcli/arborist": "^2.8.2", + "@npmcli/arborist": "^2.8.3", "@npmcli/ci-detect": "^1.2.0", - "@npmcli/config": "^2.2.0", + "@npmcli/config": "^2.3.0", "@npmcli/map-workspaces": "^1.0.4", "@npmcli/package-json": "^1.0.1", "@npmcli/run-script": "^1.8.6", @@ -74,7 +74,7 @@ "graceful-fs": "^4.2.8", "hosted-git-info": "^4.0.2", "ini": "^2.0.0", - "init-package-json": "^2.0.4", + "init-package-json": "^2.0.5", "is-cidr": "^4.0.2", "json-parse-even-better-errors": "^2.3.1", "libnpmaccess": "^4.0.2", @@ -97,18 +97,19 @@ "node-gyp": "^7.1.2", "nopt": "^5.0.0", "npm-audit-report": "^2.1.5", + "npm-install-checks": "^4.0.0", "npm-package-arg": "^8.1.5", "npm-pick-manifest": "^6.1.1", "npm-profile": "^5.0.3", "npm-registry-fetch": "^11.0.0", "npm-user-validate": "^1.0.1", - "npmlog": "^5.0.0", + "npmlog": "^5.0.1", "opener": "^1.5.2", "pacote": "^11.3.5", "parse-conflict-json": "^1.1.1", "qrcode-terminal": "^0.12.0", "read": "~1.0.7", - "read-package-json": "^4.0.1", + "read-package-json": "^4.1.1", "read-package-json-fast": "^2.0.3", "readdir-scoped-modules": "^1.1.0", "rimraf": "^3.0.2", @@ -167,6 +168,7 @@ "node-gyp", "nopt", "npm-audit-report", + "npm-install-checks", "npm-package-arg", "npm-pick-manifest", "npm-profile", diff --git a/deps/npm/tap-snapshots/test/lib/config.js.test.cjs b/deps/npm/tap-snapshots/test/lib/config.js.test.cjs index 8f349a6f54249e..dab7ef55f64e82 100644 --- a/deps/npm/tap-snapshots/test/lib/config.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/config.js.test.cjs @@ -146,7 +146,7 @@ exports[`test/lib/config.js TAP config list --json > output matches snapshot 1`] "unicode": false, "update-notifier": true, "usage": false, - "user-agent": "npm/{NPM-VERSION} node/{NODE-VERSION} {PLATFORM} {ARCH} workspaces/false", + "user-agent": "npm/{npm-version} node/{node-version} {platform} {arch} workspaces/{workspaces} {ci}", "version": false, "versions": false, "viewer": "{VIEWER}", @@ -296,7 +296,7 @@ umask = 0 unicode = false update-notifier = true usage = false -user-agent = "npm/{NPM-VERSION} node/{NODE-VERSION} {PLATFORM} {ARCH} workspaces/false" +user-agent = "npm/{npm-version} node/{node-version} {platform} {arch} workspaces/{workspaces} {ci}" ; userconfig = "{HOME}/.npmrc" ; overridden by cli version = false versions = false diff --git a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs index 7bf67868a79ecb..c963ca2040e6f5 100644 --- a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs @@ -5,6 +5,48 @@ * Make sure to inspect the output below. Do not ignore changes! */ 'use strict' +exports[`test/lib/utils/error-message.js TAP 404 cleans sensitive info from package id > must match snapshot 1`] = ` +Object { + "detail": Array [ + Array [ + "404", + "", + ], + Array [ + "404", + "", + "'http://evil:***@npmjs.org/not-found' is not in this registry.", + ], + Array [ + "404", + "This package name is not valid, because", + "", + ], + Array [ + "404", + " 1. name can only contain URL-friendly characters", + ], + Array [ + "404", + String( + + Note that you can also install from a + ), + ], + Array [ + "404", + "tarball, folder, http url, or git url.", + ], + ], + "summary": Array [ + Array [ + "404", + "not found", + ], + ], +} +` + exports[`test/lib/utils/error-message.js TAP 404 name with error > must match snapshot 1`] = ` Object { "detail": Array [ @@ -15,7 +57,7 @@ Object { Array [ "404", "", - "'node_modules' is not in the npm registry.", + "'node_modules' is not in this registry.", ], Array [ "404", @@ -57,7 +99,7 @@ Object { Array [ "404", "", - "'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' is not in the npm registry.", + "'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' is not in this registry.", ], Array [ "404", @@ -111,7 +153,7 @@ Object { Array [ "404", "", - "'yolo' is not in the npm registry.", + "'yolo' is not in this registry.", ], Array [ "404", @@ -138,6 +180,40 @@ Object { } ` +exports[`test/lib/utils/error-message.js TAP args are cleaned > must match snapshot 1`] = ` +Object { + "detail": Array [ + Array [ + "signal", + "SIGYOLO", + ], + Array [ + "command", + "some command", + "a", + "r", + "g", + "s", + "https://evil:***@npmjs.org", + ], + Array [ + "", + "stdout", + ], + Array [ + "", + "stderr", + ], + ], + "summary": Array [ + Array [ + "", + "cmd err", + ], + ], +} +` + exports[`test/lib/utils/error-message.js TAP bad engine with config loaded > must match snapshot 1`] = ` Object { "detail": Array [ diff --git a/deps/npm/tap-snapshots/test/lib/view.js.test.cjs b/deps/npm/tap-snapshots/test/lib/view.js.test.cjs index 27ba7b1eb69276..9ed8334138cf85 100644 --- a/deps/npm/tap-snapshots/test/lib/view.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/view.js.test.cjs @@ -82,7 +82,7 @@ dist dist-tags: latest: 1.0.0 -published {TIME} ago +published yesterday ` exports[`test/lib/view.js TAP should log info of package in current working dir specific version > must match snapshot 1`] = ` @@ -99,7 +99,7 @@ dist dist-tags: latest: 1.0.0 -published {TIME} ago +published yesterday ` exports[`test/lib/view.js TAP should log package info package from git > must match snapshot 1`] = ` @@ -302,7 +302,24 @@ dist dist-tags: latest: 1.0.0 -published {TIME} ago +published yesterday +` + +exports[`test/lib/view.js TAP should log package info package with semver range > must match snapshot 1`] = ` + + +blue@1.0.0 | Proprietary | deps: none | versions: 2 + +dist +.tarball:http://hm.blue.com/1.0.0.tgz +.shasum:123 +.integrity:--- +.unpackedSize:1 B + +dist-tags: +latest: 1.0.0 + +published yesterday ` exports[`test/lib/view.js TAP workspaces all workspaces --json > must match snapshot 1`] = ` diff --git a/deps/npm/test/lib/install.js b/deps/npm/test/lib/install.js index 6412b34c16f251..2cbee02e67b287 100644 --- a/deps/npm/test/lib/install.js +++ b/deps/npm/test/lib/install.js @@ -126,6 +126,146 @@ t.test('should install globally using Arborist', (t) => { }) }) +t.test('npm i -g npm engines check success', (t) => { + const Install = t.mock('../../lib/install.js', { + '../../lib/utils/reify-finish.js': async () => {}, + '@npmcli/arborist': function () { + this.reify = () => {} + }, + pacote: { + manifest: () => { + return { + version: '100.100.100', + engines: { + node: '>1', + }, + } + }, + }, + }) + const npm = mockNpm({ + globalDir: 'path/to/node_modules/', + config: { + global: true, + }, + }) + const install = new Install(npm) + install.exec(['npm'], er => { + if (er) + throw er + t.end() + }) +}) + +t.test('npm i -g npm engines check failure', (t) => { + const Install = t.mock('../../lib/install.js', { + pacote: { + manifest: () => { + return { + _id: 'npm@1.2.3', + version: '100.100.100', + engines: { + node: '>1000', + }, + } + }, + }, + }) + const npm = mockNpm({ + globalDir: 'path/to/node_modules/', + config: { + global: true, + }, + }) + const install = new Install(npm) + install.exec(['npm'], er => { + t.match(er, { + message: 'Unsupported engine', + pkgid: 'npm@1.2.3', + current: { + node: process.version, + npm: '100.100.100', + }, + required: { + node: '>1000', + }, + code: 'EBADENGINE', + }) + t.end() + }) +}) + +t.test('npm i -g npm engines check failure forced override', (t) => { + const Install = t.mock('../../lib/install.js', { + '../../lib/utils/reify-finish.js': async () => {}, + '@npmcli/arborist': function () { + this.reify = () => {} + }, + pacote: { + manifest: () => { + return { + _id: 'npm@1.2.3', + version: '100.100.100', + engines: { + node: '>1000', + }, + } + }, + }, + }) + const npm = mockNpm({ + globalDir: 'path/to/node_modules/', + config: { + force: true, + global: true, + }, + }) + const install = new Install(npm) + install.exec(['npm'], er => { + if (er) + throw er + t.end() + }) +}) + +t.test('npm i -g npm@version engines check failure', (t) => { + const Install = t.mock('../../lib/install.js', { + pacote: { + manifest: () => { + return { + _id: 'npm@1.2.3', + version: '100.100.100', + engines: { + node: '>1000', + }, + } + }, + }, + }) + const npm = mockNpm({ + globalDir: 'path/to/node_modules/', + config: { + global: true, + }, + }) + const install = new Install(npm) + install.exec(['npm@100'], er => { + t.match(er, { + message: 'Unsupported engine', + pkgid: 'npm@1.2.3', + current: { + node: process.version, + npm: '100.100.100', + }, + required: { + node: '>1000', + }, + code: 'EBADENGINE', + }) + t.end() + }) +}) + t.test('completion to folder', async t => { const Install = t.mock('../../lib/install.js', { '../../lib/utils/reify-finish.js': async () => {}, diff --git a/deps/npm/test/lib/search.js b/deps/npm/test/lib/search.js index 510a470f48088e..55b584b8aa7dc5 100644 --- a/deps/npm/test/lib/search.js +++ b/deps/npm/test/lib/search.js @@ -130,6 +130,37 @@ t.test('search --json', (t) => { src.end() }) +t.test('search --json', (t) => { + const src = new Minipass() + src.objectMode = true + + npm.flatOptions.json = true + config.json = true + const libnpmsearch = { + stream () { + return src + }, + } + + const Search = t.mock('../../lib/search.js', { + ...mocks, + libnpmsearch, + }) + const search = new Search(npm) + + search.exec(['foo'], (err) => { + if (err) + throw err + + t.equal(result, '\n[]\n', 'should have expected empty square brackets') + + config.json = false + t.end() + }) + + src.end() +}) + t.test('search --searchexclude --searchopts', t => { npm.flatOptions.search = { ...flatOptions.search, diff --git a/deps/npm/test/lib/utils/config/definitions.js b/deps/npm/test/lib/utils/config/definitions.js index 65193020d050c5..88993303b539cb 100644 --- a/deps/npm/test/lib/utils/config/definitions.js +++ b/deps/npm/test/lib/utils/config/definitions.js @@ -747,7 +747,7 @@ t.test('user-agent', t => { definitions['user-agent'].flatten('user-agent', obj, flat) t.equal(flat.userAgent, expectNoCI) t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set') - t.equal(obj['user-agent'], flat.userAgent, 'config user-agent template is translated') + t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated') obj['ci-name'] = 'foo' obj['user-agent'] = definitions['user-agent'].default @@ -755,7 +755,7 @@ t.test('user-agent', t => { definitions['user-agent'].flatten('user-agent', obj, flat) t.equal(flat.userAgent, expectCI) t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set') - t.equal(obj['user-agent'], flat.userAgent, 'config user-agent template is translated') + t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated') delete obj['ci-name'] obj.workspaces = true @@ -764,7 +764,7 @@ t.test('user-agent', t => { definitions['user-agent'].flatten('user-agent', obj, flat) t.equal(flat.userAgent, expectWorkspaces) t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set') - t.equal(obj['user-agent'], flat.userAgent, 'config user-agent template is translated') + t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated') delete obj.workspaces obj.workspace = ['foo'] @@ -772,7 +772,7 @@ t.test('user-agent', t => { definitions['user-agent'].flatten('user-agent', obj, flat) t.equal(flat.userAgent, expectWorkspaces) t.equal(process.env.npm_config_user_agent, flat.userAgent, 'npm_user_config environment is set') - t.equal(obj['user-agent'], flat.userAgent, 'config user-agent template is translated') + t.not(obj['user-agent'], flat.userAgent, 'config user-agent template is not translated') t.end() }) @@ -853,3 +853,25 @@ t.test('package-lock-only', t => { t.strictSame(flat, { packageLock: false, packageLockOnly: false }) t.end() }) + +t.test('workspaces', t => { + const obj = { + workspaces: true, + 'user-agent': definitions['user-agent'].default, + } + const flat = {} + definitions.workspaces.flatten('workspaces', obj, flat) + t.match(flat.userAgent, /workspaces\/true/) + t.end() +}) + +t.test('workspace', t => { + const obj = { + workspace: ['workspace-a'], + 'user-agent': definitions['user-agent'].default, + } + const flat = {} + definitions.workspace.flatten('workspaces', obj, flat) + t.match(flat.userAgent, /workspaces\/true/) + t.end() +}) diff --git a/deps/npm/test/lib/utils/did-you-mean.js b/deps/npm/test/lib/utils/did-you-mean.js index 15712b665be6eb..1285d5300853bc 100644 --- a/deps/npm/test/lib/utils/did-you-mean.js +++ b/deps/npm/test/lib/utils/did-you-mean.js @@ -5,34 +5,55 @@ const dym = require('../../../lib/utils/did-you-mean.js') t.test('did-you-mean', t => { npm.load(err => { t.notOk(err) - t.test('nistall', async t => { - const result = await dym(npm, npm.localPrefix, 'nistall') - t.match(result, 'npm install') - }) - t.test('sttest', async t => { - const result = await dym(npm, npm.localPrefix, 'sttest') - t.match(result, 'npm test') - t.match(result, 'npm run posttest') + t.test('with package.json', t => { + const testdir = t.testdir({ + 'package.json': JSON.stringify({ + bin: { + npx: 'exists', + }, + scripts: { + install: 'exists', + posttest: 'exists', + }, + }), + }) + t.test('nistall', async t => { + const result = await dym(npm, testdir, 'nistall') + t.match(result, 'npm install') + }) + t.test('sttest', async t => { + const result = await dym(npm, testdir, 'sttest') + t.match(result, 'npm test') + t.match(result, 'npm run posttest') + }) + t.test('npz', async t => { + const result = await dym(npm, testdir, 'npxx') + t.match(result, 'npm exec npx') + }) + t.test('qwuijbo', async t => { + const result = await dym(npm, testdir, 'qwuijbo') + t.match(result, '') + }) + t.end() }) - t.test('npz', async t => { - const result = await dym(npm, npm.localPrefix, 'npxx') - t.match(result, 'npm exec npx') + t.test('with no package.json', t => { + const testdir = t.testdir({}) + t.test('nistall', async t => { + const result = await dym(npm, testdir, 'nistall') + t.match(result, 'npm install') + }) + t.end() }) - t.test('qwuijbo', async t => { - const result = await dym(npm, npm.localPrefix, 'qwuijbo') - t.match(result, '') + t.test('missing bin and script properties', async t => { + const testdir = t.testdir({ + 'package.json': JSON.stringify({ + name: 'missing-bin', + }), + }) + + const result = await dym(npm, testdir, 'nistall') + t.match(result, 'npm install') }) t.end() }) }) - -t.test('missing bin and script properties', async t => { - const path = t.testdir({ - 'package.json': JSON.stringify({ - name: 'missing-bin', - }), - }) - - const result = await dym(npm, path, 'nistall') - t.match(result, 'npm install') -}) diff --git a/deps/npm/test/lib/utils/error-message.js b/deps/npm/test/lib/utils/error-message.js index 07328d588759b5..6b2b5c9222e77a 100644 --- a/deps/npm/test/lib/utils/error-message.js +++ b/deps/npm/test/lib/utils/error-message.js @@ -201,6 +201,17 @@ t.test('default message', t => { t.end() }) +t.test('args are cleaned', t => { + t.matchSnapshot(errorMessage(Object.assign(new Error('cmd err'), { + cmd: 'some command', + signal: 'SIGYOLO', + args: ['a', 'r', 'g', 's', 'https://evil:password@npmjs.org'], + stdout: 'stdout', + stderr: 'stderr', + }), npm)) + t.end() +}) + t.test('eacces/eperm', t => { const runTest = (windows, loaded, cachePath, cacheDest) => t => { if (windows) @@ -423,6 +434,14 @@ t.test('404', t => { t.matchSnapshot(errorMessage(er, npm)) t.end() }) + t.test('cleans sensitive info from package id', t => { + const er = Object.assign(new Error('404 not found'), { + pkgid: 'http://evil:password@npmjs.org/not-found', + code: 'E404', + }) + t.matchSnapshot(errorMessage(er, npm)) + t.end() + }) t.end() }) diff --git a/deps/npm/test/lib/view.js b/deps/npm/test/lib/view.js index 793917adc6476d..096ababb29ae83 100644 --- a/deps/npm/test/lib/view.js +++ b/deps/npm/test/lib/view.js @@ -17,6 +17,9 @@ const cleanLogs = () => { console.log = fn } +// 25 hours ago +const yesterday = new Date(Date.now() - 1000 * 60 * 60 * 25) + const packument = (nv, opts) => { if (!opts.fullMetadata) throw new Error('must fetch fullMetadata') @@ -40,7 +43,7 @@ const packument = (nv, opts) => { latest: '1.0.0', }, time: { - '1.0.0': '2019-08-06T16:21:09.842Z', + '1.0.0': yesterday, }, versions: { '1.0.0': { @@ -332,6 +335,13 @@ t.test('should log package info', t => { }) }) + t.test('package with semver range', t => { + view.exec(['blue@^1.0.0'], () => { + t.matchSnapshot(logs) + t.end() + }) + }) + t.test('package with no modified time', t => { viewUnicode.exec(['cyan@1.0.0'], () => { t.matchSnapshot(logs) diff --git a/deps/openssl/config/Makefile b/deps/openssl/config/Makefile index bfde55808dfd15..26752f43ac4913 100644 --- a/deps/openssl/config/Makefile +++ b/deps/openssl/config/Makefile @@ -15,7 +15,7 @@ linux-armv4 linux-elf linux-x32 linux-x86_64 linux-ppc \ linux-ppc64 linux-ppc64le linux32-s390x linux64-s390x linux64-mips64\ solaris-x86-gcc solaris64-x86_64-gcc VC-WIN64A VC-WIN32 -NO_ASM_ARCHS = VC-WIN64-ARM +NO_ASM_ARCHS = VC-WIN64-ARM linux64-riscv64 CC = gcc FAKE_GCC = ../config/fake_gcc.pl diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm new file mode 100644 index 00000000000000..61f27843ca4024 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm @@ -0,0 +1,15371 @@ +#! /usr/bin/env perl + +package configdata; + +use strict; +use warnings; + +use Exporter; +#use vars qw(@ISA @EXPORT); +our @ISA = qw(Exporter); +our @EXPORT = qw(%config %target %disabled %withargs %unified_info @disablables); + +our %config = ( + AR => "ar", + ARFLAGS => [ "r" ], + CC => "gcc", + CFLAGS => [ "-Wall -O3" ], + CPPDEFINES => [ ], + CPPFLAGS => [ ], + CPPINCLUDES => [ ], + CXX => "g++", + CXXFLAGS => [ "-Wall -O3" ], + HASHBANGPERL => "/usr/bin/env perl", + LDFLAGS => [ ], + LDLIBS => [ ], + PERL => "/usr/bin/perl", + RANLIB => "ranlib", + RC => "windres", + RCFLAGS => [ ], + b32 => "0", + b64 => "0", + b64l => "1", + bn_ll => "0", + build_file => "Makefile", + build_file_templates => [ "Configurations/common0.tmpl", "Configurations/unix-Makefile.tmpl", "Configurations/common.tmpl" ], + build_infos => [ "./build.info", "crypto/build.info", "ssl/build.info", "engines/build.info", "apps/build.info", "test/build.info", "util/build.info", "tools/build.info", "fuzz/build.info", "crypto/objects/build.info", "crypto/md4/build.info", "crypto/md5/build.info", "crypto/sha/build.info", "crypto/mdc2/build.info", "crypto/hmac/build.info", "crypto/ripemd/build.info", "crypto/whrlpool/build.info", "crypto/poly1305/build.info", "crypto/blake2/build.info", "crypto/siphash/build.info", "crypto/sm3/build.info", "crypto/des/build.info", "crypto/aes/build.info", "crypto/rc2/build.info", "crypto/rc4/build.info", "crypto/idea/build.info", "crypto/aria/build.info", "crypto/bf/build.info", "crypto/cast/build.info", "crypto/camellia/build.info", "crypto/seed/build.info", "crypto/sm4/build.info", "crypto/chacha/build.info", "crypto/modes/build.info", "crypto/bn/build.info", "crypto/ec/build.info", "crypto/rsa/build.info", "crypto/dsa/build.info", "crypto/dh/build.info", "crypto/sm2/build.info", "crypto/dso/build.info", "crypto/engine/build.info", "crypto/buffer/build.info", "crypto/bio/build.info", "crypto/stack/build.info", "crypto/lhash/build.info", "crypto/rand/build.info", "crypto/err/build.info", "crypto/evp/build.info", "crypto/asn1/build.info", "crypto/pem/build.info", "crypto/x509/build.info", "crypto/x509v3/build.info", "crypto/conf/build.info", "crypto/txt_db/build.info", "crypto/pkcs7/build.info", "crypto/pkcs12/build.info", "crypto/ocsp/build.info", "crypto/ui/build.info", "crypto/cms/build.info", "crypto/ts/build.info", "crypto/srp/build.info", "crypto/cmac/build.info", "crypto/ct/build.info", "crypto/async/build.info", "crypto/kdf/build.info", "crypto/store/build.info", "test/ossl_shim/build.info" ], + build_type => "release", + builddir => ".", + cflags => [ ], + conf_files => [ "Configurations/00-base-templates.conf", "Configurations/10-main.conf" ], + cppflags => [ ], + cxxflags => [ ], + defines => [ "NDEBUG" ], + dirs => [ "crypto", "ssl", "engines", "apps", "test", "util", "tools", "fuzz" ], + dynamic_engines => "0", + engdirs => [ ], + ex_libs => [ ], + export_var_as_fn => "0", + includes => [ ], + lflags => [ ], + lib_defines => [ "OPENSSL_PIC" ], + libdir => "", + major => "1", + makedepprog => "\$(CROSS_COMPILE)gcc", + minor => "1.1", + openssl_algorithm_defines => [ "OPENSSL_NO_COMP", "OPENSSL_NO_MD2", "OPENSSL_NO_RC5" ], + openssl_api_defines => [ ], + openssl_other_defines => [ "OPENSSL_RAND_SEED_OS", "OPENSSL_NO_AFALGENG", "OPENSSL_NO_ASAN", "OPENSSL_NO_ASM", "OPENSSL_NO_CRYPTO_MDEBUG", "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", "OPENSSL_NO_DEVCRYPTOENG", "OPENSSL_NO_EC_NISTP_64_GCC_128", "OPENSSL_NO_EGD", "OPENSSL_NO_EXTERNAL_TESTS", "OPENSSL_NO_FUZZ_AFL", "OPENSSL_NO_FUZZ_LIBFUZZER", "OPENSSL_NO_HEARTBEATS", "OPENSSL_NO_MSAN", "OPENSSL_NO_SCTP", "OPENSSL_NO_SSL3", "OPENSSL_NO_SSL3_METHOD", "OPENSSL_NO_UBSAN", "OPENSSL_NO_UNIT_TEST", "OPENSSL_NO_WEAK_SSL_CIPHERS", "OPENSSL_NO_DYNAMIC_ENGINE" ], + openssl_sys_defines => [ ], + openssl_thread_defines => [ "OPENSSL_THREADS" ], + openssldir => "", + options => "enable-ssl-trace no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-heartbeats no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-ubsan no-unit-test no-weak-ssl-ciphers no-zlib no-zlib-dynamic", + perl_archname => "x86_64-linux-gnu-thread-multi", + perl_cmd => "/usr/bin/perl", + perl_version => "5.26.1", + perlargv => [ "no-comp", "no-shared", "no-afalgeng", "enable-ssl-trace", "no-asm", "linux64-riscv64" ], + perlenv => { + "AR" => undef, + "ARFLAGS" => undef, + "AS" => undef, + "ASFLAGS" => undef, + "BUILDFILE" => undef, + "CC" => undef, + "CFLAGS" => undef, + "CPP" => undef, + "CPPDEFINES" => undef, + "CPPFLAGS" => undef, + "CPPINCLUDES" => undef, + "CROSS_COMPILE" => undef, + "CXX" => undef, + "CXXFLAGS" => undef, + "HASHBANGPERL" => undef, + "LD" => undef, + "LDFLAGS" => undef, + "LDLIBS" => undef, + "MT" => undef, + "MTFLAGS" => undef, + "OPENSSL_LOCAL_CONFIG_DIR" => undef, + "PERL" => undef, + "RANLIB" => undef, + "RC" => undef, + "RCFLAGS" => undef, + "RM" => undef, + "WINDRES" => undef, + "__CNF_CFLAGS" => undef, + "__CNF_CPPDEFINES" => undef, + "__CNF_CPPFLAGS" => undef, + "__CNF_CPPINCLUDES" => undef, + "__CNF_CXXFLAGS" => undef, + "__CNF_LDFLAGS" => undef, + "__CNF_LDLIBS" => undef, + }, + prefix => "", + processor => "", + rc4_int => "unsigned char", + sdirs => [ "objects", "md4", "md5", "sha", "mdc2", "hmac", "ripemd", "whrlpool", "poly1305", "blake2", "siphash", "sm3", "des", "aes", "rc2", "rc4", "idea", "aria", "bf", "cast", "camellia", "seed", "sm4", "chacha", "modes", "bn", "ec", "rsa", "dsa", "dh", "sm2", "dso", "engine", "buffer", "bio", "stack", "lhash", "rand", "err", "evp", "asn1", "pem", "x509", "x509v3", "conf", "txt_db", "pkcs7", "pkcs12", "ocsp", "ui", "cms", "ts", "srp", "cmac", "ct", "async", "kdf", "store" ], + shlib_major => "81", + shlib_minor => "1.1", + shlib_version_history => "", + shlib_version_number => "81.1.1", + sourcedir => ".", + target => "linux64-riscv64", + tdirs => [ "ossl_shim" ], + version => "1.1.1l+quic", + version_num => "0x101010cfL", +); + +our %target = ( + AR => "ar", + ARFLAGS => "r", + CC => "gcc", + CFLAGS => "-Wall -O3", + CXX => "g++", + CXXFLAGS => "-Wall -O3", + HASHBANGPERL => "/usr/bin/env perl", + RANLIB => "ranlib", + RC => "windres", + _conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ], + aes_asm_src => "aes_core.c aes_cbc.c", + aes_obj => "aes_core.o aes_cbc.o", + apps_aux_src => "", + apps_init_src => "", + apps_obj => "", + bf_asm_src => "bf_enc.c", + bf_obj => "bf_enc.o", + bn_asm_src => "bn_asm.c", + bn_obj => "bn_asm.o", + bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + build_file => "Makefile", + build_scheme => [ "unified", "unix" ], + cast_asm_src => "c_enc.c", + cast_obj => "c_enc.o", + cflags => "-pthread", + chacha_asm_src => "chacha_enc.c", + chacha_obj => "chacha_enc.o", + cmll_asm_src => "camellia.c cmll_misc.c cmll_cbc.c", + cmll_obj => "camellia.o cmll_misc.o cmll_cbc.o", + cppflags => "", + cpuid_asm_src => "mem_clr.c", + cpuid_obj => "mem_clr.o", + cxxflags => "-std=c++11 -pthread", + defines => [ ], + des_asm_src => "des_enc.c fcrypt_b.c", + des_obj => "des_enc.o fcrypt_b.o", + disable => [ ], + dso_extension => ".so", + dso_scheme => "dlfcn", + ec_asm_src => "", + ec_obj => "", + enable => [ "afalgeng" ], + ex_libs => "-ldl -pthread", + exe_extension => "", + includes => [ ], + keccak1600_asm_src => "keccak1600.c", + keccak1600_obj => "keccak1600.o", + lflags => "", + lib_cflags => "", + lib_cppflags => "-DOPENSSL_USE_NODELETE", + lib_defines => [ ], + md5_asm_src => "", + md5_obj => "", + modes_asm_src => "", + modes_obj => "", + module_cflags => "-fPIC", + module_cxxflags => "", + module_ldflags => "-Wl,-znodelete -shared -Wl,-Bsymbolic", + padlock_asm_src => "", + padlock_obj => "", + perlasm_scheme => "linux64", + poly1305_asm_src => "", + poly1305_obj => "", + rc4_asm_src => "rc4_enc.c rc4_skey.c", + rc4_obj => "rc4_enc.o rc4_skey.o", + rc5_asm_src => "rc5_enc.c", + rc5_obj => "rc5_enc.o", + rmd160_asm_src => "", + rmd160_obj => "", + shared_cflag => "-fPIC", + shared_defflag => "-Wl,--version-script=", + shared_defines => [ ], + shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)", + shared_extension_simple => ".so", + shared_ldflag => "-Wl,-znodelete -shared -Wl,-Bsymbolic", + shared_rcflag => "", + shared_sonameflag => "-Wl,-soname=", + shared_target => "linux-shared", + template => "1", + thread_defines => [ ], + thread_scheme => "pthreads", + unistd => "", + uplink_aux_src => "", + uplink_obj => "", + wp_asm_src => "wp_block.c", + wp_obj => "wp_block.o", +); + +our %available_protocols = ( + tls => [ "ssl3", "tls1", "tls1_1", "tls1_2", "tls1_3" ], + dtls => [ "dtls1", "dtls1_2" ], +); + +our @disablables = ( + "afalgeng", + "aria", + "asan", + "asm", + "async", + "autoalginit", + "autoerrinit", + "autoload-config", + "bf", + "blake2", + "buildtest-c\\+\\+", + "camellia", + "capieng", + "cast", + "chacha", + "cmac", + "cms", + "comp", + "crypto-mdebug", + "crypto-mdebug-backtrace", + "ct", + "deprecated", + "des", + "devcryptoeng", + "dgram", + "dh", + "dsa", + "dso", + "dtls", + "dynamic-engine", + "ec", + "ec2m", + "ecdh", + "ecdsa", + "ec_nistp_64_gcc_128", + "egd", + "engine", + "err", + "external-tests", + "filenames", + "fuzz-libfuzzer", + "fuzz-afl", + "gost", + "heartbeats", + "hw(-.+)?", + "idea", + "makedepend", + "md2", + "md4", + "mdc2", + "msan", + "multiblock", + "nextprotoneg", + "pinshared", + "ocb", + "ocsp", + "pic", + "poly1305", + "posix-io", + "psk", + "quic", + "rc2", + "rc4", + "rc5", + "rdrand", + "rfc3779", + "rmd160", + "scrypt", + "sctp", + "seed", + "shared", + "siphash", + "sm2", + "sm3", + "sm4", + "sock", + "srp", + "srtp", + "sse2", + "ssl", + "ssl-trace", + "static-engine", + "stdio", + "tests", + "threads", + "tls", + "ts", + "ubsan", + "ui-console", + "unit-test", + "whirlpool", + "weak-ssl-ciphers", + "zlib", + "zlib-dynamic", + "ssl3", + "ssl3-method", + "tls1", + "tls1-method", + "tls1_1", + "tls1_1-method", + "tls1_2", + "tls1_2-method", + "tls1_3", + "dtls1", + "dtls1-method", + "dtls1_2", + "dtls1_2-method", +); + +our %disabled = ( + "afalgeng" => "option", + "asan" => "default", + "asm" => "option", + "buildtest-c++" => "default", + "comp" => "option", + "crypto-mdebug" => "default", + "crypto-mdebug-backtrace" => "default", + "devcryptoeng" => "default", + "dynamic-engine" => "cascade", + "ec_nistp_64_gcc_128" => "default", + "egd" => "default", + "external-tests" => "default", + "fuzz-afl" => "default", + "fuzz-libfuzzer" => "default", + "heartbeats" => "default", + "md2" => "default", + "msan" => "default", + "rc5" => "default", + "sctp" => "default", + "shared" => "option", + "ssl3" => "default", + "ssl3-method" => "default", + "ubsan" => "default", + "unit-test" => "default", + "weak-ssl-ciphers" => "default", + "zlib" => "default", + "zlib-dynamic" => "default", +); + +our %withargs = ( +); + +our %unified_info = ( + "depends" => + { + "" => + [ + "include/crypto/bn_conf.h", + "include/crypto/dso_conf.h", + "include/openssl/opensslconf.h", + ], + "apps/asn1pars.o" => + [ + "apps/progs.h", + ], + "apps/ca.o" => + [ + "apps/progs.h", + ], + "apps/ciphers.o" => + [ + "apps/progs.h", + ], + "apps/cms.o" => + [ + "apps/progs.h", + ], + "apps/crl.o" => + [ + "apps/progs.h", + ], + "apps/crl2p7.o" => + [ + "apps/progs.h", + ], + "apps/dgst.o" => + [ + "apps/progs.h", + ], + "apps/dhparam.o" => + [ + "apps/progs.h", + ], + "apps/dsa.o" => + [ + "apps/progs.h", + ], + "apps/dsaparam.o" => + [ + "apps/progs.h", + ], + "apps/ec.o" => + [ + "apps/progs.h", + ], + "apps/ecparam.o" => + [ + "apps/progs.h", + ], + "apps/enc.o" => + [ + "apps/progs.h", + ], + "apps/engine.o" => + [ + "apps/progs.h", + ], + "apps/errstr.o" => + [ + "apps/progs.h", + ], + "apps/gendsa.o" => + [ + "apps/progs.h", + ], + "apps/genpkey.o" => + [ + "apps/progs.h", + ], + "apps/genrsa.o" => + [ + "apps/progs.h", + ], + "apps/nseq.o" => + [ + "apps/progs.h", + ], + "apps/ocsp.o" => + [ + "apps/progs.h", + ], + "apps/openssl" => + [ + "apps/libapps.a", + "libssl", + ], + "apps/openssl.o" => + [ + "apps/progs.h", + ], + "apps/passwd.o" => + [ + "apps/progs.h", + ], + "apps/pkcs12.o" => + [ + "apps/progs.h", + ], + "apps/pkcs7.o" => + [ + "apps/progs.h", + ], + "apps/pkcs8.o" => + [ + "apps/progs.h", + ], + "apps/pkey.o" => + [ + "apps/progs.h", + ], + "apps/pkeyparam.o" => + [ + "apps/progs.h", + ], + "apps/pkeyutl.o" => + [ + "apps/progs.h", + ], + "apps/prime.o" => + [ + "apps/progs.h", + ], + "apps/progs.h" => + [ + "configdata.pm", + ], + "apps/rand.o" => + [ + "apps/progs.h", + ], + "apps/rehash.o" => + [ + "apps/progs.h", + ], + "apps/req.o" => + [ + "apps/progs.h", + ], + "apps/rsa.o" => + [ + "apps/progs.h", + ], + "apps/rsautl.o" => + [ + "apps/progs.h", + ], + "apps/s_client.o" => + [ + "apps/progs.h", + ], + "apps/s_server.o" => + [ + "apps/progs.h", + ], + "apps/s_time.o" => + [ + "apps/progs.h", + ], + "apps/sess_id.o" => + [ + "apps/progs.h", + ], + "apps/smime.o" => + [ + "apps/progs.h", + ], + "apps/speed.o" => + [ + "apps/progs.h", + ], + "apps/spkac.o" => + [ + "apps/progs.h", + ], + "apps/srp.o" => + [ + "apps/progs.h", + ], + "apps/storeutl.o" => + [ + "apps/progs.h", + ], + "apps/ts.o" => + [ + "apps/progs.h", + ], + "apps/verify.o" => + [ + "apps/progs.h", + ], + "apps/version.o" => + [ + "apps/progs.h", + ], + "apps/x509.o" => + [ + "apps/progs.h", + ], + "crypto/aes/aes-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/aes/aesni-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/aes/aest4-sparcv9.S" => + [ + "crypto/perlasm/sparcv9_modes.pl", + ], + "crypto/aes/vpaes-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bf/bf-586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/bn-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/co-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/x86-gf2m.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/bn/x86-mont.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/buildinf.h" => + [ + "configdata.pm", + ], + "crypto/camellia/cmll-x86.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/camellia/cmllt4-sparcv9.S" => + [ + "crypto/perlasm/sparcv9_modes.pl", + ], + "crypto/cast/cast-586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/cversion.o" => + [ + "crypto/buildinf.h", + ], + "crypto/des/crypt586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/des/des-586.s" => + [ + "crypto/perlasm/cbc.pl", + "crypto/perlasm/x86asm.pl", + ], + "crypto/rc4/rc4-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/ripemd/rmd-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/sha/sha1-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/sha/sha256-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/sha/sha512-586.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/whrlpool/wp-mmx.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "crypto/x86cpuid.s" => + [ + "crypto/perlasm/x86asm.pl", + ], + "fuzz/asn1-test" => + [ + "libcrypto", + "libssl", + ], + "fuzz/asn1parse-test" => + [ + "libcrypto", + ], + "fuzz/bignum-test" => + [ + "libcrypto", + ], + "fuzz/bndiv-test" => + [ + "libcrypto", + ], + "fuzz/client-test" => + [ + "libcrypto", + "libssl", + ], + "fuzz/cms-test" => + [ + "libcrypto", + ], + "fuzz/conf-test" => + [ + "libcrypto", + ], + "fuzz/crl-test" => + [ + "libcrypto", + ], + "fuzz/ct-test" => + [ + "libcrypto", + ], + "fuzz/server-test" => + [ + "libcrypto", + "libssl", + ], + "fuzz/x509-test" => + [ + "libcrypto", + ], + "include/crypto/bn_conf.h" => + [ + "configdata.pm", + ], + "include/crypto/dso_conf.h" => + [ + "configdata.pm", + ], + "include/openssl/opensslconf.h" => + [ + "configdata.pm", + ], + "libcrypto.map" => + [ + "util/libcrypto.num", + ], + "libssl" => + [ + "libcrypto", + ], + "libssl.map" => + [ + "util/libssl.num", + ], + "test/aborttest" => + [ + "libcrypto", + ], + "test/afalgtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_decode_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_encode_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/asn1_string_table_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asn1_time_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/asynciotest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/asynctest" => + [ + "libcrypto", + ], + "test/bad_dtls_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/bftest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bio_callback_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bio_enc_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bio_memleak_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bioprinttest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/bntest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/buildtest_c_aes" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_asn1" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_asn1t" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_async" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_bio" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_blowfish" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_bn" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_buffer" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_camellia" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_cast" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_cmac" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_cms" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_conf" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_conf_api" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_crypto" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ct" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_des" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_dh" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_dsa" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_dtls1" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_e_os2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ebcdic" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ec" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ecdh" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ecdsa" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_engine" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_evp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_hmac" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_idea" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_kdf" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_lhash" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_md4" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_md5" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_mdc2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_modes" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_obj_mac" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_objects" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ocsp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_opensslv" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ossl_typ" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_pem" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_pem2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_pkcs12" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_pkcs7" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_rand" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_rand_drbg" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_rc2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_rc4" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ripemd" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_rsa" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_safestack" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_seed" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_sha" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_srp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_srtp" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ssl" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ssl2" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_stack" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_store" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_symhacks" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_tls1" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ts" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_txt_db" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_ui" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_whrlpool" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_x509" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_x509_vfy" => + [ + "libcrypto", + "libssl", + ], + "test/buildtest_c_x509v3" => + [ + "libcrypto", + "libssl", + ], + "test/casttest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/chacha_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/cipher_overhead_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/cipherbytes_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/cipherlist_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/ciphername_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/clienthellotest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/cmactest" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/cmsapitest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/conf_include_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/constant_time_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/crltest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ct_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ctype_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/curve448_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/d2i_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/danetest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/destest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/dhtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/drbg_cavs_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/drbgtest" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/dsa_no_digest_size_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/dsatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/dtls_mtu_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/dtlstest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/dtlsv1listentest" => + [ + "libssl", + "test/libtestutil.a", + ], + "test/ec_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/ecdsatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ecstresstest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ectest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/enginetest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/errtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/evp_extra_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/evp_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/exdatatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/exptest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/fatalerrtest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/gmdifftest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/gosttest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/hmactest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ideatest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/igetest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/lhash_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/libtestutil.a" => + [ + "libcrypto", + ], + "test/md2test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/mdc2_internal_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/mdc2test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/memleaktest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/modes_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/ocspapitest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/packettest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pbelutest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pemtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pkey_meth_kdf_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/pkey_meth_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/poly1305_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/rc2test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rc4test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rc5test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rdrand_sanitytest" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/recordlentest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/rsa_mp_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/rsa_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/sanitytest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/secmemtest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/servername_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/siphash_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/sm2_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/sm4_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/srptest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ssl_cert_table_internal_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/ssl_ctx_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/ssl_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/ssl_test_ctx_test" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/sslapitest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/sslbuffertest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/sslcorrupttest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/ssltest_old" => + [ + "libcrypto", + "libssl", + ], + "test/stack_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/sysdefaulttest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/test_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/threadstest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/time_offset_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/tls13ccstest" => + [ + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/tls13encryptiontest" => + [ + "libcrypto", + "libssl.a", + "test/libtestutil.a", + ], + "test/uitest" => + [ + "apps/libapps.a", + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "test/v3ext" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/v3nametest" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/verify_extra_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/versions" => + [ + "libcrypto", + ], + "test/wpackettest" => + [ + "libcrypto", + "libssl.a", + "test/libtestutil.a", + ], + "test/x509_check_cert_pkey_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/x509_dup_cert_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/x509_internal_test" => + [ + "libcrypto.a", + "test/libtestutil.a", + ], + "test/x509_time_test" => + [ + "libcrypto", + "test/libtestutil.a", + ], + "test/x509aux" => + [ + "libcrypto", + "test/libtestutil.a", + ], + }, + "dirinfo" => + { + "apps" => + { + "products" => + { + "bin" => + [ + "apps/openssl", + ], + "lib" => + [ + "apps/libapps.a", + ], + "script" => + [ + "apps/CA.pl", + "apps/tsget.pl", + ], + }, + }, + "crypto" => + { + "deps" => + [ + "crypto/cpt_err.o", + "crypto/cryptlib.o", + "crypto/ctype.o", + "crypto/cversion.o", + "crypto/ebcdic.o", + "crypto/ex_data.o", + "crypto/getenv.o", + "crypto/init.o", + "crypto/mem.o", + "crypto/mem_clr.o", + "crypto/mem_dbg.o", + "crypto/mem_sec.o", + "crypto/o_dir.o", + "crypto/o_fips.o", + "crypto/o_fopen.o", + "crypto/o_init.o", + "crypto/o_str.o", + "crypto/o_time.o", + "crypto/threads_none.o", + "crypto/threads_pthread.o", + "crypto/threads_win.o", + "crypto/uid.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/aes" => + { + "deps" => + [ + "crypto/aes/aes_cbc.o", + "crypto/aes/aes_cfb.o", + "crypto/aes/aes_core.o", + "crypto/aes/aes_ecb.o", + "crypto/aes/aes_ige.o", + "crypto/aes/aes_misc.o", + "crypto/aes/aes_ofb.o", + "crypto/aes/aes_wrap.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/aria" => + { + "deps" => + [ + "crypto/aria/aria.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/asn1" => + { + "deps" => + [ + "crypto/asn1/a_bitstr.o", + "crypto/asn1/a_d2i_fp.o", + "crypto/asn1/a_digest.o", + "crypto/asn1/a_dup.o", + "crypto/asn1/a_gentm.o", + "crypto/asn1/a_i2d_fp.o", + "crypto/asn1/a_int.o", + "crypto/asn1/a_mbstr.o", + "crypto/asn1/a_object.o", + "crypto/asn1/a_octet.o", + "crypto/asn1/a_print.o", + "crypto/asn1/a_sign.o", + "crypto/asn1/a_strex.o", + "crypto/asn1/a_strnid.o", + "crypto/asn1/a_time.o", + "crypto/asn1/a_type.o", + "crypto/asn1/a_utctm.o", + "crypto/asn1/a_utf8.o", + "crypto/asn1/a_verify.o", + "crypto/asn1/ameth_lib.o", + "crypto/asn1/asn1_err.o", + "crypto/asn1/asn1_gen.o", + "crypto/asn1/asn1_item_list.o", + "crypto/asn1/asn1_lib.o", + "crypto/asn1/asn1_par.o", + "crypto/asn1/asn_mime.o", + "crypto/asn1/asn_moid.o", + "crypto/asn1/asn_mstbl.o", + "crypto/asn1/asn_pack.o", + "crypto/asn1/bio_asn1.o", + "crypto/asn1/bio_ndef.o", + "crypto/asn1/d2i_pr.o", + "crypto/asn1/d2i_pu.o", + "crypto/asn1/evp_asn1.o", + "crypto/asn1/f_int.o", + "crypto/asn1/f_string.o", + "crypto/asn1/i2d_pr.o", + "crypto/asn1/i2d_pu.o", + "crypto/asn1/n_pkey.o", + "crypto/asn1/nsseq.o", + "crypto/asn1/p5_pbe.o", + "crypto/asn1/p5_pbev2.o", + "crypto/asn1/p5_scrypt.o", + "crypto/asn1/p8_pkey.o", + "crypto/asn1/t_bitst.o", + "crypto/asn1/t_pkey.o", + "crypto/asn1/t_spki.o", + "crypto/asn1/tasn_dec.o", + "crypto/asn1/tasn_enc.o", + "crypto/asn1/tasn_fre.o", + "crypto/asn1/tasn_new.o", + "crypto/asn1/tasn_prn.o", + "crypto/asn1/tasn_scn.o", + "crypto/asn1/tasn_typ.o", + "crypto/asn1/tasn_utl.o", + "crypto/asn1/x_algor.o", + "crypto/asn1/x_bignum.o", + "crypto/asn1/x_info.o", + "crypto/asn1/x_int64.o", + "crypto/asn1/x_long.o", + "crypto/asn1/x_pkey.o", + "crypto/asn1/x_sig.o", + "crypto/asn1/x_spki.o", + "crypto/asn1/x_val.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/async" => + { + "deps" => + [ + "crypto/async/async.o", + "crypto/async/async_err.o", + "crypto/async/async_wait.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/async/arch" => + { + "deps" => + [ + "crypto/async/arch/async_null.o", + "crypto/async/arch/async_posix.o", + "crypto/async/arch/async_win.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/bf" => + { + "deps" => + [ + "crypto/bf/bf_cfb64.o", + "crypto/bf/bf_ecb.o", + "crypto/bf/bf_enc.o", + "crypto/bf/bf_ofb64.o", + "crypto/bf/bf_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/bio" => + { + "deps" => + [ + "crypto/bio/b_addr.o", + "crypto/bio/b_dump.o", + "crypto/bio/b_print.o", + "crypto/bio/b_sock.o", + "crypto/bio/b_sock2.o", + "crypto/bio/bf_buff.o", + "crypto/bio/bf_lbuf.o", + "crypto/bio/bf_nbio.o", + "crypto/bio/bf_null.o", + "crypto/bio/bio_cb.o", + "crypto/bio/bio_err.o", + "crypto/bio/bio_lib.o", + "crypto/bio/bio_meth.o", + "crypto/bio/bss_acpt.o", + "crypto/bio/bss_bio.o", + "crypto/bio/bss_conn.o", + "crypto/bio/bss_dgram.o", + "crypto/bio/bss_fd.o", + "crypto/bio/bss_file.o", + "crypto/bio/bss_log.o", + "crypto/bio/bss_mem.o", + "crypto/bio/bss_null.o", + "crypto/bio/bss_sock.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/blake2" => + { + "deps" => + [ + "crypto/blake2/blake2b.o", + "crypto/blake2/blake2s.o", + "crypto/blake2/m_blake2b.o", + "crypto/blake2/m_blake2s.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/bn" => + { + "deps" => + [ + "crypto/bn/bn_add.o", + "crypto/bn/bn_asm.o", + "crypto/bn/bn_blind.o", + "crypto/bn/bn_const.o", + "crypto/bn/bn_ctx.o", + "crypto/bn/bn_depr.o", + "crypto/bn/bn_dh.o", + "crypto/bn/bn_div.o", + "crypto/bn/bn_err.o", + "crypto/bn/bn_exp.o", + "crypto/bn/bn_exp2.o", + "crypto/bn/bn_gcd.o", + "crypto/bn/bn_gf2m.o", + "crypto/bn/bn_intern.o", + "crypto/bn/bn_kron.o", + "crypto/bn/bn_lib.o", + "crypto/bn/bn_mod.o", + "crypto/bn/bn_mont.o", + "crypto/bn/bn_mpi.o", + "crypto/bn/bn_mul.o", + "crypto/bn/bn_nist.o", + "crypto/bn/bn_prime.o", + "crypto/bn/bn_print.o", + "crypto/bn/bn_rand.o", + "crypto/bn/bn_recp.o", + "crypto/bn/bn_shift.o", + "crypto/bn/bn_sqr.o", + "crypto/bn/bn_sqrt.o", + "crypto/bn/bn_srp.o", + "crypto/bn/bn_word.o", + "crypto/bn/bn_x931p.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/buffer" => + { + "deps" => + [ + "crypto/buffer/buf_err.o", + "crypto/buffer/buffer.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/camellia" => + { + "deps" => + [ + "crypto/camellia/camellia.o", + "crypto/camellia/cmll_cbc.o", + "crypto/camellia/cmll_cfb.o", + "crypto/camellia/cmll_ctr.o", + "crypto/camellia/cmll_ecb.o", + "crypto/camellia/cmll_misc.o", + "crypto/camellia/cmll_ofb.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/cast" => + { + "deps" => + [ + "crypto/cast/c_cfb64.o", + "crypto/cast/c_ecb.o", + "crypto/cast/c_enc.o", + "crypto/cast/c_ofb64.o", + "crypto/cast/c_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/chacha" => + { + "deps" => + [ + "crypto/chacha/chacha_enc.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/cmac" => + { + "deps" => + [ + "crypto/cmac/cm_ameth.o", + "crypto/cmac/cm_pmeth.o", + "crypto/cmac/cmac.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/cms" => + { + "deps" => + [ + "crypto/cms/cms_asn1.o", + "crypto/cms/cms_att.o", + "crypto/cms/cms_cd.o", + "crypto/cms/cms_dd.o", + "crypto/cms/cms_enc.o", + "crypto/cms/cms_env.o", + "crypto/cms/cms_err.o", + "crypto/cms/cms_ess.o", + "crypto/cms/cms_io.o", + "crypto/cms/cms_kari.o", + "crypto/cms/cms_lib.o", + "crypto/cms/cms_pwri.o", + "crypto/cms/cms_sd.o", + "crypto/cms/cms_smime.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/conf" => + { + "deps" => + [ + "crypto/conf/conf_api.o", + "crypto/conf/conf_def.o", + "crypto/conf/conf_err.o", + "crypto/conf/conf_lib.o", + "crypto/conf/conf_mall.o", + "crypto/conf/conf_mod.o", + "crypto/conf/conf_sap.o", + "crypto/conf/conf_ssl.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ct" => + { + "deps" => + [ + "crypto/ct/ct_b64.o", + "crypto/ct/ct_err.o", + "crypto/ct/ct_log.o", + "crypto/ct/ct_oct.o", + "crypto/ct/ct_policy.o", + "crypto/ct/ct_prn.o", + "crypto/ct/ct_sct.o", + "crypto/ct/ct_sct_ctx.o", + "crypto/ct/ct_vfy.o", + "crypto/ct/ct_x509v3.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/des" => + { + "deps" => + [ + "crypto/des/cbc_cksm.o", + "crypto/des/cbc_enc.o", + "crypto/des/cfb64ede.o", + "crypto/des/cfb64enc.o", + "crypto/des/cfb_enc.o", + "crypto/des/des_enc.o", + "crypto/des/ecb3_enc.o", + "crypto/des/ecb_enc.o", + "crypto/des/fcrypt.o", + "crypto/des/fcrypt_b.o", + "crypto/des/ofb64ede.o", + "crypto/des/ofb64enc.o", + "crypto/des/ofb_enc.o", + "crypto/des/pcbc_enc.o", + "crypto/des/qud_cksm.o", + "crypto/des/rand_key.o", + "crypto/des/set_key.o", + "crypto/des/str2key.o", + "crypto/des/xcbc_enc.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/dh" => + { + "deps" => + [ + "crypto/dh/dh_ameth.o", + "crypto/dh/dh_asn1.o", + "crypto/dh/dh_check.o", + "crypto/dh/dh_depr.o", + "crypto/dh/dh_err.o", + "crypto/dh/dh_gen.o", + "crypto/dh/dh_kdf.o", + "crypto/dh/dh_key.o", + "crypto/dh/dh_lib.o", + "crypto/dh/dh_meth.o", + "crypto/dh/dh_pmeth.o", + "crypto/dh/dh_prn.o", + "crypto/dh/dh_rfc5114.o", + "crypto/dh/dh_rfc7919.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/dsa" => + { + "deps" => + [ + "crypto/dsa/dsa_ameth.o", + "crypto/dsa/dsa_asn1.o", + "crypto/dsa/dsa_depr.o", + "crypto/dsa/dsa_err.o", + "crypto/dsa/dsa_gen.o", + "crypto/dsa/dsa_key.o", + "crypto/dsa/dsa_lib.o", + "crypto/dsa/dsa_meth.o", + "crypto/dsa/dsa_ossl.o", + "crypto/dsa/dsa_pmeth.o", + "crypto/dsa/dsa_prn.o", + "crypto/dsa/dsa_sign.o", + "crypto/dsa/dsa_vrf.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/dso" => + { + "deps" => + [ + "crypto/dso/dso_dl.o", + "crypto/dso/dso_dlfcn.o", + "crypto/dso/dso_err.o", + "crypto/dso/dso_lib.o", + "crypto/dso/dso_openssl.o", + "crypto/dso/dso_vms.o", + "crypto/dso/dso_win32.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ec" => + { + "deps" => + [ + "crypto/ec/curve25519.o", + "crypto/ec/ec2_oct.o", + "crypto/ec/ec2_smpl.o", + "crypto/ec/ec_ameth.o", + "crypto/ec/ec_asn1.o", + "crypto/ec/ec_check.o", + "crypto/ec/ec_curve.o", + "crypto/ec/ec_cvt.o", + "crypto/ec/ec_err.o", + "crypto/ec/ec_key.o", + "crypto/ec/ec_kmeth.o", + "crypto/ec/ec_lib.o", + "crypto/ec/ec_mult.o", + "crypto/ec/ec_oct.o", + "crypto/ec/ec_pmeth.o", + "crypto/ec/ec_print.o", + "crypto/ec/ecdh_kdf.o", + "crypto/ec/ecdh_ossl.o", + "crypto/ec/ecdsa_ossl.o", + "crypto/ec/ecdsa_sign.o", + "crypto/ec/ecdsa_vrf.o", + "crypto/ec/eck_prn.o", + "crypto/ec/ecp_mont.o", + "crypto/ec/ecp_nist.o", + "crypto/ec/ecp_nistp224.o", + "crypto/ec/ecp_nistp256.o", + "crypto/ec/ecp_nistp521.o", + "crypto/ec/ecp_nistputil.o", + "crypto/ec/ecp_oct.o", + "crypto/ec/ecp_smpl.o", + "crypto/ec/ecx_meth.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ec/curve448" => + { + "deps" => + [ + "crypto/ec/curve448/curve448.o", + "crypto/ec/curve448/curve448_tables.o", + "crypto/ec/curve448/eddsa.o", + "crypto/ec/curve448/f_generic.o", + "crypto/ec/curve448/scalar.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ec/curve448/arch_32" => + { + "deps" => + [ + "crypto/ec/curve448/arch_32/f_impl.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/engine" => + { + "deps" => + [ + "crypto/engine/eng_all.o", + "crypto/engine/eng_cnf.o", + "crypto/engine/eng_ctrl.o", + "crypto/engine/eng_dyn.o", + "crypto/engine/eng_err.o", + "crypto/engine/eng_fat.o", + "crypto/engine/eng_init.o", + "crypto/engine/eng_lib.o", + "crypto/engine/eng_list.o", + "crypto/engine/eng_openssl.o", + "crypto/engine/eng_pkey.o", + "crypto/engine/eng_rdrand.o", + "crypto/engine/eng_table.o", + "crypto/engine/tb_asnmth.o", + "crypto/engine/tb_cipher.o", + "crypto/engine/tb_dh.o", + "crypto/engine/tb_digest.o", + "crypto/engine/tb_dsa.o", + "crypto/engine/tb_eckey.o", + "crypto/engine/tb_pkmeth.o", + "crypto/engine/tb_rand.o", + "crypto/engine/tb_rsa.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/err" => + { + "deps" => + [ + "crypto/err/err.o", + "crypto/err/err_all.o", + "crypto/err/err_prn.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/evp" => + { + "deps" => + [ + "crypto/evp/bio_b64.o", + "crypto/evp/bio_enc.o", + "crypto/evp/bio_md.o", + "crypto/evp/bio_ok.o", + "crypto/evp/c_allc.o", + "crypto/evp/c_alld.o", + "crypto/evp/cmeth_lib.o", + "crypto/evp/digest.o", + "crypto/evp/e_aes.o", + "crypto/evp/e_aes_cbc_hmac_sha1.o", + "crypto/evp/e_aes_cbc_hmac_sha256.o", + "crypto/evp/e_aria.o", + "crypto/evp/e_bf.o", + "crypto/evp/e_camellia.o", + "crypto/evp/e_cast.o", + "crypto/evp/e_chacha20_poly1305.o", + "crypto/evp/e_des.o", + "crypto/evp/e_des3.o", + "crypto/evp/e_idea.o", + "crypto/evp/e_null.o", + "crypto/evp/e_old.o", + "crypto/evp/e_rc2.o", + "crypto/evp/e_rc4.o", + "crypto/evp/e_rc4_hmac_md5.o", + "crypto/evp/e_rc5.o", + "crypto/evp/e_seed.o", + "crypto/evp/e_sm4.o", + "crypto/evp/e_xcbc_d.o", + "crypto/evp/encode.o", + "crypto/evp/evp_cnf.o", + "crypto/evp/evp_enc.o", + "crypto/evp/evp_err.o", + "crypto/evp/evp_key.o", + "crypto/evp/evp_lib.o", + "crypto/evp/evp_pbe.o", + "crypto/evp/evp_pkey.o", + "crypto/evp/m_md2.o", + "crypto/evp/m_md4.o", + "crypto/evp/m_md5.o", + "crypto/evp/m_md5_sha1.o", + "crypto/evp/m_mdc2.o", + "crypto/evp/m_null.o", + "crypto/evp/m_ripemd.o", + "crypto/evp/m_sha1.o", + "crypto/evp/m_sha3.o", + "crypto/evp/m_sigver.o", + "crypto/evp/m_wp.o", + "crypto/evp/names.o", + "crypto/evp/p5_crpt.o", + "crypto/evp/p5_crpt2.o", + "crypto/evp/p_dec.o", + "crypto/evp/p_enc.o", + "crypto/evp/p_lib.o", + "crypto/evp/p_open.o", + "crypto/evp/p_seal.o", + "crypto/evp/p_sign.o", + "crypto/evp/p_verify.o", + "crypto/evp/pbe_scrypt.o", + "crypto/evp/pmeth_fn.o", + "crypto/evp/pmeth_gn.o", + "crypto/evp/pmeth_lib.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/hmac" => + { + "deps" => + [ + "crypto/hmac/hm_ameth.o", + "crypto/hmac/hm_pmeth.o", + "crypto/hmac/hmac.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/idea" => + { + "deps" => + [ + "crypto/idea/i_cbc.o", + "crypto/idea/i_cfb64.o", + "crypto/idea/i_ecb.o", + "crypto/idea/i_ofb64.o", + "crypto/idea/i_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/kdf" => + { + "deps" => + [ + "crypto/kdf/hkdf.o", + "crypto/kdf/kdf_err.o", + "crypto/kdf/scrypt.o", + "crypto/kdf/tls1_prf.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/lhash" => + { + "deps" => + [ + "crypto/lhash/lh_stats.o", + "crypto/lhash/lhash.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/md4" => + { + "deps" => + [ + "crypto/md4/md4_dgst.o", + "crypto/md4/md4_one.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/md5" => + { + "deps" => + [ + "crypto/md5/md5_dgst.o", + "crypto/md5/md5_one.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/mdc2" => + { + "deps" => + [ + "crypto/mdc2/mdc2_one.o", + "crypto/mdc2/mdc2dgst.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/modes" => + { + "deps" => + [ + "crypto/modes/cbc128.o", + "crypto/modes/ccm128.o", + "crypto/modes/cfb128.o", + "crypto/modes/ctr128.o", + "crypto/modes/cts128.o", + "crypto/modes/gcm128.o", + "crypto/modes/ocb128.o", + "crypto/modes/ofb128.o", + "crypto/modes/wrap128.o", + "crypto/modes/xts128.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/objects" => + { + "deps" => + [ + "crypto/objects/o_names.o", + "crypto/objects/obj_dat.o", + "crypto/objects/obj_err.o", + "crypto/objects/obj_lib.o", + "crypto/objects/obj_xref.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ocsp" => + { + "deps" => + [ + "crypto/ocsp/ocsp_asn.o", + "crypto/ocsp/ocsp_cl.o", + "crypto/ocsp/ocsp_err.o", + "crypto/ocsp/ocsp_ext.o", + "crypto/ocsp/ocsp_ht.o", + "crypto/ocsp/ocsp_lib.o", + "crypto/ocsp/ocsp_prn.o", + "crypto/ocsp/ocsp_srv.o", + "crypto/ocsp/ocsp_vfy.o", + "crypto/ocsp/v3_ocsp.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/pem" => + { + "deps" => + [ + "crypto/pem/pem_all.o", + "crypto/pem/pem_err.o", + "crypto/pem/pem_info.o", + "crypto/pem/pem_lib.o", + "crypto/pem/pem_oth.o", + "crypto/pem/pem_pk8.o", + "crypto/pem/pem_pkey.o", + "crypto/pem/pem_sign.o", + "crypto/pem/pem_x509.o", + "crypto/pem/pem_xaux.o", + "crypto/pem/pvkfmt.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/pkcs12" => + { + "deps" => + [ + "crypto/pkcs12/p12_add.o", + "crypto/pkcs12/p12_asn.o", + "crypto/pkcs12/p12_attr.o", + "crypto/pkcs12/p12_crpt.o", + "crypto/pkcs12/p12_crt.o", + "crypto/pkcs12/p12_decr.o", + "crypto/pkcs12/p12_init.o", + "crypto/pkcs12/p12_key.o", + "crypto/pkcs12/p12_kiss.o", + "crypto/pkcs12/p12_mutl.o", + "crypto/pkcs12/p12_npas.o", + "crypto/pkcs12/p12_p8d.o", + "crypto/pkcs12/p12_p8e.o", + "crypto/pkcs12/p12_sbag.o", + "crypto/pkcs12/p12_utl.o", + "crypto/pkcs12/pk12err.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/pkcs7" => + { + "deps" => + [ + "crypto/pkcs7/bio_pk7.o", + "crypto/pkcs7/pk7_asn1.o", + "crypto/pkcs7/pk7_attr.o", + "crypto/pkcs7/pk7_doit.o", + "crypto/pkcs7/pk7_lib.o", + "crypto/pkcs7/pk7_mime.o", + "crypto/pkcs7/pk7_smime.o", + "crypto/pkcs7/pkcs7err.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/poly1305" => + { + "deps" => + [ + "crypto/poly1305/poly1305.o", + "crypto/poly1305/poly1305_ameth.o", + "crypto/poly1305/poly1305_pmeth.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rand" => + { + "deps" => + [ + "crypto/rand/drbg_ctr.o", + "crypto/rand/drbg_lib.o", + "crypto/rand/rand_egd.o", + "crypto/rand/rand_err.o", + "crypto/rand/rand_lib.o", + "crypto/rand/rand_unix.o", + "crypto/rand/rand_vms.o", + "crypto/rand/rand_win.o", + "crypto/rand/randfile.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rc2" => + { + "deps" => + [ + "crypto/rc2/rc2_cbc.o", + "crypto/rc2/rc2_ecb.o", + "crypto/rc2/rc2_skey.o", + "crypto/rc2/rc2cfb64.o", + "crypto/rc2/rc2ofb64.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rc4" => + { + "deps" => + [ + "crypto/rc4/rc4_enc.o", + "crypto/rc4/rc4_skey.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ripemd" => + { + "deps" => + [ + "crypto/ripemd/rmd_dgst.o", + "crypto/ripemd/rmd_one.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/rsa" => + { + "deps" => + [ + "crypto/rsa/rsa_ameth.o", + "crypto/rsa/rsa_asn1.o", + "crypto/rsa/rsa_chk.o", + "crypto/rsa/rsa_crpt.o", + "crypto/rsa/rsa_depr.o", + "crypto/rsa/rsa_err.o", + "crypto/rsa/rsa_gen.o", + "crypto/rsa/rsa_lib.o", + "crypto/rsa/rsa_meth.o", + "crypto/rsa/rsa_mp.o", + "crypto/rsa/rsa_none.o", + "crypto/rsa/rsa_oaep.o", + "crypto/rsa/rsa_ossl.o", + "crypto/rsa/rsa_pk1.o", + "crypto/rsa/rsa_pmeth.o", + "crypto/rsa/rsa_prn.o", + "crypto/rsa/rsa_pss.o", + "crypto/rsa/rsa_saos.o", + "crypto/rsa/rsa_sign.o", + "crypto/rsa/rsa_ssl.o", + "crypto/rsa/rsa_x931.o", + "crypto/rsa/rsa_x931g.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/seed" => + { + "deps" => + [ + "crypto/seed/seed.o", + "crypto/seed/seed_cbc.o", + "crypto/seed/seed_cfb.o", + "crypto/seed/seed_ecb.o", + "crypto/seed/seed_ofb.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sha" => + { + "deps" => + [ + "crypto/sha/keccak1600.o", + "crypto/sha/sha1_one.o", + "crypto/sha/sha1dgst.o", + "crypto/sha/sha256.o", + "crypto/sha/sha512.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/siphash" => + { + "deps" => + [ + "crypto/siphash/siphash.o", + "crypto/siphash/siphash_ameth.o", + "crypto/siphash/siphash_pmeth.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sm2" => + { + "deps" => + [ + "crypto/sm2/sm2_crypt.o", + "crypto/sm2/sm2_err.o", + "crypto/sm2/sm2_pmeth.o", + "crypto/sm2/sm2_sign.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sm3" => + { + "deps" => + [ + "crypto/sm3/m_sm3.o", + "crypto/sm3/sm3.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/sm4" => + { + "deps" => + [ + "crypto/sm4/sm4.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/srp" => + { + "deps" => + [ + "crypto/srp/srp_lib.o", + "crypto/srp/srp_vfy.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/stack" => + { + "deps" => + [ + "crypto/stack/stack.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/store" => + { + "deps" => + [ + "crypto/store/loader_file.o", + "crypto/store/store_err.o", + "crypto/store/store_init.o", + "crypto/store/store_lib.o", + "crypto/store/store_register.o", + "crypto/store/store_strings.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ts" => + { + "deps" => + [ + "crypto/ts/ts_asn1.o", + "crypto/ts/ts_conf.o", + "crypto/ts/ts_err.o", + "crypto/ts/ts_lib.o", + "crypto/ts/ts_req_print.o", + "crypto/ts/ts_req_utils.o", + "crypto/ts/ts_rsp_print.o", + "crypto/ts/ts_rsp_sign.o", + "crypto/ts/ts_rsp_utils.o", + "crypto/ts/ts_rsp_verify.o", + "crypto/ts/ts_verify_ctx.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/txt_db" => + { + "deps" => + [ + "crypto/txt_db/txt_db.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/ui" => + { + "deps" => + [ + "crypto/ui/ui_err.o", + "crypto/ui/ui_lib.o", + "crypto/ui/ui_null.o", + "crypto/ui/ui_openssl.o", + "crypto/ui/ui_util.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/whrlpool" => + { + "deps" => + [ + "crypto/whrlpool/wp_block.o", + "crypto/whrlpool/wp_dgst.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/x509" => + { + "deps" => + [ + "crypto/x509/by_dir.o", + "crypto/x509/by_file.o", + "crypto/x509/t_crl.o", + "crypto/x509/t_req.o", + "crypto/x509/t_x509.o", + "crypto/x509/x509_att.o", + "crypto/x509/x509_cmp.o", + "crypto/x509/x509_d2.o", + "crypto/x509/x509_def.o", + "crypto/x509/x509_err.o", + "crypto/x509/x509_ext.o", + "crypto/x509/x509_lu.o", + "crypto/x509/x509_meth.o", + "crypto/x509/x509_obj.o", + "crypto/x509/x509_r2x.o", + "crypto/x509/x509_req.o", + "crypto/x509/x509_set.o", + "crypto/x509/x509_trs.o", + "crypto/x509/x509_txt.o", + "crypto/x509/x509_v3.o", + "crypto/x509/x509_vfy.o", + "crypto/x509/x509_vpm.o", + "crypto/x509/x509cset.o", + "crypto/x509/x509name.o", + "crypto/x509/x509rset.o", + "crypto/x509/x509spki.o", + "crypto/x509/x509type.o", + "crypto/x509/x_all.o", + "crypto/x509/x_attrib.o", + "crypto/x509/x_crl.o", + "crypto/x509/x_exten.o", + "crypto/x509/x_name.o", + "crypto/x509/x_pubkey.o", + "crypto/x509/x_req.o", + "crypto/x509/x_x509.o", + "crypto/x509/x_x509a.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "crypto/x509v3" => + { + "deps" => + [ + "crypto/x509v3/pcy_cache.o", + "crypto/x509v3/pcy_data.o", + "crypto/x509v3/pcy_lib.o", + "crypto/x509v3/pcy_map.o", + "crypto/x509v3/pcy_node.o", + "crypto/x509v3/pcy_tree.o", + "crypto/x509v3/v3_addr.o", + "crypto/x509v3/v3_admis.o", + "crypto/x509v3/v3_akey.o", + "crypto/x509v3/v3_akeya.o", + "crypto/x509v3/v3_alt.o", + "crypto/x509v3/v3_asid.o", + "crypto/x509v3/v3_bcons.o", + "crypto/x509v3/v3_bitst.o", + "crypto/x509v3/v3_conf.o", + "crypto/x509v3/v3_cpols.o", + "crypto/x509v3/v3_crld.o", + "crypto/x509v3/v3_enum.o", + "crypto/x509v3/v3_extku.o", + "crypto/x509v3/v3_genn.o", + "crypto/x509v3/v3_ia5.o", + "crypto/x509v3/v3_info.o", + "crypto/x509v3/v3_int.o", + "crypto/x509v3/v3_lib.o", + "crypto/x509v3/v3_ncons.o", + "crypto/x509v3/v3_pci.o", + "crypto/x509v3/v3_pcia.o", + "crypto/x509v3/v3_pcons.o", + "crypto/x509v3/v3_pku.o", + "crypto/x509v3/v3_pmaps.o", + "crypto/x509v3/v3_prn.o", + "crypto/x509v3/v3_purp.o", + "crypto/x509v3/v3_skey.o", + "crypto/x509v3/v3_sxnet.o", + "crypto/x509v3/v3_tlsf.o", + "crypto/x509v3/v3_utl.o", + "crypto/x509v3/v3err.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "engines" => + { + "deps" => + [ + "engines/e_capi.o", + "engines/e_padlock.o", + ], + "products" => + { + "lib" => + [ + "libcrypto", + ], + }, + }, + "fuzz" => + { + "products" => + { + "bin" => + [ + "fuzz/asn1-test", + "fuzz/asn1parse-test", + "fuzz/bignum-test", + "fuzz/bndiv-test", + "fuzz/client-test", + "fuzz/cms-test", + "fuzz/conf-test", + "fuzz/crl-test", + "fuzz/ct-test", + "fuzz/server-test", + "fuzz/x509-test", + ], + }, + }, + "ssl" => + { + "deps" => + [ + "ssl/bio_ssl.o", + "ssl/d1_lib.o", + "ssl/d1_msg.o", + "ssl/d1_srtp.o", + "ssl/methods.o", + "ssl/packet.o", + "ssl/pqueue.o", + "ssl/s3_cbc.o", + "ssl/s3_enc.o", + "ssl/s3_lib.o", + "ssl/s3_msg.o", + "ssl/ssl_asn1.o", + "ssl/ssl_cert.o", + "ssl/ssl_ciph.o", + "ssl/ssl_conf.o", + "ssl/ssl_err.o", + "ssl/ssl_init.o", + "ssl/ssl_lib.o", + "ssl/ssl_mcnf.o", + "ssl/ssl_quic.o", + "ssl/ssl_rsa.o", + "ssl/ssl_sess.o", + "ssl/ssl_stat.o", + "ssl/ssl_txt.o", + "ssl/ssl_utst.o", + "ssl/t1_enc.o", + "ssl/t1_lib.o", + "ssl/t1_trce.o", + "ssl/tls13_enc.o", + "ssl/tls_srp.o", + ], + "products" => + { + "lib" => + [ + "libssl", + ], + }, + }, + "ssl/record" => + { + "deps" => + [ + "ssl/record/dtls1_bitmap.o", + "ssl/record/rec_layer_d1.o", + "ssl/record/rec_layer_s3.o", + "ssl/record/ssl3_buffer.o", + "ssl/record/ssl3_record.o", + "ssl/record/ssl3_record_tls13.o", + ], + "products" => + { + "lib" => + [ + "libssl", + ], + }, + }, + "ssl/statem" => + { + "deps" => + [ + "ssl/statem/extensions.o", + "ssl/statem/extensions_clnt.o", + "ssl/statem/extensions_cust.o", + "ssl/statem/extensions_srvr.o", + "ssl/statem/statem.o", + "ssl/statem/statem_clnt.o", + "ssl/statem/statem_dtls.o", + "ssl/statem/statem_lib.o", + "ssl/statem/statem_quic.o", + "ssl/statem/statem_srvr.o", + ], + "products" => + { + "lib" => + [ + "libssl", + ], + }, + }, + "test/testutil" => + { + "deps" => + [ + "test/testutil/basic_output.o", + "test/testutil/cb.o", + "test/testutil/driver.o", + "test/testutil/format_output.o", + "test/testutil/main.o", + "test/testutil/output_helpers.o", + "test/testutil/random.o", + "test/testutil/stanza.o", + "test/testutil/tap_bio.o", + "test/testutil/test_cleanup.o", + "test/testutil/tests.o", + "test/testutil/testutil_init.o", + ], + "products" => + { + "lib" => + [ + "test/libtestutil.a", + ], + }, + }, + "tools" => + { + "products" => + { + "script" => + [ + "tools/c_rehash", + ], + }, + }, + "util" => + { + "products" => + { + "script" => + [ + "util/shlib_wrap.sh", + ], + }, + }, + }, + "engines" => + [ + ], + "extra" => + [ + "crypto/alphacpuid.pl", + "crypto/arm64cpuid.pl", + "crypto/armv4cpuid.pl", + "crypto/ia64cpuid.S", + "crypto/pariscid.pl", + "crypto/ppccpuid.pl", + "crypto/x86_64cpuid.pl", + "crypto/x86cpuid.pl", + "ms/applink.c", + "ms/uplink-x86.pl", + "ms/uplink.c", + ], + "generate" => + { + "apps/progs.h" => + [ + "apps/progs.pl", + "\$(APPS_OPENSSL)", + ], + "crypto/aes/aes-586.s" => + [ + "crypto/aes/asm/aes-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/aes/aes-armv4.S" => + [ + "crypto/aes/asm/aes-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-ia64.s" => + [ + "crypto/aes/asm/aes-ia64.S", + ], + "crypto/aes/aes-mips.S" => + [ + "crypto/aes/asm/aes-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-parisc.s" => + [ + "crypto/aes/asm/aes-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-ppc.s" => + [ + "crypto/aes/asm/aes-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-s390x.S" => + [ + "crypto/aes/asm/aes-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-sparcv9.S" => + [ + "crypto/aes/asm/aes-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aes-x86_64.s" => + [ + "crypto/aes/asm/aes-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesfx-sparcv9.S" => + [ + "crypto/aes/asm/aesfx-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-mb-x86_64.s" => + [ + "crypto/aes/asm/aesni-mb-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-sha1-x86_64.s" => + [ + "crypto/aes/asm/aesni-sha1-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-sha256-x86_64.s" => + [ + "crypto/aes/asm/aesni-sha256-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesni-x86.s" => + [ + "crypto/aes/asm/aesni-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/aes/aesni-x86_64.s" => + [ + "crypto/aes/asm/aesni-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesp8-ppc.s" => + [ + "crypto/aes/asm/aesp8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aest4-sparcv9.S" => + [ + "crypto/aes/asm/aest4-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/aesv8-armx.S" => + [ + "crypto/aes/asm/aesv8-armx.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/bsaes-armv7.S" => + [ + "crypto/aes/asm/bsaes-armv7.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/bsaes-x86_64.s" => + [ + "crypto/aes/asm/bsaes-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/vpaes-armv8.S" => + [ + "crypto/aes/asm/vpaes-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/vpaes-ppc.s" => + [ + "crypto/aes/asm/vpaes-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/aes/vpaes-x86.s" => + [ + "crypto/aes/asm/vpaes-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/aes/vpaes-x86_64.s" => + [ + "crypto/aes/asm/vpaes-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/alphacpuid.s" => + [ + "crypto/alphacpuid.pl", + ], + "crypto/arm64cpuid.S" => + [ + "crypto/arm64cpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/armv4cpuid.S" => + [ + "crypto/armv4cpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bf/bf-586.s" => + [ + "crypto/bf/asm/bf-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/alpha-mont.S" => + [ + "crypto/bn/asm/alpha-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/armv4-gf2m.S" => + [ + "crypto/bn/asm/armv4-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/armv4-mont.S" => + [ + "crypto/bn/asm/armv4-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/armv8-mont.S" => + [ + "crypto/bn/asm/armv8-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/bn-586.s" => + [ + "crypto/bn/asm/bn-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/bn-ia64.s" => + [ + "crypto/bn/asm/ia64.S", + ], + "crypto/bn/bn-mips.S" => + [ + "crypto/bn/asm/mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/bn-ppc.s" => + [ + "crypto/bn/asm/ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/co-586.s" => + [ + "crypto/bn/asm/co-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/ia64-mont.s" => + [ + "crypto/bn/asm/ia64-mont.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/bn/mips-mont.S" => + [ + "crypto/bn/asm/mips-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/parisc-mont.s" => + [ + "crypto/bn/asm/parisc-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/ppc-mont.s" => + [ + "crypto/bn/asm/ppc-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/ppc64-mont.s" => + [ + "crypto/bn/asm/ppc64-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/rsaz-avx2.s" => + [ + "crypto/bn/asm/rsaz-avx2.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/rsaz-x86_64.s" => + [ + "crypto/bn/asm/rsaz-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/s390x-gf2m.s" => + [ + "crypto/bn/asm/s390x-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/s390x-mont.S" => + [ + "crypto/bn/asm/s390x-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparct4-mont.S" => + [ + "crypto/bn/asm/sparct4-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparcv9-gf2m.S" => + [ + "crypto/bn/asm/sparcv9-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparcv9-mont.S" => + [ + "crypto/bn/asm/sparcv9-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/sparcv9a-mont.S" => + [ + "crypto/bn/asm/sparcv9a-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/vis3-mont.S" => + [ + "crypto/bn/asm/vis3-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/x86-gf2m.s" => + [ + "crypto/bn/asm/x86-gf2m.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/x86-mont.s" => + [ + "crypto/bn/asm/x86-mont.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/bn/x86_64-gf2m.s" => + [ + "crypto/bn/asm/x86_64-gf2m.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/x86_64-mont.s" => + [ + "crypto/bn/asm/x86_64-mont.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/bn/x86_64-mont5.s" => + [ + "crypto/bn/asm/x86_64-mont5.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/buildinf.h" => + [ + "util/mkbuildinf.pl", + "\"\$(CC)", + "\$(LIB_CFLAGS)", + "\$(CPPFLAGS_Q)\"", + "\"\$(PLATFORM)\"", + ], + "crypto/camellia/cmll-x86.s" => + [ + "crypto/camellia/asm/cmll-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/camellia/cmll-x86_64.s" => + [ + "crypto/camellia/asm/cmll-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/camellia/cmllt4-sparcv9.S" => + [ + "crypto/camellia/asm/cmllt4-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/cast/cast-586.s" => + [ + "crypto/cast/asm/cast-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/chacha/chacha-armv4.S" => + [ + "crypto/chacha/asm/chacha-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-armv8.S" => + [ + "crypto/chacha/asm/chacha-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-ppc.s" => + [ + "crypto/chacha/asm/chacha-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-s390x.S" => + [ + "crypto/chacha/asm/chacha-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/chacha/chacha-x86.s" => + [ + "crypto/chacha/asm/chacha-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/chacha/chacha-x86_64.s" => + [ + "crypto/chacha/asm/chacha-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/des/crypt586.s" => + [ + "crypto/des/asm/crypt586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/des/des-586.s" => + [ + "crypto/des/asm/des-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/des/des_enc-sparc.S" => + [ + "crypto/des/asm/des_enc.m4", + ], + "crypto/des/dest4-sparcv9.S" => + [ + "crypto/des/asm/dest4-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-armv4.S" => + [ + "crypto/ec/asm/ecp_nistz256-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-armv8.S" => + [ + "crypto/ec/asm/ecp_nistz256-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-avx2.s" => + [ + "crypto/ec/asm/ecp_nistz256-avx2.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-ppc64.s" => + [ + "crypto/ec/asm/ecp_nistz256-ppc64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-sparcv9.S" => + [ + "crypto/ec/asm/ecp_nistz256-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/ecp_nistz256-x86.s" => + [ + "crypto/ec/asm/ecp_nistz256-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/ec/ecp_nistz256-x86_64.s" => + [ + "crypto/ec/asm/ecp_nistz256-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/x25519-ppc64.s" => + [ + "crypto/ec/asm/x25519-ppc64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ec/x25519-x86_64.s" => + [ + "crypto/ec/asm/x25519-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ia64cpuid.s" => + [ + "crypto/ia64cpuid.S", + ], + "crypto/md5/md5-586.s" => + [ + "crypto/md5/asm/md5-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/md5/md5-sparcv9.S" => + [ + "crypto/md5/asm/md5-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/md5/md5-x86_64.s" => + [ + "crypto/md5/asm/md5-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/aesni-gcm-x86_64.s" => + [ + "crypto/modes/asm/aesni-gcm-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-alpha.S" => + [ + "crypto/modes/asm/ghash-alpha.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-armv4.S" => + [ + "crypto/modes/asm/ghash-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-ia64.s" => + [ + "crypto/modes/asm/ghash-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/modes/ghash-parisc.s" => + [ + "crypto/modes/asm/ghash-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-s390x.S" => + [ + "crypto/modes/asm/ghash-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-sparcv9.S" => + [ + "crypto/modes/asm/ghash-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghash-x86.s" => + [ + "crypto/modes/asm/ghash-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/modes/ghash-x86_64.s" => + [ + "crypto/modes/asm/ghash-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghashp8-ppc.s" => + [ + "crypto/modes/asm/ghashp8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/modes/ghashv8-armx.S" => + [ + "crypto/modes/asm/ghashv8-armx.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/pariscid.s" => + [ + "crypto/pariscid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-armv4.S" => + [ + "crypto/poly1305/asm/poly1305-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-armv8.S" => + [ + "crypto/poly1305/asm/poly1305-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-mips.S" => + [ + "crypto/poly1305/asm/poly1305-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-ppc.s" => + [ + "crypto/poly1305/asm/poly1305-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-ppcfp.s" => + [ + "crypto/poly1305/asm/poly1305-ppcfp.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-s390x.S" => + [ + "crypto/poly1305/asm/poly1305-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-sparcv9.S" => + [ + "crypto/poly1305/asm/poly1305-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/poly1305/poly1305-x86.s" => + [ + "crypto/poly1305/asm/poly1305-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/poly1305/poly1305-x86_64.s" => + [ + "crypto/poly1305/asm/poly1305-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ppccpuid.s" => + [ + "crypto/ppccpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-586.s" => + [ + "crypto/rc4/asm/rc4-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/rc4/rc4-md5-x86_64.s" => + [ + "crypto/rc4/asm/rc4-md5-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-parisc.s" => + [ + "crypto/rc4/asm/rc4-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-s390x.s" => + [ + "crypto/rc4/asm/rc4-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/rc4/rc4-x86_64.s" => + [ + "crypto/rc4/asm/rc4-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/ripemd/rmd-586.s" => + [ + "crypto/ripemd/asm/rmd-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/s390xcpuid.S" => + [ + "crypto/s390xcpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-armv4.S" => + [ + "crypto/sha/asm/keccak1600-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-armv8.S" => + [ + "crypto/sha/asm/keccak1600-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-ppc64.s" => + [ + "crypto/sha/asm/keccak1600-ppc64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-s390x.S" => + [ + "crypto/sha/asm/keccak1600-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/keccak1600-x86_64.s" => + [ + "crypto/sha/asm/keccak1600-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-586.s" => + [ + "crypto/sha/asm/sha1-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/sha/sha1-alpha.S" => + [ + "crypto/sha/asm/sha1-alpha.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-armv4-large.S" => + [ + "crypto/sha/asm/sha1-armv4-large.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-armv8.S" => + [ + "crypto/sha/asm/sha1-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-ia64.s" => + [ + "crypto/sha/asm/sha1-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/sha/sha1-mb-x86_64.s" => + [ + "crypto/sha/asm/sha1-mb-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-mips.S" => + [ + "crypto/sha/asm/sha1-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-parisc.s" => + [ + "crypto/sha/asm/sha1-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-ppc.s" => + [ + "crypto/sha/asm/sha1-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-s390x.S" => + [ + "crypto/sha/asm/sha1-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-sparcv9.S" => + [ + "crypto/sha/asm/sha1-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha1-x86_64.s" => + [ + "crypto/sha/asm/sha1-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-586.s" => + [ + "crypto/sha/asm/sha256-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/sha/sha256-armv4.S" => + [ + "crypto/sha/asm/sha256-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-armv8.S" => + [ + "crypto/sha/asm/sha512-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-ia64.s" => + [ + "crypto/sha/asm/sha512-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/sha/sha256-mb-x86_64.s" => + [ + "crypto/sha/asm/sha256-mb-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-mips.S" => + [ + "crypto/sha/asm/sha512-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-parisc.s" => + [ + "crypto/sha/asm/sha512-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-ppc.s" => + [ + "crypto/sha/asm/sha512-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-s390x.S" => + [ + "crypto/sha/asm/sha512-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-sparcv9.S" => + [ + "crypto/sha/asm/sha512-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256-x86_64.s" => + [ + "crypto/sha/asm/sha512-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha256p8-ppc.s" => + [ + "crypto/sha/asm/sha512p8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-586.s" => + [ + "crypto/sha/asm/sha512-586.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/sha/sha512-armv4.S" => + [ + "crypto/sha/asm/sha512-armv4.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-armv8.S" => + [ + "crypto/sha/asm/sha512-armv8.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-ia64.s" => + [ + "crypto/sha/asm/sha512-ia64.pl", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + ], + "crypto/sha/sha512-mips.S" => + [ + "crypto/sha/asm/sha512-mips.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-parisc.s" => + [ + "crypto/sha/asm/sha512-parisc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-ppc.s" => + [ + "crypto/sha/asm/sha512-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-s390x.S" => + [ + "crypto/sha/asm/sha512-s390x.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-sparcv9.S" => + [ + "crypto/sha/asm/sha512-sparcv9.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512-x86_64.s" => + [ + "crypto/sha/asm/sha512-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/sha/sha512p8-ppc.s" => + [ + "crypto/sha/asm/sha512p8-ppc.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/uplink-ia64.s" => + [ + "ms/uplink-ia64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/uplink-x86.s" => + [ + "ms/uplink-x86.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/uplink-x86_64.s" => + [ + "ms/uplink-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/whrlpool/wp-mmx.s" => + [ + "crypto/whrlpool/asm/wp-mmx.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "crypto/whrlpool/wp-x86_64.s" => + [ + "crypto/whrlpool/asm/wp-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/x86_64cpuid.s" => + [ + "crypto/x86_64cpuid.pl", + "\$(PERLASM_SCHEME)", + ], + "crypto/x86cpuid.s" => + [ + "crypto/x86cpuid.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "engines/e_padlock-x86.s" => + [ + "engines/asm/e_padlock-x86.pl", + "\$(PERLASM_SCHEME)", + "\$(LIB_CFLAGS)", + "\$(LIB_CPPFLAGS)", + "\$(PROCESSOR)", + ], + "engines/e_padlock-x86_64.s" => + [ + "engines/asm/e_padlock-x86_64.pl", + "\$(PERLASM_SCHEME)", + ], + "include/crypto/bn_conf.h" => + [ + "include/crypto/bn_conf.h.in", + ], + "include/crypto/dso_conf.h" => + [ + "include/crypto/dso_conf.h.in", + ], + "include/openssl/opensslconf.h" => + [ + "include/openssl/opensslconf.h.in", + ], + "libcrypto.map" => + [ + "util/mkdef.pl", + "crypto", + "linux", + ], + "libssl.map" => + [ + "util/mkdef.pl", + "ssl", + "linux", + ], + "test/buildtest_aes.c" => + [ + "test/generate_buildtest.pl", + "aes", + ], + "test/buildtest_asn1.c" => + [ + "test/generate_buildtest.pl", + "asn1", + ], + "test/buildtest_asn1t.c" => + [ + "test/generate_buildtest.pl", + "asn1t", + ], + "test/buildtest_async.c" => + [ + "test/generate_buildtest.pl", + "async", + ], + "test/buildtest_bio.c" => + [ + "test/generate_buildtest.pl", + "bio", + ], + "test/buildtest_blowfish.c" => + [ + "test/generate_buildtest.pl", + "blowfish", + ], + "test/buildtest_bn.c" => + [ + "test/generate_buildtest.pl", + "bn", + ], + "test/buildtest_buffer.c" => + [ + "test/generate_buildtest.pl", + "buffer", + ], + "test/buildtest_camellia.c" => + [ + "test/generate_buildtest.pl", + "camellia", + ], + "test/buildtest_cast.c" => + [ + "test/generate_buildtest.pl", + "cast", + ], + "test/buildtest_cmac.c" => + [ + "test/generate_buildtest.pl", + "cmac", + ], + "test/buildtest_cms.c" => + [ + "test/generate_buildtest.pl", + "cms", + ], + "test/buildtest_conf.c" => + [ + "test/generate_buildtest.pl", + "conf", + ], + "test/buildtest_conf_api.c" => + [ + "test/generate_buildtest.pl", + "conf_api", + ], + "test/buildtest_crypto.c" => + [ + "test/generate_buildtest.pl", + "crypto", + ], + "test/buildtest_ct.c" => + [ + "test/generate_buildtest.pl", + "ct", + ], + "test/buildtest_des.c" => + [ + "test/generate_buildtest.pl", + "des", + ], + "test/buildtest_dh.c" => + [ + "test/generate_buildtest.pl", + "dh", + ], + "test/buildtest_dsa.c" => + [ + "test/generate_buildtest.pl", + "dsa", + ], + "test/buildtest_dtls1.c" => + [ + "test/generate_buildtest.pl", + "dtls1", + ], + "test/buildtest_e_os2.c" => + [ + "test/generate_buildtest.pl", + "e_os2", + ], + "test/buildtest_ebcdic.c" => + [ + "test/generate_buildtest.pl", + "ebcdic", + ], + "test/buildtest_ec.c" => + [ + "test/generate_buildtest.pl", + "ec", + ], + "test/buildtest_ecdh.c" => + [ + "test/generate_buildtest.pl", + "ecdh", + ], + "test/buildtest_ecdsa.c" => + [ + "test/generate_buildtest.pl", + "ecdsa", + ], + "test/buildtest_engine.c" => + [ + "test/generate_buildtest.pl", + "engine", + ], + "test/buildtest_evp.c" => + [ + "test/generate_buildtest.pl", + "evp", + ], + "test/buildtest_hmac.c" => + [ + "test/generate_buildtest.pl", + "hmac", + ], + "test/buildtest_idea.c" => + [ + "test/generate_buildtest.pl", + "idea", + ], + "test/buildtest_kdf.c" => + [ + "test/generate_buildtest.pl", + "kdf", + ], + "test/buildtest_lhash.c" => + [ + "test/generate_buildtest.pl", + "lhash", + ], + "test/buildtest_md4.c" => + [ + "test/generate_buildtest.pl", + "md4", + ], + "test/buildtest_md5.c" => + [ + "test/generate_buildtest.pl", + "md5", + ], + "test/buildtest_mdc2.c" => + [ + "test/generate_buildtest.pl", + "mdc2", + ], + "test/buildtest_modes.c" => + [ + "test/generate_buildtest.pl", + "modes", + ], + "test/buildtest_obj_mac.c" => + [ + "test/generate_buildtest.pl", + "obj_mac", + ], + "test/buildtest_objects.c" => + [ + "test/generate_buildtest.pl", + "objects", + ], + "test/buildtest_ocsp.c" => + [ + "test/generate_buildtest.pl", + "ocsp", + ], + "test/buildtest_opensslv.c" => + [ + "test/generate_buildtest.pl", + "opensslv", + ], + "test/buildtest_ossl_typ.c" => + [ + "test/generate_buildtest.pl", + "ossl_typ", + ], + "test/buildtest_pem.c" => + [ + "test/generate_buildtest.pl", + "pem", + ], + "test/buildtest_pem2.c" => + [ + "test/generate_buildtest.pl", + "pem2", + ], + "test/buildtest_pkcs12.c" => + [ + "test/generate_buildtest.pl", + "pkcs12", + ], + "test/buildtest_pkcs7.c" => + [ + "test/generate_buildtest.pl", + "pkcs7", + ], + "test/buildtest_rand.c" => + [ + "test/generate_buildtest.pl", + "rand", + ], + "test/buildtest_rand_drbg.c" => + [ + "test/generate_buildtest.pl", + "rand_drbg", + ], + "test/buildtest_rc2.c" => + [ + "test/generate_buildtest.pl", + "rc2", + ], + "test/buildtest_rc4.c" => + [ + "test/generate_buildtest.pl", + "rc4", + ], + "test/buildtest_ripemd.c" => + [ + "test/generate_buildtest.pl", + "ripemd", + ], + "test/buildtest_rsa.c" => + [ + "test/generate_buildtest.pl", + "rsa", + ], + "test/buildtest_safestack.c" => + [ + "test/generate_buildtest.pl", + "safestack", + ], + "test/buildtest_seed.c" => + [ + "test/generate_buildtest.pl", + "seed", + ], + "test/buildtest_sha.c" => + [ + "test/generate_buildtest.pl", + "sha", + ], + "test/buildtest_srp.c" => + [ + "test/generate_buildtest.pl", + "srp", + ], + "test/buildtest_srtp.c" => + [ + "test/generate_buildtest.pl", + "srtp", + ], + "test/buildtest_ssl.c" => + [ + "test/generate_buildtest.pl", + "ssl", + ], + "test/buildtest_ssl2.c" => + [ + "test/generate_buildtest.pl", + "ssl2", + ], + "test/buildtest_stack.c" => + [ + "test/generate_buildtest.pl", + "stack", + ], + "test/buildtest_store.c" => + [ + "test/generate_buildtest.pl", + "store", + ], + "test/buildtest_symhacks.c" => + [ + "test/generate_buildtest.pl", + "symhacks", + ], + "test/buildtest_tls1.c" => + [ + "test/generate_buildtest.pl", + "tls1", + ], + "test/buildtest_ts.c" => + [ + "test/generate_buildtest.pl", + "ts", + ], + "test/buildtest_txt_db.c" => + [ + "test/generate_buildtest.pl", + "txt_db", + ], + "test/buildtest_ui.c" => + [ + "test/generate_buildtest.pl", + "ui", + ], + "test/buildtest_whrlpool.c" => + [ + "test/generate_buildtest.pl", + "whrlpool", + ], + "test/buildtest_x509.c" => + [ + "test/generate_buildtest.pl", + "x509", + ], + "test/buildtest_x509_vfy.c" => + [ + "test/generate_buildtest.pl", + "x509_vfy", + ], + "test/buildtest_x509v3.c" => + [ + "test/generate_buildtest.pl", + "x509v3", + ], + }, + "includes" => + { + "apps/app_rand.o" => + [ + ".", + "include", + ], + "apps/apps.o" => + [ + ".", + "include", + ], + "apps/asn1pars.o" => + [ + ".", + "include", + "apps", + ], + "apps/bf_prefix.o" => + [ + ".", + "include", + ], + "apps/ca.o" => + [ + ".", + "include", + "apps", + ], + "apps/ciphers.o" => + [ + ".", + "include", + "apps", + ], + "apps/cms.o" => + [ + ".", + "include", + "apps", + ], + "apps/crl.o" => + [ + ".", + "include", + "apps", + ], + "apps/crl2p7.o" => + [ + ".", + "include", + "apps", + ], + "apps/dgst.o" => + [ + ".", + "include", + "apps", + ], + "apps/dhparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/dsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/dsaparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/ec.o" => + [ + ".", + "include", + "apps", + ], + "apps/ecparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/enc.o" => + [ + ".", + "include", + "apps", + ], + "apps/engine.o" => + [ + ".", + "include", + "apps", + ], + "apps/errstr.o" => + [ + ".", + "include", + "apps", + ], + "apps/gendsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/genpkey.o" => + [ + ".", + "include", + "apps", + ], + "apps/genrsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/nseq.o" => + [ + ".", + "include", + "apps", + ], + "apps/ocsp.o" => + [ + ".", + "include", + "apps", + ], + "apps/openssl.o" => + [ + ".", + "include", + "apps", + ], + "apps/opt.o" => + [ + ".", + "include", + ], + "apps/passwd.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkcs12.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkcs7.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkcs8.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkey.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkeyparam.o" => + [ + ".", + "include", + "apps", + ], + "apps/pkeyutl.o" => + [ + ".", + "include", + "apps", + ], + "apps/prime.o" => + [ + ".", + "include", + "apps", + ], + "apps/progs.h" => + [ + ".", + ], + "apps/rand.o" => + [ + ".", + "include", + "apps", + ], + "apps/rehash.o" => + [ + ".", + "include", + "apps", + ], + "apps/req.o" => + [ + ".", + "include", + "apps", + ], + "apps/rsa.o" => + [ + ".", + "include", + "apps", + ], + "apps/rsautl.o" => + [ + ".", + "include", + "apps", + ], + "apps/s_cb.o" => + [ + ".", + "include", + ], + "apps/s_client.o" => + [ + ".", + "include", + "apps", + ], + "apps/s_server.o" => + [ + ".", + "include", + "apps", + ], + "apps/s_socket.o" => + [ + ".", + "include", + ], + "apps/s_time.o" => + [ + ".", + "include", + "apps", + ], + "apps/sess_id.o" => + [ + ".", + "include", + "apps", + ], + "apps/smime.o" => + [ + ".", + "include", + "apps", + ], + "apps/speed.o" => + [ + ".", + "include", + "apps", + ], + "apps/spkac.o" => + [ + ".", + "include", + "apps", + ], + "apps/srp.o" => + [ + ".", + "include", + "apps", + ], + "apps/storeutl.o" => + [ + ".", + "include", + "apps", + ], + "apps/ts.o" => + [ + ".", + "include", + "apps", + ], + "apps/verify.o" => + [ + ".", + "include", + "apps", + ], + "apps/version.o" => + [ + ".", + "include", + "apps", + ], + "apps/x509.o" => + [ + ".", + "include", + "apps", + ], + "crypto/aes/aes-armv4.o" => + [ + "crypto", + ], + "crypto/aes/aes-mips.o" => + [ + "crypto", + ], + "crypto/aes/aes-s390x.o" => + [ + "crypto", + ], + "crypto/aes/aes-sparcv9.o" => + [ + "crypto", + ], + "crypto/aes/aes_cbc.o" => + [ + ".", + "include", + ], + "crypto/aes/aes_cfb.o" => + [ + ".", + "include", + ], + "crypto/aes/aes_core.o" => + [ + ".", + "include", + ], + "crypto/aes/aes_ecb.o" => + [ + ".", + "include", + ], + "crypto/aes/aes_ige.o" => + [ + ".", + "include", + ], + "crypto/aes/aes_misc.o" => + [ + ".", + "include", + ], + "crypto/aes/aes_ofb.o" => + [ + ".", + "include", + ], + "crypto/aes/aes_wrap.o" => + [ + ".", + "include", + ], + "crypto/aes/aesfx-sparcv9.o" => + [ + "crypto", + ], + "crypto/aes/aest4-sparcv9.o" => + [ + "crypto", + ], + "crypto/aes/aesv8-armx.o" => + [ + "crypto", + ], + "crypto/aes/bsaes-armv7.o" => + [ + "crypto", + ], + "crypto/aria/aria.o" => + [ + ".", + "include", + ], + "crypto/arm64cpuid.o" => + [ + "crypto", + ], + "crypto/armv4cpuid.o" => + [ + "crypto", + ], + "crypto/asn1/a_bitstr.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_d2i_fp.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_digest.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_dup.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_gentm.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_i2d_fp.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_int.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_mbstr.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_object.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_octet.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_print.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_sign.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_strex.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_strnid.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_time.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_type.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_utctm.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_utf8.o" => + [ + ".", + "include", + ], + "crypto/asn1/a_verify.o" => + [ + ".", + "include", + ], + "crypto/asn1/ameth_lib.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn1_err.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn1_gen.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn1_item_list.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn1_lib.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn1_par.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn_mime.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn_moid.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn_mstbl.o" => + [ + ".", + "include", + ], + "crypto/asn1/asn_pack.o" => + [ + ".", + "include", + ], + "crypto/asn1/bio_asn1.o" => + [ + ".", + "include", + ], + "crypto/asn1/bio_ndef.o" => + [ + ".", + "include", + ], + "crypto/asn1/d2i_pr.o" => + [ + ".", + "include", + ], + "crypto/asn1/d2i_pu.o" => + [ + ".", + "include", + ], + "crypto/asn1/evp_asn1.o" => + [ + ".", + "include", + ], + "crypto/asn1/f_int.o" => + [ + ".", + "include", + ], + "crypto/asn1/f_string.o" => + [ + ".", + "include", + ], + "crypto/asn1/i2d_pr.o" => + [ + ".", + "include", + ], + "crypto/asn1/i2d_pu.o" => + [ + ".", + "include", + ], + "crypto/asn1/n_pkey.o" => + [ + ".", + "include", + ], + "crypto/asn1/nsseq.o" => + [ + ".", + "include", + ], + "crypto/asn1/p5_pbe.o" => + [ + ".", + "include", + ], + "crypto/asn1/p5_pbev2.o" => + [ + ".", + "include", + ], + "crypto/asn1/p5_scrypt.o" => + [ + ".", + "include", + ], + "crypto/asn1/p8_pkey.o" => + [ + ".", + "include", + ], + "crypto/asn1/t_bitst.o" => + [ + ".", + "include", + ], + "crypto/asn1/t_pkey.o" => + [ + ".", + "include", + ], + "crypto/asn1/t_spki.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_dec.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_enc.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_fre.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_new.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_prn.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_scn.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_typ.o" => + [ + ".", + "include", + ], + "crypto/asn1/tasn_utl.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_algor.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_bignum.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_info.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_int64.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_long.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_pkey.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_sig.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_spki.o" => + [ + ".", + "include", + ], + "crypto/asn1/x_val.o" => + [ + ".", + "include", + ], + "crypto/async/arch/async_null.o" => + [ + ".", + "include", + ], + "crypto/async/arch/async_posix.o" => + [ + ".", + "include", + ], + "crypto/async/arch/async_win.o" => + [ + ".", + "include", + ], + "crypto/async/async.o" => + [ + ".", + "include", + ], + "crypto/async/async_err.o" => + [ + ".", + "include", + ], + "crypto/async/async_wait.o" => + [ + ".", + "include", + ], + "crypto/bf/bf_cfb64.o" => + [ + ".", + "include", + ], + "crypto/bf/bf_ecb.o" => + [ + ".", + "include", + ], + "crypto/bf/bf_enc.o" => + [ + ".", + "include", + ], + "crypto/bf/bf_ofb64.o" => + [ + ".", + "include", + ], + "crypto/bf/bf_skey.o" => + [ + ".", + "include", + ], + "crypto/bio/b_addr.o" => + [ + ".", + "include", + ], + "crypto/bio/b_dump.o" => + [ + ".", + "include", + ], + "crypto/bio/b_print.o" => + [ + ".", + "include", + ], + "crypto/bio/b_sock.o" => + [ + ".", + "include", + ], + "crypto/bio/b_sock2.o" => + [ + ".", + "include", + ], + "crypto/bio/bf_buff.o" => + [ + ".", + "include", + ], + "crypto/bio/bf_lbuf.o" => + [ + ".", + "include", + ], + "crypto/bio/bf_nbio.o" => + [ + ".", + "include", + ], + "crypto/bio/bf_null.o" => + [ + ".", + "include", + ], + "crypto/bio/bio_cb.o" => + [ + ".", + "include", + ], + "crypto/bio/bio_err.o" => + [ + ".", + "include", + ], + "crypto/bio/bio_lib.o" => + [ + ".", + "include", + ], + "crypto/bio/bio_meth.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_acpt.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_bio.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_conn.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_dgram.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_fd.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_file.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_log.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_mem.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_null.o" => + [ + ".", + "include", + ], + "crypto/bio/bss_sock.o" => + [ + ".", + "include", + ], + "crypto/blake2/blake2b.o" => + [ + ".", + "include", + ], + "crypto/blake2/blake2s.o" => + [ + ".", + "include", + ], + "crypto/blake2/m_blake2b.o" => + [ + ".", + "include", + ], + "crypto/blake2/m_blake2s.o" => + [ + ".", + "include", + ], + "crypto/bn/armv4-gf2m.o" => + [ + "crypto", + ], + "crypto/bn/armv4-mont.o" => + [ + "crypto", + ], + "crypto/bn/bn-mips.o" => + [ + "crypto", + ], + "crypto/bn/bn_add.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_asm.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_blind.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_const.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_ctx.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_depr.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_dh.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_div.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_err.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_exp.o" => + [ + ".", + "include", + "crypto", + ], + "crypto/bn/bn_exp2.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_gcd.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_gf2m.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_intern.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_kron.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_lib.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_mod.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_mont.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_mpi.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_mul.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_nist.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_prime.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_print.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_rand.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_recp.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_shift.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_sqr.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_sqrt.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_srp.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_word.o" => + [ + ".", + "include", + ], + "crypto/bn/bn_x931p.o" => + [ + ".", + "include", + ], + "crypto/bn/mips-mont.o" => + [ + "crypto", + ], + "crypto/bn/sparct4-mont.o" => + [ + "crypto", + ], + "crypto/bn/sparcv9-gf2m.o" => + [ + "crypto", + ], + "crypto/bn/sparcv9-mont.o" => + [ + "crypto", + ], + "crypto/bn/sparcv9a-mont.o" => + [ + "crypto", + ], + "crypto/bn/vis3-mont.o" => + [ + "crypto", + ], + "crypto/buffer/buf_err.o" => + [ + ".", + "include", + ], + "crypto/buffer/buffer.o" => + [ + ".", + "include", + ], + "crypto/buildinf.h" => + [ + ".", + ], + "crypto/camellia/camellia.o" => + [ + ".", + "include", + ], + "crypto/camellia/cmll_cbc.o" => + [ + ".", + "include", + ], + "crypto/camellia/cmll_cfb.o" => + [ + ".", + "include", + ], + "crypto/camellia/cmll_ctr.o" => + [ + ".", + "include", + ], + "crypto/camellia/cmll_ecb.o" => + [ + ".", + "include", + ], + "crypto/camellia/cmll_misc.o" => + [ + ".", + "include", + ], + "crypto/camellia/cmll_ofb.o" => + [ + ".", + "include", + ], + "crypto/camellia/cmllt4-sparcv9.o" => + [ + "crypto", + ], + "crypto/cast/c_cfb64.o" => + [ + ".", + "include", + ], + "crypto/cast/c_ecb.o" => + [ + ".", + "include", + ], + "crypto/cast/c_enc.o" => + [ + ".", + "include", + ], + "crypto/cast/c_ofb64.o" => + [ + ".", + "include", + ], + "crypto/cast/c_skey.o" => + [ + ".", + "include", + ], + "crypto/chacha/chacha-armv4.o" => + [ + "crypto", + ], + "crypto/chacha/chacha-armv8.o" => + [ + "crypto", + ], + "crypto/chacha/chacha-s390x.o" => + [ + "crypto", + ], + "crypto/chacha/chacha_enc.o" => + [ + ".", + "include", + ], + "crypto/cmac/cm_ameth.o" => + [ + ".", + "include", + ], + "crypto/cmac/cm_pmeth.o" => + [ + ".", + "include", + ], + "crypto/cmac/cmac.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_asn1.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_att.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_cd.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_dd.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_enc.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_env.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_err.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_ess.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_io.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_kari.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_lib.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_pwri.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_sd.o" => + [ + ".", + "include", + ], + "crypto/cms/cms_smime.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_api.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_def.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_err.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_lib.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_mall.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_mod.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_sap.o" => + [ + ".", + "include", + ], + "crypto/conf/conf_ssl.o" => + [ + ".", + "include", + ], + "crypto/cpt_err.o" => + [ + ".", + "include", + ], + "crypto/cryptlib.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_b64.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_err.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_log.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_oct.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_policy.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_prn.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_sct.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_sct_ctx.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_vfy.o" => + [ + ".", + "include", + ], + "crypto/ct/ct_x509v3.o" => + [ + ".", + "include", + ], + "crypto/ctype.o" => + [ + ".", + "include", + ], + "crypto/cversion.o" => + [ + ".", + "include", + "crypto", + ], + "crypto/des/cbc_cksm.o" => + [ + ".", + "include", + ], + "crypto/des/cbc_enc.o" => + [ + ".", + "include", + ], + "crypto/des/cfb64ede.o" => + [ + ".", + "include", + ], + "crypto/des/cfb64enc.o" => + [ + ".", + "include", + ], + "crypto/des/cfb_enc.o" => + [ + ".", + "include", + ], + "crypto/des/des_enc.o" => + [ + ".", + "include", + ], + "crypto/des/dest4-sparcv9.o" => + [ + "crypto", + ], + "crypto/des/ecb3_enc.o" => + [ + ".", + "include", + ], + "crypto/des/ecb_enc.o" => + [ + ".", + "include", + ], + "crypto/des/fcrypt.o" => + [ + ".", + "include", + ], + "crypto/des/fcrypt_b.o" => + [ + ".", + "include", + ], + "crypto/des/ofb64ede.o" => + [ + ".", + "include", + ], + "crypto/des/ofb64enc.o" => + [ + ".", + "include", + ], + "crypto/des/ofb_enc.o" => + [ + ".", + "include", + ], + "crypto/des/pcbc_enc.o" => + [ + ".", + "include", + ], + "crypto/des/qud_cksm.o" => + [ + ".", + "include", + ], + "crypto/des/rand_key.o" => + [ + ".", + "include", + ], + "crypto/des/set_key.o" => + [ + ".", + "include", + ], + "crypto/des/str2key.o" => + [ + ".", + "include", + ], + "crypto/des/xcbc_enc.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_ameth.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_asn1.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_check.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_depr.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_err.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_gen.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_kdf.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_key.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_lib.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_meth.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_pmeth.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_prn.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_rfc5114.o" => + [ + ".", + "include", + ], + "crypto/dh/dh_rfc7919.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_ameth.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_asn1.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_depr.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_err.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_gen.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_key.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_lib.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_meth.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_ossl.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_pmeth.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_prn.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_sign.o" => + [ + ".", + "include", + ], + "crypto/dsa/dsa_vrf.o" => + [ + ".", + "include", + ], + "crypto/dso/dso_dl.o" => + [ + ".", + "include", + ], + "crypto/dso/dso_dlfcn.o" => + [ + ".", + "include", + ], + "crypto/dso/dso_err.o" => + [ + ".", + "include", + ], + "crypto/dso/dso_lib.o" => + [ + ".", + "include", + ], + "crypto/dso/dso_openssl.o" => + [ + ".", + "include", + ], + "crypto/dso/dso_vms.o" => + [ + ".", + "include", + ], + "crypto/dso/dso_win32.o" => + [ + ".", + "include", + ], + "crypto/ebcdic.o" => + [ + ".", + "include", + ], + "crypto/ec/curve25519.o" => + [ + ".", + "include", + ], + "crypto/ec/curve448/arch_32/f_impl.o" => + [ + ".", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/curve448.o" => + [ + ".", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/curve448_tables.o" => + [ + ".", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/eddsa.o" => + [ + ".", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/f_generic.o" => + [ + ".", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/curve448/scalar.o" => + [ + ".", + "include", + "crypto/ec/curve448/arch_32", + "crypto/ec/curve448", + ], + "crypto/ec/ec2_oct.o" => + [ + ".", + "include", + ], + "crypto/ec/ec2_smpl.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_ameth.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_asn1.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_check.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_curve.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_cvt.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_err.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_key.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_kmeth.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_lib.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_mult.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_oct.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_pmeth.o" => + [ + ".", + "include", + ], + "crypto/ec/ec_print.o" => + [ + ".", + "include", + ], + "crypto/ec/ecdh_kdf.o" => + [ + ".", + "include", + ], + "crypto/ec/ecdh_ossl.o" => + [ + ".", + "include", + ], + "crypto/ec/ecdsa_ossl.o" => + [ + ".", + "include", + ], + "crypto/ec/ecdsa_sign.o" => + [ + ".", + "include", + ], + "crypto/ec/ecdsa_vrf.o" => + [ + ".", + "include", + ], + "crypto/ec/eck_prn.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_mont.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_nist.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_nistp224.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_nistp256.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_nistp521.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_nistputil.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_nistz256-armv4.o" => + [ + "crypto", + ], + "crypto/ec/ecp_nistz256-armv8.o" => + [ + "crypto", + ], + "crypto/ec/ecp_nistz256-sparcv9.o" => + [ + "crypto", + ], + "crypto/ec/ecp_oct.o" => + [ + ".", + "include", + ], + "crypto/ec/ecp_smpl.o" => + [ + ".", + "include", + ], + "crypto/ec/ecx_meth.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_all.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_cnf.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_ctrl.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_dyn.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_err.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_fat.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_init.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_lib.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_list.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_openssl.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_pkey.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_rdrand.o" => + [ + ".", + "include", + ], + "crypto/engine/eng_table.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_asnmth.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_cipher.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_dh.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_digest.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_dsa.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_eckey.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_pkmeth.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_rand.o" => + [ + ".", + "include", + ], + "crypto/engine/tb_rsa.o" => + [ + ".", + "include", + ], + "crypto/err/err.o" => + [ + ".", + "include", + ], + "crypto/err/err_all.o" => + [ + ".", + "include", + ], + "crypto/err/err_prn.o" => + [ + ".", + "include", + ], + "crypto/evp/bio_b64.o" => + [ + ".", + "include", + ], + "crypto/evp/bio_enc.o" => + [ + ".", + "include", + ], + "crypto/evp/bio_md.o" => + [ + ".", + "include", + ], + "crypto/evp/bio_ok.o" => + [ + ".", + "include", + ], + "crypto/evp/c_allc.o" => + [ + ".", + "include", + ], + "crypto/evp/c_alld.o" => + [ + ".", + "include", + ], + "crypto/evp/cmeth_lib.o" => + [ + ".", + "include", + ], + "crypto/evp/digest.o" => + [ + ".", + "include", + ], + "crypto/evp/e_aes.o" => + [ + ".", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_aes_cbc_hmac_sha1.o" => + [ + ".", + "include", + "crypto/modes", + ], + "crypto/evp/e_aes_cbc_hmac_sha256.o" => + [ + ".", + "include", + "crypto/modes", + ], + "crypto/evp/e_aria.o" => + [ + ".", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_bf.o" => + [ + ".", + "include", + ], + "crypto/evp/e_camellia.o" => + [ + ".", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_cast.o" => + [ + ".", + "include", + ], + "crypto/evp/e_chacha20_poly1305.o" => + [ + ".", + "include", + ], + "crypto/evp/e_des.o" => + [ + ".", + "include", + "crypto", + ], + "crypto/evp/e_des3.o" => + [ + ".", + "include", + "crypto", + ], + "crypto/evp/e_idea.o" => + [ + ".", + "include", + ], + "crypto/evp/e_null.o" => + [ + ".", + "include", + ], + "crypto/evp/e_old.o" => + [ + ".", + "include", + ], + "crypto/evp/e_rc2.o" => + [ + ".", + "include", + ], + "crypto/evp/e_rc4.o" => + [ + ".", + "include", + ], + "crypto/evp/e_rc4_hmac_md5.o" => + [ + ".", + "include", + ], + "crypto/evp/e_rc5.o" => + [ + ".", + "include", + ], + "crypto/evp/e_seed.o" => + [ + ".", + "include", + ], + "crypto/evp/e_sm4.o" => + [ + ".", + "include", + "crypto", + "crypto/modes", + ], + "crypto/evp/e_xcbc_d.o" => + [ + ".", + "include", + ], + "crypto/evp/encode.o" => + [ + ".", + "include", + ], + "crypto/evp/evp_cnf.o" => + [ + ".", + "include", + ], + "crypto/evp/evp_enc.o" => + [ + ".", + "include", + ], + "crypto/evp/evp_err.o" => + [ + ".", + "include", + ], + "crypto/evp/evp_key.o" => + [ + ".", + "include", + ], + "crypto/evp/evp_lib.o" => + [ + ".", + "include", + ], + "crypto/evp/evp_pbe.o" => + [ + ".", + "include", + ], + "crypto/evp/evp_pkey.o" => + [ + ".", + "include", + ], + "crypto/evp/m_md2.o" => + [ + ".", + "include", + ], + "crypto/evp/m_md4.o" => + [ + ".", + "include", + ], + "crypto/evp/m_md5.o" => + [ + ".", + "include", + ], + "crypto/evp/m_md5_sha1.o" => + [ + ".", + "include", + ], + "crypto/evp/m_mdc2.o" => + [ + ".", + "include", + ], + "crypto/evp/m_null.o" => + [ + ".", + "include", + ], + "crypto/evp/m_ripemd.o" => + [ + ".", + "include", + ], + "crypto/evp/m_sha1.o" => + [ + ".", + "include", + ], + "crypto/evp/m_sha3.o" => + [ + ".", + "include", + "crypto", + ], + "crypto/evp/m_sigver.o" => + [ + ".", + "include", + ], + "crypto/evp/m_wp.o" => + [ + ".", + "include", + ], + "crypto/evp/names.o" => + [ + ".", + "include", + ], + "crypto/evp/p5_crpt.o" => + [ + ".", + "include", + ], + "crypto/evp/p5_crpt2.o" => + [ + ".", + "include", + ], + "crypto/evp/p_dec.o" => + [ + ".", + "include", + ], + "crypto/evp/p_enc.o" => + [ + ".", + "include", + ], + "crypto/evp/p_lib.o" => + [ + ".", + "include", + ], + "crypto/evp/p_open.o" => + [ + ".", + "include", + ], + "crypto/evp/p_seal.o" => + [ + ".", + "include", + ], + "crypto/evp/p_sign.o" => + [ + ".", + "include", + ], + "crypto/evp/p_verify.o" => + [ + ".", + "include", + ], + "crypto/evp/pbe_scrypt.o" => + [ + ".", + "include", + ], + "crypto/evp/pmeth_fn.o" => + [ + ".", + "include", + ], + "crypto/evp/pmeth_gn.o" => + [ + ".", + "include", + ], + "crypto/evp/pmeth_lib.o" => + [ + ".", + "include", + ], + "crypto/ex_data.o" => + [ + ".", + "include", + ], + "crypto/getenv.o" => + [ + ".", + "include", + ], + "crypto/hmac/hm_ameth.o" => + [ + ".", + "include", + ], + "crypto/hmac/hm_pmeth.o" => + [ + ".", + "include", + ], + "crypto/hmac/hmac.o" => + [ + ".", + "include", + ], + "crypto/idea/i_cbc.o" => + [ + ".", + "include", + ], + "crypto/idea/i_cfb64.o" => + [ + ".", + "include", + ], + "crypto/idea/i_ecb.o" => + [ + ".", + "include", + ], + "crypto/idea/i_ofb64.o" => + [ + ".", + "include", + ], + "crypto/idea/i_skey.o" => + [ + ".", + "include", + ], + "crypto/init.o" => + [ + ".", + "include", + ], + "crypto/kdf/hkdf.o" => + [ + ".", + "include", + ], + "crypto/kdf/kdf_err.o" => + [ + ".", + "include", + ], + "crypto/kdf/scrypt.o" => + [ + ".", + "include", + ], + "crypto/kdf/tls1_prf.o" => + [ + ".", + "include", + ], + "crypto/lhash/lh_stats.o" => + [ + ".", + "include", + ], + "crypto/lhash/lhash.o" => + [ + ".", + "include", + ], + "crypto/md4/md4_dgst.o" => + [ + ".", + "include", + ], + "crypto/md4/md4_one.o" => + [ + ".", + "include", + ], + "crypto/md5/md5-sparcv9.o" => + [ + "crypto", + ], + "crypto/md5/md5_dgst.o" => + [ + ".", + "include", + ], + "crypto/md5/md5_one.o" => + [ + ".", + "include", + ], + "crypto/mdc2/mdc2_one.o" => + [ + ".", + "include", + ], + "crypto/mdc2/mdc2dgst.o" => + [ + ".", + "include", + ], + "crypto/mem.o" => + [ + ".", + "include", + ], + "crypto/mem_clr.o" => + [ + ".", + "include", + ], + "crypto/mem_dbg.o" => + [ + ".", + "include", + ], + "crypto/mem_sec.o" => + [ + ".", + "include", + ], + "crypto/modes/cbc128.o" => + [ + ".", + "include", + ], + "crypto/modes/ccm128.o" => + [ + ".", + "include", + ], + "crypto/modes/cfb128.o" => + [ + ".", + "include", + ], + "crypto/modes/ctr128.o" => + [ + ".", + "include", + ], + "crypto/modes/cts128.o" => + [ + ".", + "include", + ], + "crypto/modes/gcm128.o" => + [ + ".", + "include", + "crypto", + ], + "crypto/modes/ghash-armv4.o" => + [ + "crypto", + ], + "crypto/modes/ghash-s390x.o" => + [ + "crypto", + ], + "crypto/modes/ghash-sparcv9.o" => + [ + "crypto", + ], + "crypto/modes/ghashv8-armx.o" => + [ + "crypto", + ], + "crypto/modes/ocb128.o" => + [ + ".", + "include", + ], + "crypto/modes/ofb128.o" => + [ + ".", + "include", + ], + "crypto/modes/wrap128.o" => + [ + ".", + "include", + ], + "crypto/modes/xts128.o" => + [ + ".", + "include", + ], + "crypto/o_dir.o" => + [ + ".", + "include", + ], + "crypto/o_fips.o" => + [ + ".", + "include", + ], + "crypto/o_fopen.o" => + [ + ".", + "include", + ], + "crypto/o_init.o" => + [ + ".", + "include", + ], + "crypto/o_str.o" => + [ + ".", + "include", + ], + "crypto/o_time.o" => + [ + ".", + "include", + ], + "crypto/objects/o_names.o" => + [ + ".", + "include", + ], + "crypto/objects/obj_dat.o" => + [ + ".", + "include", + ], + "crypto/objects/obj_err.o" => + [ + ".", + "include", + ], + "crypto/objects/obj_lib.o" => + [ + ".", + "include", + ], + "crypto/objects/obj_xref.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_asn.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_cl.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_err.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_ext.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_ht.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_lib.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_prn.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_srv.o" => + [ + ".", + "include", + ], + "crypto/ocsp/ocsp_vfy.o" => + [ + ".", + "include", + ], + "crypto/ocsp/v3_ocsp.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_all.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_err.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_info.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_lib.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_oth.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_pk8.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_pkey.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_sign.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_x509.o" => + [ + ".", + "include", + ], + "crypto/pem/pem_xaux.o" => + [ + ".", + "include", + ], + "crypto/pem/pvkfmt.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_add.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_asn.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_attr.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_crpt.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_crt.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_decr.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_init.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_key.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_kiss.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_mutl.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_npas.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_p8d.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_p8e.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_sbag.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/p12_utl.o" => + [ + ".", + "include", + ], + "crypto/pkcs12/pk12err.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/bio_pk7.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/pk7_asn1.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/pk7_attr.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/pk7_doit.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/pk7_lib.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/pk7_mime.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/pk7_smime.o" => + [ + ".", + "include", + ], + "crypto/pkcs7/pkcs7err.o" => + [ + ".", + "include", + ], + "crypto/poly1305/poly1305-armv4.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305-armv8.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305-mips.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305-sparcv9.o" => + [ + "crypto", + ], + "crypto/poly1305/poly1305.o" => + [ + ".", + "include", + ], + "crypto/poly1305/poly1305_ameth.o" => + [ + ".", + "include", + ], + "crypto/poly1305/poly1305_pmeth.o" => + [ + ".", + "include", + ], + "crypto/rand/drbg_ctr.o" => + [ + ".", + "include", + "crypto/modes", + ], + "crypto/rand/drbg_lib.o" => + [ + ".", + "include", + ], + "crypto/rand/rand_egd.o" => + [ + ".", + "include", + ], + "crypto/rand/rand_err.o" => + [ + ".", + "include", + ], + "crypto/rand/rand_lib.o" => + [ + ".", + "include", + ], + "crypto/rand/rand_unix.o" => + [ + ".", + "include", + ], + "crypto/rand/rand_vms.o" => + [ + ".", + "include", + ], + "crypto/rand/rand_win.o" => + [ + ".", + "include", + ], + "crypto/rand/randfile.o" => + [ + ".", + "include", + ], + "crypto/rc2/rc2_cbc.o" => + [ + ".", + "include", + ], + "crypto/rc2/rc2_ecb.o" => + [ + ".", + "include", + ], + "crypto/rc2/rc2_skey.o" => + [ + ".", + "include", + ], + "crypto/rc2/rc2cfb64.o" => + [ + ".", + "include", + ], + "crypto/rc2/rc2ofb64.o" => + [ + ".", + "include", + ], + "crypto/rc4/rc4_enc.o" => + [ + ".", + "include", + ], + "crypto/rc4/rc4_skey.o" => + [ + ".", + "include", + ], + "crypto/ripemd/rmd_dgst.o" => + [ + ".", + "include", + ], + "crypto/ripemd/rmd_one.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_ameth.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_asn1.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_chk.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_crpt.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_depr.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_err.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_gen.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_lib.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_meth.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_mp.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_none.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_oaep.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_ossl.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_pk1.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_pmeth.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_prn.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_pss.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_saos.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_sign.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_ssl.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_x931.o" => + [ + ".", + "include", + ], + "crypto/rsa/rsa_x931g.o" => + [ + ".", + "include", + ], + "crypto/s390xcpuid.o" => + [ + "crypto", + ], + "crypto/seed/seed.o" => + [ + ".", + "include", + ], + "crypto/seed/seed_cbc.o" => + [ + ".", + "include", + ], + "crypto/seed/seed_cfb.o" => + [ + ".", + "include", + ], + "crypto/seed/seed_ecb.o" => + [ + ".", + "include", + ], + "crypto/seed/seed_ofb.o" => + [ + ".", + "include", + ], + "crypto/sha/keccak1600-armv4.o" => + [ + "crypto", + ], + "crypto/sha/keccak1600.o" => + [ + ".", + "include", + ], + "crypto/sha/sha1-armv4-large.o" => + [ + "crypto", + ], + "crypto/sha/sha1-armv8.o" => + [ + "crypto", + ], + "crypto/sha/sha1-mips.o" => + [ + "crypto", + ], + "crypto/sha/sha1-s390x.o" => + [ + "crypto", + ], + "crypto/sha/sha1-sparcv9.o" => + [ + "crypto", + ], + "crypto/sha/sha1_one.o" => + [ + ".", + "include", + ], + "crypto/sha/sha1dgst.o" => + [ + ".", + "include", + ], + "crypto/sha/sha256-armv4.o" => + [ + "crypto", + ], + "crypto/sha/sha256-armv8.o" => + [ + "crypto", + ], + "crypto/sha/sha256-mips.o" => + [ + "crypto", + ], + "crypto/sha/sha256-s390x.o" => + [ + "crypto", + ], + "crypto/sha/sha256-sparcv9.o" => + [ + "crypto", + ], + "crypto/sha/sha256.o" => + [ + ".", + "include", + ], + "crypto/sha/sha512-armv4.o" => + [ + "crypto", + ], + "crypto/sha/sha512-armv8.o" => + [ + "crypto", + ], + "crypto/sha/sha512-mips.o" => + [ + "crypto", + ], + "crypto/sha/sha512-s390x.o" => + [ + "crypto", + ], + "crypto/sha/sha512-sparcv9.o" => + [ + "crypto", + ], + "crypto/sha/sha512.o" => + [ + ".", + "include", + ], + "crypto/siphash/siphash.o" => + [ + ".", + "include", + ], + "crypto/siphash/siphash_ameth.o" => + [ + ".", + "include", + ], + "crypto/siphash/siphash_pmeth.o" => + [ + ".", + "include", + ], + "crypto/sm2/sm2_crypt.o" => + [ + ".", + "include", + ], + "crypto/sm2/sm2_err.o" => + [ + ".", + "include", + ], + "crypto/sm2/sm2_pmeth.o" => + [ + ".", + "include", + ], + "crypto/sm2/sm2_sign.o" => + [ + ".", + "include", + ], + "crypto/sm3/m_sm3.o" => + [ + ".", + "include", + ], + "crypto/sm3/sm3.o" => + [ + ".", + "include", + ], + "crypto/sm4/sm4.o" => + [ + ".", + "include", + ], + "crypto/srp/srp_lib.o" => + [ + ".", + "include", + ], + "crypto/srp/srp_vfy.o" => + [ + ".", + "include", + ], + "crypto/stack/stack.o" => + [ + ".", + "include", + ], + "crypto/store/loader_file.o" => + [ + ".", + "include", + ], + "crypto/store/store_err.o" => + [ + ".", + "include", + ], + "crypto/store/store_init.o" => + [ + ".", + "include", + ], + "crypto/store/store_lib.o" => + [ + ".", + "include", + ], + "crypto/store/store_register.o" => + [ + ".", + "include", + ], + "crypto/store/store_strings.o" => + [ + ".", + "include", + ], + "crypto/threads_none.o" => + [ + ".", + "include", + ], + "crypto/threads_pthread.o" => + [ + ".", + "include", + ], + "crypto/threads_win.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_asn1.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_conf.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_err.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_lib.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_req_print.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_req_utils.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_rsp_print.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_rsp_sign.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_rsp_utils.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_rsp_verify.o" => + [ + ".", + "include", + ], + "crypto/ts/ts_verify_ctx.o" => + [ + ".", + "include", + ], + "crypto/txt_db/txt_db.o" => + [ + ".", + "include", + ], + "crypto/ui/ui_err.o" => + [ + ".", + "include", + ], + "crypto/ui/ui_lib.o" => + [ + ".", + "include", + ], + "crypto/ui/ui_null.o" => + [ + ".", + "include", + ], + "crypto/ui/ui_openssl.o" => + [ + ".", + "include", + ], + "crypto/ui/ui_util.o" => + [ + ".", + "include", + ], + "crypto/uid.o" => + [ + ".", + "include", + ], + "crypto/whrlpool/wp_block.o" => + [ + ".", + "include", + ], + "crypto/whrlpool/wp_dgst.o" => + [ + ".", + "include", + ], + "crypto/x509/by_dir.o" => + [ + ".", + "include", + ], + "crypto/x509/by_file.o" => + [ + ".", + "include", + ], + "crypto/x509/t_crl.o" => + [ + ".", + "include", + ], + "crypto/x509/t_req.o" => + [ + ".", + "include", + ], + "crypto/x509/t_x509.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_att.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_cmp.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_d2.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_def.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_err.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_ext.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_lu.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_meth.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_obj.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_r2x.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_req.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_set.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_trs.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_txt.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_v3.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_vfy.o" => + [ + ".", + "include", + ], + "crypto/x509/x509_vpm.o" => + [ + ".", + "include", + ], + "crypto/x509/x509cset.o" => + [ + ".", + "include", + ], + "crypto/x509/x509name.o" => + [ + ".", + "include", + ], + "crypto/x509/x509rset.o" => + [ + ".", + "include", + ], + "crypto/x509/x509spki.o" => + [ + ".", + "include", + ], + "crypto/x509/x509type.o" => + [ + ".", + "include", + ], + "crypto/x509/x_all.o" => + [ + ".", + "include", + ], + "crypto/x509/x_attrib.o" => + [ + ".", + "include", + ], + "crypto/x509/x_crl.o" => + [ + ".", + "include", + ], + "crypto/x509/x_exten.o" => + [ + ".", + "include", + ], + "crypto/x509/x_name.o" => + [ + ".", + "include", + ], + "crypto/x509/x_pubkey.o" => + [ + ".", + "include", + ], + "crypto/x509/x_req.o" => + [ + ".", + "include", + ], + "crypto/x509/x_x509.o" => + [ + ".", + "include", + ], + "crypto/x509/x_x509a.o" => + [ + ".", + "include", + ], + "crypto/x509v3/pcy_cache.o" => + [ + ".", + "include", + ], + "crypto/x509v3/pcy_data.o" => + [ + ".", + "include", + ], + "crypto/x509v3/pcy_lib.o" => + [ + ".", + "include", + ], + "crypto/x509v3/pcy_map.o" => + [ + ".", + "include", + ], + "crypto/x509v3/pcy_node.o" => + [ + ".", + "include", + ], + "crypto/x509v3/pcy_tree.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_addr.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_admis.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_akey.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_akeya.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_alt.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_asid.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_bcons.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_bitst.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_conf.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_cpols.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_crld.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_enum.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_extku.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_genn.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_ia5.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_info.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_int.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_lib.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_ncons.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_pci.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_pcia.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_pcons.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_pku.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_pmaps.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_prn.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_purp.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_skey.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_sxnet.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_tlsf.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3_utl.o" => + [ + ".", + "include", + ], + "crypto/x509v3/v3err.o" => + [ + ".", + "include", + ], + "engines/e_capi.o" => + [ + ".", + "include", + ], + "engines/e_padlock.o" => + [ + ".", + "include", + ], + "fuzz/asn1.o" => + [ + "include", + ], + "fuzz/asn1parse.o" => + [ + "include", + ], + "fuzz/bignum.o" => + [ + "include", + ], + "fuzz/bndiv.o" => + [ + "include", + ], + "fuzz/client.o" => + [ + "include", + ], + "fuzz/cms.o" => + [ + "include", + ], + "fuzz/conf.o" => + [ + "include", + ], + "fuzz/crl.o" => + [ + "include", + ], + "fuzz/ct.o" => + [ + "include", + ], + "fuzz/server.o" => + [ + "include", + ], + "fuzz/test-corpus.o" => + [ + "include", + ], + "fuzz/x509.o" => + [ + "include", + ], + "include/crypto/bn_conf.h" => + [ + ".", + ], + "include/crypto/dso_conf.h" => + [ + ".", + ], + "include/openssl/opensslconf.h" => + [ + ".", + ], + "ssl/bio_ssl.o" => + [ + ".", + "include", + ], + "ssl/d1_lib.o" => + [ + ".", + "include", + ], + "ssl/d1_msg.o" => + [ + ".", + "include", + ], + "ssl/d1_srtp.o" => + [ + ".", + "include", + ], + "ssl/methods.o" => + [ + ".", + "include", + ], + "ssl/packet.o" => + [ + ".", + "include", + ], + "ssl/pqueue.o" => + [ + ".", + "include", + ], + "ssl/record/dtls1_bitmap.o" => + [ + ".", + "include", + ], + "ssl/record/rec_layer_d1.o" => + [ + ".", + "include", + ], + "ssl/record/rec_layer_s3.o" => + [ + ".", + "include", + ], + "ssl/record/ssl3_buffer.o" => + [ + ".", + "include", + ], + "ssl/record/ssl3_record.o" => + [ + ".", + "include", + ], + "ssl/record/ssl3_record_tls13.o" => + [ + ".", + "include", + ], + "ssl/s3_cbc.o" => + [ + ".", + "include", + ], + "ssl/s3_enc.o" => + [ + ".", + "include", + ], + "ssl/s3_lib.o" => + [ + ".", + "include", + ], + "ssl/s3_msg.o" => + [ + ".", + "include", + ], + "ssl/ssl_asn1.o" => + [ + ".", + "include", + ], + "ssl/ssl_cert.o" => + [ + ".", + "include", + ], + "ssl/ssl_ciph.o" => + [ + ".", + "include", + ], + "ssl/ssl_conf.o" => + [ + ".", + "include", + ], + "ssl/ssl_err.o" => + [ + ".", + "include", + ], + "ssl/ssl_init.o" => + [ + ".", + "include", + ], + "ssl/ssl_lib.o" => + [ + ".", + "include", + ], + "ssl/ssl_mcnf.o" => + [ + ".", + "include", + ], + "ssl/ssl_quic.o" => + [ + ".", + "include", + ], + "ssl/ssl_rsa.o" => + [ + ".", + "include", + ], + "ssl/ssl_sess.o" => + [ + ".", + "include", + ], + "ssl/ssl_stat.o" => + [ + ".", + "include", + ], + "ssl/ssl_txt.o" => + [ + ".", + "include", + ], + "ssl/ssl_utst.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions_clnt.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions_cust.o" => + [ + ".", + "include", + ], + "ssl/statem/extensions_srvr.o" => + [ + ".", + "include", + ], + "ssl/statem/statem.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_clnt.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_dtls.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_lib.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_quic.o" => + [ + ".", + "include", + ], + "ssl/statem/statem_srvr.o" => + [ + ".", + "include", + ], + "ssl/t1_enc.o" => + [ + ".", + "include", + ], + "ssl/t1_lib.o" => + [ + ".", + "include", + ], + "ssl/t1_trce.o" => + [ + ".", + "include", + ], + "ssl/tls13_enc.o" => + [ + ".", + "include", + ], + "ssl/tls_srp.o" => + [ + ".", + "include", + ], + "test/aborttest.o" => + [ + "include", + ], + "test/afalgtest.o" => + [ + "include", + ], + "test/asn1_decode_test.o" => + [ + "include", + ], + "test/asn1_encode_test.o" => + [ + "include", + ], + "test/asn1_internal_test.o" => + [ + ".", + "include", + ], + "test/asn1_string_table_test.o" => + [ + "include", + ], + "test/asn1_time_test.o" => + [ + "include", + ], + "test/asynciotest.o" => + [ + "include", + ], + "test/asynctest.o" => + [ + "include", + ], + "test/bad_dtls_test.o" => + [ + "include", + ], + "test/bftest.o" => + [ + "include", + ], + "test/bio_callback_test.o" => + [ + "include", + ], + "test/bio_enc_test.o" => + [ + "include", + ], + "test/bio_memleak_test.o" => + [ + "include", + ], + "test/bioprinttest.o" => + [ + "include", + ], + "test/bntest.o" => + [ + "include", + ], + "test/buildtest_aes.o" => + [ + "include", + ], + "test/buildtest_asn1.o" => + [ + "include", + ], + "test/buildtest_asn1t.o" => + [ + "include", + ], + "test/buildtest_async.o" => + [ + "include", + ], + "test/buildtest_bio.o" => + [ + "include", + ], + "test/buildtest_blowfish.o" => + [ + "include", + ], + "test/buildtest_bn.o" => + [ + "include", + ], + "test/buildtest_buffer.o" => + [ + "include", + ], + "test/buildtest_camellia.o" => + [ + "include", + ], + "test/buildtest_cast.o" => + [ + "include", + ], + "test/buildtest_cmac.o" => + [ + "include", + ], + "test/buildtest_cms.o" => + [ + "include", + ], + "test/buildtest_conf.o" => + [ + "include", + ], + "test/buildtest_conf_api.o" => + [ + "include", + ], + "test/buildtest_crypto.o" => + [ + "include", + ], + "test/buildtest_ct.o" => + [ + "include", + ], + "test/buildtest_des.o" => + [ + "include", + ], + "test/buildtest_dh.o" => + [ + "include", + ], + "test/buildtest_dsa.o" => + [ + "include", + ], + "test/buildtest_dtls1.o" => + [ + "include", + ], + "test/buildtest_e_os2.o" => + [ + "include", + ], + "test/buildtest_ebcdic.o" => + [ + "include", + ], + "test/buildtest_ec.o" => + [ + "include", + ], + "test/buildtest_ecdh.o" => + [ + "include", + ], + "test/buildtest_ecdsa.o" => + [ + "include", + ], + "test/buildtest_engine.o" => + [ + "include", + ], + "test/buildtest_evp.o" => + [ + "include", + ], + "test/buildtest_hmac.o" => + [ + "include", + ], + "test/buildtest_idea.o" => + [ + "include", + ], + "test/buildtest_kdf.o" => + [ + "include", + ], + "test/buildtest_lhash.o" => + [ + "include", + ], + "test/buildtest_md4.o" => + [ + "include", + ], + "test/buildtest_md5.o" => + [ + "include", + ], + "test/buildtest_mdc2.o" => + [ + "include", + ], + "test/buildtest_modes.o" => + [ + "include", + ], + "test/buildtest_obj_mac.o" => + [ + "include", + ], + "test/buildtest_objects.o" => + [ + "include", + ], + "test/buildtest_ocsp.o" => + [ + "include", + ], + "test/buildtest_opensslv.o" => + [ + "include", + ], + "test/buildtest_ossl_typ.o" => + [ + "include", + ], + "test/buildtest_pem.o" => + [ + "include", + ], + "test/buildtest_pem2.o" => + [ + "include", + ], + "test/buildtest_pkcs12.o" => + [ + "include", + ], + "test/buildtest_pkcs7.o" => + [ + "include", + ], + "test/buildtest_rand.o" => + [ + "include", + ], + "test/buildtest_rand_drbg.o" => + [ + "include", + ], + "test/buildtest_rc2.o" => + [ + "include", + ], + "test/buildtest_rc4.o" => + [ + "include", + ], + "test/buildtest_ripemd.o" => + [ + "include", + ], + "test/buildtest_rsa.o" => + [ + "include", + ], + "test/buildtest_safestack.o" => + [ + "include", + ], + "test/buildtest_seed.o" => + [ + "include", + ], + "test/buildtest_sha.o" => + [ + "include", + ], + "test/buildtest_srp.o" => + [ + "include", + ], + "test/buildtest_srtp.o" => + [ + "include", + ], + "test/buildtest_ssl.o" => + [ + "include", + ], + "test/buildtest_ssl2.o" => + [ + "include", + ], + "test/buildtest_stack.o" => + [ + "include", + ], + "test/buildtest_store.o" => + [ + "include", + ], + "test/buildtest_symhacks.o" => + [ + "include", + ], + "test/buildtest_tls1.o" => + [ + "include", + ], + "test/buildtest_ts.o" => + [ + "include", + ], + "test/buildtest_txt_db.o" => + [ + "include", + ], + "test/buildtest_ui.o" => + [ + "include", + ], + "test/buildtest_whrlpool.o" => + [ + "include", + ], + "test/buildtest_x509.o" => + [ + "include", + ], + "test/buildtest_x509_vfy.o" => + [ + "include", + ], + "test/buildtest_x509v3.o" => + [ + "include", + ], + "test/casttest.o" => + [ + "include", + ], + "test/chacha_internal_test.o" => + [ + ".", + "include", + ], + "test/cipher_overhead_test.o" => + [ + ".", + "include", + ], + "test/cipherbytes_test.o" => + [ + "include", + ], + "test/cipherlist_test.o" => + [ + "include", + ], + "test/ciphername_test.o" => + [ + "include", + ], + "test/clienthellotest.o" => + [ + "include", + ], + "test/cmactest.o" => + [ + "include", + ], + "test/cmsapitest.o" => + [ + "include", + ], + "test/conf_include_test.o" => + [ + "include", + ], + "test/constant_time_test.o" => + [ + "include", + ], + "test/crltest.o" => + [ + "include", + ], + "test/ct_test.o" => + [ + "include", + ], + "test/ctype_internal_test.o" => + [ + ".", + "include", + ], + "test/curve448_internal_test.o" => + [ + ".", + "include", + "crypto/ec/curve448", + ], + "test/d2i_test.o" => + [ + "include", + ], + "test/danetest.o" => + [ + "include", + ], + "test/destest.o" => + [ + "include", + ], + "test/dhtest.o" => + [ + "include", + ], + "test/drbg_cavs_data.o" => + [ + "include", + "test", + ".", + ], + "test/drbg_cavs_test.o" => + [ + "include", + "test", + ".", + ], + "test/drbgtest.o" => + [ + "include", + ], + "test/dsa_no_digest_size_test.o" => + [ + "include", + ], + "test/dsatest.o" => + [ + "include", + ], + "test/dtls_mtu_test.o" => + [ + ".", + "include", + ], + "test/dtlstest.o" => + [ + "include", + ], + "test/dtlsv1listentest.o" => + [ + "include", + ], + "test/ec_internal_test.o" => + [ + "include", + "crypto/ec", + ], + "test/ecdsatest.o" => + [ + "include", + ], + "test/ecstresstest.o" => + [ + "include", + ], + "test/ectest.o" => + [ + "include", + ], + "test/enginetest.o" => + [ + "include", + ], + "test/errtest.o" => + [ + "include", + ], + "test/evp_extra_test.o" => + [ + "include", + ], + "test/evp_test.o" => + [ + "include", + ], + "test/exdatatest.o" => + [ + "include", + ], + "test/exptest.o" => + [ + "include", + ], + "test/fatalerrtest.o" => + [ + "include", + ], + "test/gmdifftest.o" => + [ + "include", + ], + "test/gosttest.o" => + [ + "include", + ".", + ], + "test/handshake_helper.o" => + [ + ".", + "include", + ], + "test/hmactest.o" => + [ + "include", + ], + "test/ideatest.o" => + [ + "include", + ], + "test/igetest.o" => + [ + "include", + ], + "test/lhash_test.o" => + [ + "include", + ], + "test/md2test.o" => + [ + "include", + ], + "test/mdc2_internal_test.o" => + [ + ".", + "include", + ], + "test/mdc2test.o" => + [ + "include", + ], + "test/memleaktest.o" => + [ + "include", + ], + "test/modes_internal_test.o" => + [ + ".", + "include", + ], + "test/ocspapitest.o" => + [ + "include", + ], + "test/packettest.o" => + [ + "include", + ], + "test/pbelutest.o" => + [ + "include", + ], + "test/pemtest.o" => + [ + "include", + ], + "test/pkey_meth_kdf_test.o" => + [ + "include", + ], + "test/pkey_meth_test.o" => + [ + "include", + ], + "test/poly1305_internal_test.o" => + [ + ".", + "include", + ], + "test/rc2test.o" => + [ + "include", + ], + "test/rc4test.o" => + [ + "include", + ], + "test/rc5test.o" => + [ + "include", + ], + "test/rdrand_sanitytest.o" => + [ + "include", + ], + "test/recordlentest.o" => + [ + "include", + ], + "test/rsa_complex.o" => + [ + "include", + ], + "test/rsa_mp_test.o" => + [ + "include", + ], + "test/rsa_test.o" => + [ + "include", + ], + "test/sanitytest.o" => + [ + "include", + ], + "test/secmemtest.o" => + [ + "include", + ], + "test/servername_test.o" => + [ + "include", + ], + "test/siphash_internal_test.o" => + [ + ".", + "include", + ], + "test/sm2_internal_test.o" => + [ + "include", + ], + "test/sm4_internal_test.o" => + [ + ".", + "include", + ], + "test/srptest.o" => + [ + "include", + ], + "test/ssl_cert_table_internal_test.o" => + [ + ".", + "include", + ], + "test/ssl_ctx_test.o" => + [ + "include", + ], + "test/ssl_test.o" => + [ + "include", + ], + "test/ssl_test_ctx.o" => + [ + "include", + ], + "test/ssl_test_ctx_test.o" => + [ + "include", + ], + "test/sslapitest.o" => + [ + "include", + ".", + ], + "test/sslbuffertest.o" => + [ + "include", + ], + "test/sslcorrupttest.o" => + [ + "include", + ], + "test/ssltest_old.o" => + [ + ".", + "include", + ], + "test/ssltestlib.o" => + [ + ".", + "include", + ], + "test/stack_test.o" => + [ + "include", + ], + "test/sysdefaulttest.o" => + [ + "include", + ], + "test/test_test.o" => + [ + "include", + ], + "test/testutil/basic_output.o" => + [ + "include", + ], + "test/testutil/cb.o" => + [ + "include", + ], + "test/testutil/driver.o" => + [ + "include", + ], + "test/testutil/format_output.o" => + [ + "include", + ], + "test/testutil/main.o" => + [ + "include", + ], + "test/testutil/output_helpers.o" => + [ + "include", + ], + "test/testutil/random.o" => + [ + "include", + ], + "test/testutil/stanza.o" => + [ + "include", + ], + "test/testutil/tap_bio.o" => + [ + "include", + ], + "test/testutil/test_cleanup.o" => + [ + "include", + ], + "test/testutil/tests.o" => + [ + "include", + ], + "test/testutil/testutil_init.o" => + [ + "include", + ], + "test/threadstest.o" => + [ + "include", + ], + "test/time_offset_test.o" => + [ + "include", + ], + "test/tls13ccstest.o" => + [ + "include", + ], + "test/tls13encryptiontest.o" => + [ + ".", + "include", + ], + "test/uitest.o" => + [ + ".", + "include", + "apps", + ], + "test/v3ext.o" => + [ + "include", + ], + "test/v3nametest.o" => + [ + "include", + ], + "test/verify_extra_test.o" => + [ + "include", + ], + "test/versions.o" => + [ + "include", + ], + "test/wpackettest.o" => + [ + "include", + ], + "test/x509_check_cert_pkey_test.o" => + [ + "include", + ], + "test/x509_dup_cert_test.o" => + [ + "include", + ], + "test/x509_internal_test.o" => + [ + ".", + "include", + ], + "test/x509_time_test.o" => + [ + "include", + ], + "test/x509aux.o" => + [ + "include", + ], + }, + "install" => + { + "libraries" => + [ + "libcrypto", + "libssl", + ], + "programs" => + [ + "apps/openssl", + ], + "scripts" => + [ + "apps/CA.pl", + "apps/tsget.pl", + "tools/c_rehash", + ], + }, + "ldadd" => + { + }, + "libraries" => + [ + "apps/libapps.a", + "libcrypto", + "libssl", + "test/libtestutil.a", + ], + "overrides" => + [ + ], + "programs" => + [ + "apps/openssl", + "fuzz/asn1-test", + "fuzz/asn1parse-test", + "fuzz/bignum-test", + "fuzz/bndiv-test", + "fuzz/client-test", + "fuzz/cms-test", + "fuzz/conf-test", + "fuzz/crl-test", + "fuzz/ct-test", + "fuzz/server-test", + "fuzz/x509-test", + "test/aborttest", + "test/afalgtest", + "test/asn1_decode_test", + "test/asn1_encode_test", + "test/asn1_internal_test", + "test/asn1_string_table_test", + "test/asn1_time_test", + "test/asynciotest", + "test/asynctest", + "test/bad_dtls_test", + "test/bftest", + "test/bio_callback_test", + "test/bio_enc_test", + "test/bio_memleak_test", + "test/bioprinttest", + "test/bntest", + "test/buildtest_c_aes", + "test/buildtest_c_asn1", + "test/buildtest_c_asn1t", + "test/buildtest_c_async", + "test/buildtest_c_bio", + "test/buildtest_c_blowfish", + "test/buildtest_c_bn", + "test/buildtest_c_buffer", + "test/buildtest_c_camellia", + "test/buildtest_c_cast", + "test/buildtest_c_cmac", + "test/buildtest_c_cms", + "test/buildtest_c_conf", + "test/buildtest_c_conf_api", + "test/buildtest_c_crypto", + "test/buildtest_c_ct", + "test/buildtest_c_des", + "test/buildtest_c_dh", + "test/buildtest_c_dsa", + "test/buildtest_c_dtls1", + "test/buildtest_c_e_os2", + "test/buildtest_c_ebcdic", + "test/buildtest_c_ec", + "test/buildtest_c_ecdh", + "test/buildtest_c_ecdsa", + "test/buildtest_c_engine", + "test/buildtest_c_evp", + "test/buildtest_c_hmac", + "test/buildtest_c_idea", + "test/buildtest_c_kdf", + "test/buildtest_c_lhash", + "test/buildtest_c_md4", + "test/buildtest_c_md5", + "test/buildtest_c_mdc2", + "test/buildtest_c_modes", + "test/buildtest_c_obj_mac", + "test/buildtest_c_objects", + "test/buildtest_c_ocsp", + "test/buildtest_c_opensslv", + "test/buildtest_c_ossl_typ", + "test/buildtest_c_pem", + "test/buildtest_c_pem2", + "test/buildtest_c_pkcs12", + "test/buildtest_c_pkcs7", + "test/buildtest_c_rand", + "test/buildtest_c_rand_drbg", + "test/buildtest_c_rc2", + "test/buildtest_c_rc4", + "test/buildtest_c_ripemd", + "test/buildtest_c_rsa", + "test/buildtest_c_safestack", + "test/buildtest_c_seed", + "test/buildtest_c_sha", + "test/buildtest_c_srp", + "test/buildtest_c_srtp", + "test/buildtest_c_ssl", + "test/buildtest_c_ssl2", + "test/buildtest_c_stack", + "test/buildtest_c_store", + "test/buildtest_c_symhacks", + "test/buildtest_c_tls1", + "test/buildtest_c_ts", + "test/buildtest_c_txt_db", + "test/buildtest_c_ui", + "test/buildtest_c_whrlpool", + "test/buildtest_c_x509", + "test/buildtest_c_x509_vfy", + "test/buildtest_c_x509v3", + "test/casttest", + "test/chacha_internal_test", + "test/cipher_overhead_test", + "test/cipherbytes_test", + "test/cipherlist_test", + "test/ciphername_test", + "test/clienthellotest", + "test/cmactest", + "test/cmsapitest", + "test/conf_include_test", + "test/constant_time_test", + "test/crltest", + "test/ct_test", + "test/ctype_internal_test", + "test/curve448_internal_test", + "test/d2i_test", + "test/danetest", + "test/destest", + "test/dhtest", + "test/drbg_cavs_test", + "test/drbgtest", + "test/dsa_no_digest_size_test", + "test/dsatest", + "test/dtls_mtu_test", + "test/dtlstest", + "test/dtlsv1listentest", + "test/ec_internal_test", + "test/ecdsatest", + "test/ecstresstest", + "test/ectest", + "test/enginetest", + "test/errtest", + "test/evp_extra_test", + "test/evp_test", + "test/exdatatest", + "test/exptest", + "test/fatalerrtest", + "test/gmdifftest", + "test/gosttest", + "test/hmactest", + "test/ideatest", + "test/igetest", + "test/lhash_test", + "test/md2test", + "test/mdc2_internal_test", + "test/mdc2test", + "test/memleaktest", + "test/modes_internal_test", + "test/ocspapitest", + "test/packettest", + "test/pbelutest", + "test/pemtest", + "test/pkey_meth_kdf_test", + "test/pkey_meth_test", + "test/poly1305_internal_test", + "test/rc2test", + "test/rc4test", + "test/rc5test", + "test/rdrand_sanitytest", + "test/recordlentest", + "test/rsa_complex", + "test/rsa_mp_test", + "test/rsa_test", + "test/sanitytest", + "test/secmemtest", + "test/servername_test", + "test/siphash_internal_test", + "test/sm2_internal_test", + "test/sm4_internal_test", + "test/srptest", + "test/ssl_cert_table_internal_test", + "test/ssl_ctx_test", + "test/ssl_test", + "test/ssl_test_ctx_test", + "test/sslapitest", + "test/sslbuffertest", + "test/sslcorrupttest", + "test/ssltest_old", + "test/stack_test", + "test/sysdefaulttest", + "test/test_test", + "test/threadstest", + "test/time_offset_test", + "test/tls13ccstest", + "test/tls13encryptiontest", + "test/uitest", + "test/v3ext", + "test/v3nametest", + "test/verify_extra_test", + "test/versions", + "test/wpackettest", + "test/x509_check_cert_pkey_test", + "test/x509_dup_cert_test", + "test/x509_internal_test", + "test/x509_time_test", + "test/x509aux", + ], + "rawlines" => + [ + "##### SHA assembler implementations", + "", + "# GNU make \"catch all\"", + "crypto/sha/sha1-%.S: crypto/sha/asm/sha1-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "crypto/sha/sha256-%.S: crypto/sha/asm/sha512-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "crypto/sha/sha512-%.S: crypto/sha/asm/sha512-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "crypto/poly1305/poly1305-%.S: crypto/poly1305/asm/poly1305-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "##### AES assembler implementations", + "", + "# GNU make \"catch all\"", + "crypto/aes/aes-%.S: crypto/aes/asm/aes-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "crypto/aes/bsaes-%.S: crypto/aes/asm/bsaes-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "", + "# GNU make \"catch all\"", + "crypto/rc4/rc4-%.s: crypto/rc4/asm/rc4-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "##### CHACHA assembler implementations", + "", + "crypto/chacha/chacha-%.S: crypto/chacha/asm/chacha-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "# GNU make \"catch all\"", + "crypto/modes/ghash-%.S: crypto/modes/asm/ghash-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + "crypto/ec/ecp_nistz256-%.S: crypto/ec/asm/ecp_nistz256-%.pl", + " CC=\"\$(CC)\" \$(PERL) \$< \$(PERLASM_SCHEME) \$\@", + ], + "rename" => + { + }, + "scripts" => + [ + "apps/CA.pl", + "apps/tsget.pl", + "tools/c_rehash", + "util/shlib_wrap.sh", + ], + "shared_sources" => + { + }, + "sources" => + { + "apps/CA.pl" => + [ + "apps/CA.pl.in", + ], + "apps/app_rand.o" => + [ + "apps/app_rand.c", + ], + "apps/apps.o" => + [ + "apps/apps.c", + ], + "apps/asn1pars.o" => + [ + "apps/asn1pars.c", + ], + "apps/bf_prefix.o" => + [ + "apps/bf_prefix.c", + ], + "apps/ca.o" => + [ + "apps/ca.c", + ], + "apps/ciphers.o" => + [ + "apps/ciphers.c", + ], + "apps/cms.o" => + [ + "apps/cms.c", + ], + "apps/crl.o" => + [ + "apps/crl.c", + ], + "apps/crl2p7.o" => + [ + "apps/crl2p7.c", + ], + "apps/dgst.o" => + [ + "apps/dgst.c", + ], + "apps/dhparam.o" => + [ + "apps/dhparam.c", + ], + "apps/dsa.o" => + [ + "apps/dsa.c", + ], + "apps/dsaparam.o" => + [ + "apps/dsaparam.c", + ], + "apps/ec.o" => + [ + "apps/ec.c", + ], + "apps/ecparam.o" => + [ + "apps/ecparam.c", + ], + "apps/enc.o" => + [ + "apps/enc.c", + ], + "apps/engine.o" => + [ + "apps/engine.c", + ], + "apps/errstr.o" => + [ + "apps/errstr.c", + ], + "apps/gendsa.o" => + [ + "apps/gendsa.c", + ], + "apps/genpkey.o" => + [ + "apps/genpkey.c", + ], + "apps/genrsa.o" => + [ + "apps/genrsa.c", + ], + "apps/libapps.a" => + [ + "apps/app_rand.o", + "apps/apps.o", + "apps/bf_prefix.o", + "apps/opt.o", + "apps/s_cb.o", + "apps/s_socket.o", + ], + "apps/nseq.o" => + [ + "apps/nseq.c", + ], + "apps/ocsp.o" => + [ + "apps/ocsp.c", + ], + "apps/openssl" => + [ + "apps/asn1pars.o", + "apps/ca.o", + "apps/ciphers.o", + "apps/cms.o", + "apps/crl.o", + "apps/crl2p7.o", + "apps/dgst.o", + "apps/dhparam.o", + "apps/dsa.o", + "apps/dsaparam.o", + "apps/ec.o", + "apps/ecparam.o", + "apps/enc.o", + "apps/engine.o", + "apps/errstr.o", + "apps/gendsa.o", + "apps/genpkey.o", + "apps/genrsa.o", + "apps/nseq.o", + "apps/ocsp.o", + "apps/openssl.o", + "apps/passwd.o", + "apps/pkcs12.o", + "apps/pkcs7.o", + "apps/pkcs8.o", + "apps/pkey.o", + "apps/pkeyparam.o", + "apps/pkeyutl.o", + "apps/prime.o", + "apps/rand.o", + "apps/rehash.o", + "apps/req.o", + "apps/rsa.o", + "apps/rsautl.o", + "apps/s_client.o", + "apps/s_server.o", + "apps/s_time.o", + "apps/sess_id.o", + "apps/smime.o", + "apps/speed.o", + "apps/spkac.o", + "apps/srp.o", + "apps/storeutl.o", + "apps/ts.o", + "apps/verify.o", + "apps/version.o", + "apps/x509.o", + ], + "apps/openssl.o" => + [ + "apps/openssl.c", + ], + "apps/opt.o" => + [ + "apps/opt.c", + ], + "apps/passwd.o" => + [ + "apps/passwd.c", + ], + "apps/pkcs12.o" => + [ + "apps/pkcs12.c", + ], + "apps/pkcs7.o" => + [ + "apps/pkcs7.c", + ], + "apps/pkcs8.o" => + [ + "apps/pkcs8.c", + ], + "apps/pkey.o" => + [ + "apps/pkey.c", + ], + "apps/pkeyparam.o" => + [ + "apps/pkeyparam.c", + ], + "apps/pkeyutl.o" => + [ + "apps/pkeyutl.c", + ], + "apps/prime.o" => + [ + "apps/prime.c", + ], + "apps/rand.o" => + [ + "apps/rand.c", + ], + "apps/rehash.o" => + [ + "apps/rehash.c", + ], + "apps/req.o" => + [ + "apps/req.c", + ], + "apps/rsa.o" => + [ + "apps/rsa.c", + ], + "apps/rsautl.o" => + [ + "apps/rsautl.c", + ], + "apps/s_cb.o" => + [ + "apps/s_cb.c", + ], + "apps/s_client.o" => + [ + "apps/s_client.c", + ], + "apps/s_server.o" => + [ + "apps/s_server.c", + ], + "apps/s_socket.o" => + [ + "apps/s_socket.c", + ], + "apps/s_time.o" => + [ + "apps/s_time.c", + ], + "apps/sess_id.o" => + [ + "apps/sess_id.c", + ], + "apps/smime.o" => + [ + "apps/smime.c", + ], + "apps/speed.o" => + [ + "apps/speed.c", + ], + "apps/spkac.o" => + [ + "apps/spkac.c", + ], + "apps/srp.o" => + [ + "apps/srp.c", + ], + "apps/storeutl.o" => + [ + "apps/storeutl.c", + ], + "apps/ts.o" => + [ + "apps/ts.c", + ], + "apps/tsget.pl" => + [ + "apps/tsget.in", + ], + "apps/verify.o" => + [ + "apps/verify.c", + ], + "apps/version.o" => + [ + "apps/version.c", + ], + "apps/x509.o" => + [ + "apps/x509.c", + ], + "crypto/aes/aes_cbc.o" => + [ + "crypto/aes/aes_cbc.c", + ], + "crypto/aes/aes_cfb.o" => + [ + "crypto/aes/aes_cfb.c", + ], + "crypto/aes/aes_core.o" => + [ + "crypto/aes/aes_core.c", + ], + "crypto/aes/aes_ecb.o" => + [ + "crypto/aes/aes_ecb.c", + ], + "crypto/aes/aes_ige.o" => + [ + "crypto/aes/aes_ige.c", + ], + "crypto/aes/aes_misc.o" => + [ + "crypto/aes/aes_misc.c", + ], + "crypto/aes/aes_ofb.o" => + [ + "crypto/aes/aes_ofb.c", + ], + "crypto/aes/aes_wrap.o" => + [ + "crypto/aes/aes_wrap.c", + ], + "crypto/aria/aria.o" => + [ + "crypto/aria/aria.c", + ], + "crypto/asn1/a_bitstr.o" => + [ + "crypto/asn1/a_bitstr.c", + ], + "crypto/asn1/a_d2i_fp.o" => + [ + "crypto/asn1/a_d2i_fp.c", + ], + "crypto/asn1/a_digest.o" => + [ + "crypto/asn1/a_digest.c", + ], + "crypto/asn1/a_dup.o" => + [ + "crypto/asn1/a_dup.c", + ], + "crypto/asn1/a_gentm.o" => + [ + "crypto/asn1/a_gentm.c", + ], + "crypto/asn1/a_i2d_fp.o" => + [ + "crypto/asn1/a_i2d_fp.c", + ], + "crypto/asn1/a_int.o" => + [ + "crypto/asn1/a_int.c", + ], + "crypto/asn1/a_mbstr.o" => + [ + "crypto/asn1/a_mbstr.c", + ], + "crypto/asn1/a_object.o" => + [ + "crypto/asn1/a_object.c", + ], + "crypto/asn1/a_octet.o" => + [ + "crypto/asn1/a_octet.c", + ], + "crypto/asn1/a_print.o" => + [ + "crypto/asn1/a_print.c", + ], + "crypto/asn1/a_sign.o" => + [ + "crypto/asn1/a_sign.c", + ], + "crypto/asn1/a_strex.o" => + [ + "crypto/asn1/a_strex.c", + ], + "crypto/asn1/a_strnid.o" => + [ + "crypto/asn1/a_strnid.c", + ], + "crypto/asn1/a_time.o" => + [ + "crypto/asn1/a_time.c", + ], + "crypto/asn1/a_type.o" => + [ + "crypto/asn1/a_type.c", + ], + "crypto/asn1/a_utctm.o" => + [ + "crypto/asn1/a_utctm.c", + ], + "crypto/asn1/a_utf8.o" => + [ + "crypto/asn1/a_utf8.c", + ], + "crypto/asn1/a_verify.o" => + [ + "crypto/asn1/a_verify.c", + ], + "crypto/asn1/ameth_lib.o" => + [ + "crypto/asn1/ameth_lib.c", + ], + "crypto/asn1/asn1_err.o" => + [ + "crypto/asn1/asn1_err.c", + ], + "crypto/asn1/asn1_gen.o" => + [ + "crypto/asn1/asn1_gen.c", + ], + "crypto/asn1/asn1_item_list.o" => + [ + "crypto/asn1/asn1_item_list.c", + ], + "crypto/asn1/asn1_lib.o" => + [ + "crypto/asn1/asn1_lib.c", + ], + "crypto/asn1/asn1_par.o" => + [ + "crypto/asn1/asn1_par.c", + ], + "crypto/asn1/asn_mime.o" => + [ + "crypto/asn1/asn_mime.c", + ], + "crypto/asn1/asn_moid.o" => + [ + "crypto/asn1/asn_moid.c", + ], + "crypto/asn1/asn_mstbl.o" => + [ + "crypto/asn1/asn_mstbl.c", + ], + "crypto/asn1/asn_pack.o" => + [ + "crypto/asn1/asn_pack.c", + ], + "crypto/asn1/bio_asn1.o" => + [ + "crypto/asn1/bio_asn1.c", + ], + "crypto/asn1/bio_ndef.o" => + [ + "crypto/asn1/bio_ndef.c", + ], + "crypto/asn1/d2i_pr.o" => + [ + "crypto/asn1/d2i_pr.c", + ], + "crypto/asn1/d2i_pu.o" => + [ + "crypto/asn1/d2i_pu.c", + ], + "crypto/asn1/evp_asn1.o" => + [ + "crypto/asn1/evp_asn1.c", + ], + "crypto/asn1/f_int.o" => + [ + "crypto/asn1/f_int.c", + ], + "crypto/asn1/f_string.o" => + [ + "crypto/asn1/f_string.c", + ], + "crypto/asn1/i2d_pr.o" => + [ + "crypto/asn1/i2d_pr.c", + ], + "crypto/asn1/i2d_pu.o" => + [ + "crypto/asn1/i2d_pu.c", + ], + "crypto/asn1/n_pkey.o" => + [ + "crypto/asn1/n_pkey.c", + ], + "crypto/asn1/nsseq.o" => + [ + "crypto/asn1/nsseq.c", + ], + "crypto/asn1/p5_pbe.o" => + [ + "crypto/asn1/p5_pbe.c", + ], + "crypto/asn1/p5_pbev2.o" => + [ + "crypto/asn1/p5_pbev2.c", + ], + "crypto/asn1/p5_scrypt.o" => + [ + "crypto/asn1/p5_scrypt.c", + ], + "crypto/asn1/p8_pkey.o" => + [ + "crypto/asn1/p8_pkey.c", + ], + "crypto/asn1/t_bitst.o" => + [ + "crypto/asn1/t_bitst.c", + ], + "crypto/asn1/t_pkey.o" => + [ + "crypto/asn1/t_pkey.c", + ], + "crypto/asn1/t_spki.o" => + [ + "crypto/asn1/t_spki.c", + ], + "crypto/asn1/tasn_dec.o" => + [ + "crypto/asn1/tasn_dec.c", + ], + "crypto/asn1/tasn_enc.o" => + [ + "crypto/asn1/tasn_enc.c", + ], + "crypto/asn1/tasn_fre.o" => + [ + "crypto/asn1/tasn_fre.c", + ], + "crypto/asn1/tasn_new.o" => + [ + "crypto/asn1/tasn_new.c", + ], + "crypto/asn1/tasn_prn.o" => + [ + "crypto/asn1/tasn_prn.c", + ], + "crypto/asn1/tasn_scn.o" => + [ + "crypto/asn1/tasn_scn.c", + ], + "crypto/asn1/tasn_typ.o" => + [ + "crypto/asn1/tasn_typ.c", + ], + "crypto/asn1/tasn_utl.o" => + [ + "crypto/asn1/tasn_utl.c", + ], + "crypto/asn1/x_algor.o" => + [ + "crypto/asn1/x_algor.c", + ], + "crypto/asn1/x_bignum.o" => + [ + "crypto/asn1/x_bignum.c", + ], + "crypto/asn1/x_info.o" => + [ + "crypto/asn1/x_info.c", + ], + "crypto/asn1/x_int64.o" => + [ + "crypto/asn1/x_int64.c", + ], + "crypto/asn1/x_long.o" => + [ + "crypto/asn1/x_long.c", + ], + "crypto/asn1/x_pkey.o" => + [ + "crypto/asn1/x_pkey.c", + ], + "crypto/asn1/x_sig.o" => + [ + "crypto/asn1/x_sig.c", + ], + "crypto/asn1/x_spki.o" => + [ + "crypto/asn1/x_spki.c", + ], + "crypto/asn1/x_val.o" => + [ + "crypto/asn1/x_val.c", + ], + "crypto/async/arch/async_null.o" => + [ + "crypto/async/arch/async_null.c", + ], + "crypto/async/arch/async_posix.o" => + [ + "crypto/async/arch/async_posix.c", + ], + "crypto/async/arch/async_win.o" => + [ + "crypto/async/arch/async_win.c", + ], + "crypto/async/async.o" => + [ + "crypto/async/async.c", + ], + "crypto/async/async_err.o" => + [ + "crypto/async/async_err.c", + ], + "crypto/async/async_wait.o" => + [ + "crypto/async/async_wait.c", + ], + "crypto/bf/bf_cfb64.o" => + [ + "crypto/bf/bf_cfb64.c", + ], + "crypto/bf/bf_ecb.o" => + [ + "crypto/bf/bf_ecb.c", + ], + "crypto/bf/bf_enc.o" => + [ + "crypto/bf/bf_enc.c", + ], + "crypto/bf/bf_ofb64.o" => + [ + "crypto/bf/bf_ofb64.c", + ], + "crypto/bf/bf_skey.o" => + [ + "crypto/bf/bf_skey.c", + ], + "crypto/bio/b_addr.o" => + [ + "crypto/bio/b_addr.c", + ], + "crypto/bio/b_dump.o" => + [ + "crypto/bio/b_dump.c", + ], + "crypto/bio/b_print.o" => + [ + "crypto/bio/b_print.c", + ], + "crypto/bio/b_sock.o" => + [ + "crypto/bio/b_sock.c", + ], + "crypto/bio/b_sock2.o" => + [ + "crypto/bio/b_sock2.c", + ], + "crypto/bio/bf_buff.o" => + [ + "crypto/bio/bf_buff.c", + ], + "crypto/bio/bf_lbuf.o" => + [ + "crypto/bio/bf_lbuf.c", + ], + "crypto/bio/bf_nbio.o" => + [ + "crypto/bio/bf_nbio.c", + ], + "crypto/bio/bf_null.o" => + [ + "crypto/bio/bf_null.c", + ], + "crypto/bio/bio_cb.o" => + [ + "crypto/bio/bio_cb.c", + ], + "crypto/bio/bio_err.o" => + [ + "crypto/bio/bio_err.c", + ], + "crypto/bio/bio_lib.o" => + [ + "crypto/bio/bio_lib.c", + ], + "crypto/bio/bio_meth.o" => + [ + "crypto/bio/bio_meth.c", + ], + "crypto/bio/bss_acpt.o" => + [ + "crypto/bio/bss_acpt.c", + ], + "crypto/bio/bss_bio.o" => + [ + "crypto/bio/bss_bio.c", + ], + "crypto/bio/bss_conn.o" => + [ + "crypto/bio/bss_conn.c", + ], + "crypto/bio/bss_dgram.o" => + [ + "crypto/bio/bss_dgram.c", + ], + "crypto/bio/bss_fd.o" => + [ + "crypto/bio/bss_fd.c", + ], + "crypto/bio/bss_file.o" => + [ + "crypto/bio/bss_file.c", + ], + "crypto/bio/bss_log.o" => + [ + "crypto/bio/bss_log.c", + ], + "crypto/bio/bss_mem.o" => + [ + "crypto/bio/bss_mem.c", + ], + "crypto/bio/bss_null.o" => + [ + "crypto/bio/bss_null.c", + ], + "crypto/bio/bss_sock.o" => + [ + "crypto/bio/bss_sock.c", + ], + "crypto/blake2/blake2b.o" => + [ + "crypto/blake2/blake2b.c", + ], + "crypto/blake2/blake2s.o" => + [ + "crypto/blake2/blake2s.c", + ], + "crypto/blake2/m_blake2b.o" => + [ + "crypto/blake2/m_blake2b.c", + ], + "crypto/blake2/m_blake2s.o" => + [ + "crypto/blake2/m_blake2s.c", + ], + "crypto/bn/bn_add.o" => + [ + "crypto/bn/bn_add.c", + ], + "crypto/bn/bn_asm.o" => + [ + "crypto/bn/bn_asm.c", + ], + "crypto/bn/bn_blind.o" => + [ + "crypto/bn/bn_blind.c", + ], + "crypto/bn/bn_const.o" => + [ + "crypto/bn/bn_const.c", + ], + "crypto/bn/bn_ctx.o" => + [ + "crypto/bn/bn_ctx.c", + ], + "crypto/bn/bn_depr.o" => + [ + "crypto/bn/bn_depr.c", + ], + "crypto/bn/bn_dh.o" => + [ + "crypto/bn/bn_dh.c", + ], + "crypto/bn/bn_div.o" => + [ + "crypto/bn/bn_div.c", + ], + "crypto/bn/bn_err.o" => + [ + "crypto/bn/bn_err.c", + ], + "crypto/bn/bn_exp.o" => + [ + "crypto/bn/bn_exp.c", + ], + "crypto/bn/bn_exp2.o" => + [ + "crypto/bn/bn_exp2.c", + ], + "crypto/bn/bn_gcd.o" => + [ + "crypto/bn/bn_gcd.c", + ], + "crypto/bn/bn_gf2m.o" => + [ + "crypto/bn/bn_gf2m.c", + ], + "crypto/bn/bn_intern.o" => + [ + "crypto/bn/bn_intern.c", + ], + "crypto/bn/bn_kron.o" => + [ + "crypto/bn/bn_kron.c", + ], + "crypto/bn/bn_lib.o" => + [ + "crypto/bn/bn_lib.c", + ], + "crypto/bn/bn_mod.o" => + [ + "crypto/bn/bn_mod.c", + ], + "crypto/bn/bn_mont.o" => + [ + "crypto/bn/bn_mont.c", + ], + "crypto/bn/bn_mpi.o" => + [ + "crypto/bn/bn_mpi.c", + ], + "crypto/bn/bn_mul.o" => + [ + "crypto/bn/bn_mul.c", + ], + "crypto/bn/bn_nist.o" => + [ + "crypto/bn/bn_nist.c", + ], + "crypto/bn/bn_prime.o" => + [ + "crypto/bn/bn_prime.c", + ], + "crypto/bn/bn_print.o" => + [ + "crypto/bn/bn_print.c", + ], + "crypto/bn/bn_rand.o" => + [ + "crypto/bn/bn_rand.c", + ], + "crypto/bn/bn_recp.o" => + [ + "crypto/bn/bn_recp.c", + ], + "crypto/bn/bn_shift.o" => + [ + "crypto/bn/bn_shift.c", + ], + "crypto/bn/bn_sqr.o" => + [ + "crypto/bn/bn_sqr.c", + ], + "crypto/bn/bn_sqrt.o" => + [ + "crypto/bn/bn_sqrt.c", + ], + "crypto/bn/bn_srp.o" => + [ + "crypto/bn/bn_srp.c", + ], + "crypto/bn/bn_word.o" => + [ + "crypto/bn/bn_word.c", + ], + "crypto/bn/bn_x931p.o" => + [ + "crypto/bn/bn_x931p.c", + ], + "crypto/buffer/buf_err.o" => + [ + "crypto/buffer/buf_err.c", + ], + "crypto/buffer/buffer.o" => + [ + "crypto/buffer/buffer.c", + ], + "crypto/camellia/camellia.o" => + [ + "crypto/camellia/camellia.c", + ], + "crypto/camellia/cmll_cbc.o" => + [ + "crypto/camellia/cmll_cbc.c", + ], + "crypto/camellia/cmll_cfb.o" => + [ + "crypto/camellia/cmll_cfb.c", + ], + "crypto/camellia/cmll_ctr.o" => + [ + "crypto/camellia/cmll_ctr.c", + ], + "crypto/camellia/cmll_ecb.o" => + [ + "crypto/camellia/cmll_ecb.c", + ], + "crypto/camellia/cmll_misc.o" => + [ + "crypto/camellia/cmll_misc.c", + ], + "crypto/camellia/cmll_ofb.o" => + [ + "crypto/camellia/cmll_ofb.c", + ], + "crypto/cast/c_cfb64.o" => + [ + "crypto/cast/c_cfb64.c", + ], + "crypto/cast/c_ecb.o" => + [ + "crypto/cast/c_ecb.c", + ], + "crypto/cast/c_enc.o" => + [ + "crypto/cast/c_enc.c", + ], + "crypto/cast/c_ofb64.o" => + [ + "crypto/cast/c_ofb64.c", + ], + "crypto/cast/c_skey.o" => + [ + "crypto/cast/c_skey.c", + ], + "crypto/chacha/chacha_enc.o" => + [ + "crypto/chacha/chacha_enc.c", + ], + "crypto/cmac/cm_ameth.o" => + [ + "crypto/cmac/cm_ameth.c", + ], + "crypto/cmac/cm_pmeth.o" => + [ + "crypto/cmac/cm_pmeth.c", + ], + "crypto/cmac/cmac.o" => + [ + "crypto/cmac/cmac.c", + ], + "crypto/cms/cms_asn1.o" => + [ + "crypto/cms/cms_asn1.c", + ], + "crypto/cms/cms_att.o" => + [ + "crypto/cms/cms_att.c", + ], + "crypto/cms/cms_cd.o" => + [ + "crypto/cms/cms_cd.c", + ], + "crypto/cms/cms_dd.o" => + [ + "crypto/cms/cms_dd.c", + ], + "crypto/cms/cms_enc.o" => + [ + "crypto/cms/cms_enc.c", + ], + "crypto/cms/cms_env.o" => + [ + "crypto/cms/cms_env.c", + ], + "crypto/cms/cms_err.o" => + [ + "crypto/cms/cms_err.c", + ], + "crypto/cms/cms_ess.o" => + [ + "crypto/cms/cms_ess.c", + ], + "crypto/cms/cms_io.o" => + [ + "crypto/cms/cms_io.c", + ], + "crypto/cms/cms_kari.o" => + [ + "crypto/cms/cms_kari.c", + ], + "crypto/cms/cms_lib.o" => + [ + "crypto/cms/cms_lib.c", + ], + "crypto/cms/cms_pwri.o" => + [ + "crypto/cms/cms_pwri.c", + ], + "crypto/cms/cms_sd.o" => + [ + "crypto/cms/cms_sd.c", + ], + "crypto/cms/cms_smime.o" => + [ + "crypto/cms/cms_smime.c", + ], + "crypto/conf/conf_api.o" => + [ + "crypto/conf/conf_api.c", + ], + "crypto/conf/conf_def.o" => + [ + "crypto/conf/conf_def.c", + ], + "crypto/conf/conf_err.o" => + [ + "crypto/conf/conf_err.c", + ], + "crypto/conf/conf_lib.o" => + [ + "crypto/conf/conf_lib.c", + ], + "crypto/conf/conf_mall.o" => + [ + "crypto/conf/conf_mall.c", + ], + "crypto/conf/conf_mod.o" => + [ + "crypto/conf/conf_mod.c", + ], + "crypto/conf/conf_sap.o" => + [ + "crypto/conf/conf_sap.c", + ], + "crypto/conf/conf_ssl.o" => + [ + "crypto/conf/conf_ssl.c", + ], + "crypto/cpt_err.o" => + [ + "crypto/cpt_err.c", + ], + "crypto/cryptlib.o" => + [ + "crypto/cryptlib.c", + ], + "crypto/ct/ct_b64.o" => + [ + "crypto/ct/ct_b64.c", + ], + "crypto/ct/ct_err.o" => + [ + "crypto/ct/ct_err.c", + ], + "crypto/ct/ct_log.o" => + [ + "crypto/ct/ct_log.c", + ], + "crypto/ct/ct_oct.o" => + [ + "crypto/ct/ct_oct.c", + ], + "crypto/ct/ct_policy.o" => + [ + "crypto/ct/ct_policy.c", + ], + "crypto/ct/ct_prn.o" => + [ + "crypto/ct/ct_prn.c", + ], + "crypto/ct/ct_sct.o" => + [ + "crypto/ct/ct_sct.c", + ], + "crypto/ct/ct_sct_ctx.o" => + [ + "crypto/ct/ct_sct_ctx.c", + ], + "crypto/ct/ct_vfy.o" => + [ + "crypto/ct/ct_vfy.c", + ], + "crypto/ct/ct_x509v3.o" => + [ + "crypto/ct/ct_x509v3.c", + ], + "crypto/ctype.o" => + [ + "crypto/ctype.c", + ], + "crypto/cversion.o" => + [ + "crypto/cversion.c", + ], + "crypto/des/cbc_cksm.o" => + [ + "crypto/des/cbc_cksm.c", + ], + "crypto/des/cbc_enc.o" => + [ + "crypto/des/cbc_enc.c", + ], + "crypto/des/cfb64ede.o" => + [ + "crypto/des/cfb64ede.c", + ], + "crypto/des/cfb64enc.o" => + [ + "crypto/des/cfb64enc.c", + ], + "crypto/des/cfb_enc.o" => + [ + "crypto/des/cfb_enc.c", + ], + "crypto/des/des_enc.o" => + [ + "crypto/des/des_enc.c", + ], + "crypto/des/ecb3_enc.o" => + [ + "crypto/des/ecb3_enc.c", + ], + "crypto/des/ecb_enc.o" => + [ + "crypto/des/ecb_enc.c", + ], + "crypto/des/fcrypt.o" => + [ + "crypto/des/fcrypt.c", + ], + "crypto/des/fcrypt_b.o" => + [ + "crypto/des/fcrypt_b.c", + ], + "crypto/des/ofb64ede.o" => + [ + "crypto/des/ofb64ede.c", + ], + "crypto/des/ofb64enc.o" => + [ + "crypto/des/ofb64enc.c", + ], + "crypto/des/ofb_enc.o" => + [ + "crypto/des/ofb_enc.c", + ], + "crypto/des/pcbc_enc.o" => + [ + "crypto/des/pcbc_enc.c", + ], + "crypto/des/qud_cksm.o" => + [ + "crypto/des/qud_cksm.c", + ], + "crypto/des/rand_key.o" => + [ + "crypto/des/rand_key.c", + ], + "crypto/des/set_key.o" => + [ + "crypto/des/set_key.c", + ], + "crypto/des/str2key.o" => + [ + "crypto/des/str2key.c", + ], + "crypto/des/xcbc_enc.o" => + [ + "crypto/des/xcbc_enc.c", + ], + "crypto/dh/dh_ameth.o" => + [ + "crypto/dh/dh_ameth.c", + ], + "crypto/dh/dh_asn1.o" => + [ + "crypto/dh/dh_asn1.c", + ], + "crypto/dh/dh_check.o" => + [ + "crypto/dh/dh_check.c", + ], + "crypto/dh/dh_depr.o" => + [ + "crypto/dh/dh_depr.c", + ], + "crypto/dh/dh_err.o" => + [ + "crypto/dh/dh_err.c", + ], + "crypto/dh/dh_gen.o" => + [ + "crypto/dh/dh_gen.c", + ], + "crypto/dh/dh_kdf.o" => + [ + "crypto/dh/dh_kdf.c", + ], + "crypto/dh/dh_key.o" => + [ + "crypto/dh/dh_key.c", + ], + "crypto/dh/dh_lib.o" => + [ + "crypto/dh/dh_lib.c", + ], + "crypto/dh/dh_meth.o" => + [ + "crypto/dh/dh_meth.c", + ], + "crypto/dh/dh_pmeth.o" => + [ + "crypto/dh/dh_pmeth.c", + ], + "crypto/dh/dh_prn.o" => + [ + "crypto/dh/dh_prn.c", + ], + "crypto/dh/dh_rfc5114.o" => + [ + "crypto/dh/dh_rfc5114.c", + ], + "crypto/dh/dh_rfc7919.o" => + [ + "crypto/dh/dh_rfc7919.c", + ], + "crypto/dsa/dsa_ameth.o" => + [ + "crypto/dsa/dsa_ameth.c", + ], + "crypto/dsa/dsa_asn1.o" => + [ + "crypto/dsa/dsa_asn1.c", + ], + "crypto/dsa/dsa_depr.o" => + [ + "crypto/dsa/dsa_depr.c", + ], + "crypto/dsa/dsa_err.o" => + [ + "crypto/dsa/dsa_err.c", + ], + "crypto/dsa/dsa_gen.o" => + [ + "crypto/dsa/dsa_gen.c", + ], + "crypto/dsa/dsa_key.o" => + [ + "crypto/dsa/dsa_key.c", + ], + "crypto/dsa/dsa_lib.o" => + [ + "crypto/dsa/dsa_lib.c", + ], + "crypto/dsa/dsa_meth.o" => + [ + "crypto/dsa/dsa_meth.c", + ], + "crypto/dsa/dsa_ossl.o" => + [ + "crypto/dsa/dsa_ossl.c", + ], + "crypto/dsa/dsa_pmeth.o" => + [ + "crypto/dsa/dsa_pmeth.c", + ], + "crypto/dsa/dsa_prn.o" => + [ + "crypto/dsa/dsa_prn.c", + ], + "crypto/dsa/dsa_sign.o" => + [ + "crypto/dsa/dsa_sign.c", + ], + "crypto/dsa/dsa_vrf.o" => + [ + "crypto/dsa/dsa_vrf.c", + ], + "crypto/dso/dso_dl.o" => + [ + "crypto/dso/dso_dl.c", + ], + "crypto/dso/dso_dlfcn.o" => + [ + "crypto/dso/dso_dlfcn.c", + ], + "crypto/dso/dso_err.o" => + [ + "crypto/dso/dso_err.c", + ], + "crypto/dso/dso_lib.o" => + [ + "crypto/dso/dso_lib.c", + ], + "crypto/dso/dso_openssl.o" => + [ + "crypto/dso/dso_openssl.c", + ], + "crypto/dso/dso_vms.o" => + [ + "crypto/dso/dso_vms.c", + ], + "crypto/dso/dso_win32.o" => + [ + "crypto/dso/dso_win32.c", + ], + "crypto/ebcdic.o" => + [ + "crypto/ebcdic.c", + ], + "crypto/ec/curve25519.o" => + [ + "crypto/ec/curve25519.c", + ], + "crypto/ec/curve448/arch_32/f_impl.o" => + [ + "crypto/ec/curve448/arch_32/f_impl.c", + ], + "crypto/ec/curve448/curve448.o" => + [ + "crypto/ec/curve448/curve448.c", + ], + "crypto/ec/curve448/curve448_tables.o" => + [ + "crypto/ec/curve448/curve448_tables.c", + ], + "crypto/ec/curve448/eddsa.o" => + [ + "crypto/ec/curve448/eddsa.c", + ], + "crypto/ec/curve448/f_generic.o" => + [ + "crypto/ec/curve448/f_generic.c", + ], + "crypto/ec/curve448/scalar.o" => + [ + "crypto/ec/curve448/scalar.c", + ], + "crypto/ec/ec2_oct.o" => + [ + "crypto/ec/ec2_oct.c", + ], + "crypto/ec/ec2_smpl.o" => + [ + "crypto/ec/ec2_smpl.c", + ], + "crypto/ec/ec_ameth.o" => + [ + "crypto/ec/ec_ameth.c", + ], + "crypto/ec/ec_asn1.o" => + [ + "crypto/ec/ec_asn1.c", + ], + "crypto/ec/ec_check.o" => + [ + "crypto/ec/ec_check.c", + ], + "crypto/ec/ec_curve.o" => + [ + "crypto/ec/ec_curve.c", + ], + "crypto/ec/ec_cvt.o" => + [ + "crypto/ec/ec_cvt.c", + ], + "crypto/ec/ec_err.o" => + [ + "crypto/ec/ec_err.c", + ], + "crypto/ec/ec_key.o" => + [ + "crypto/ec/ec_key.c", + ], + "crypto/ec/ec_kmeth.o" => + [ + "crypto/ec/ec_kmeth.c", + ], + "crypto/ec/ec_lib.o" => + [ + "crypto/ec/ec_lib.c", + ], + "crypto/ec/ec_mult.o" => + [ + "crypto/ec/ec_mult.c", + ], + "crypto/ec/ec_oct.o" => + [ + "crypto/ec/ec_oct.c", + ], + "crypto/ec/ec_pmeth.o" => + [ + "crypto/ec/ec_pmeth.c", + ], + "crypto/ec/ec_print.o" => + [ + "crypto/ec/ec_print.c", + ], + "crypto/ec/ecdh_kdf.o" => + [ + "crypto/ec/ecdh_kdf.c", + ], + "crypto/ec/ecdh_ossl.o" => + [ + "crypto/ec/ecdh_ossl.c", + ], + "crypto/ec/ecdsa_ossl.o" => + [ + "crypto/ec/ecdsa_ossl.c", + ], + "crypto/ec/ecdsa_sign.o" => + [ + "crypto/ec/ecdsa_sign.c", + ], + "crypto/ec/ecdsa_vrf.o" => + [ + "crypto/ec/ecdsa_vrf.c", + ], + "crypto/ec/eck_prn.o" => + [ + "crypto/ec/eck_prn.c", + ], + "crypto/ec/ecp_mont.o" => + [ + "crypto/ec/ecp_mont.c", + ], + "crypto/ec/ecp_nist.o" => + [ + "crypto/ec/ecp_nist.c", + ], + "crypto/ec/ecp_nistp224.o" => + [ + "crypto/ec/ecp_nistp224.c", + ], + "crypto/ec/ecp_nistp256.o" => + [ + "crypto/ec/ecp_nistp256.c", + ], + "crypto/ec/ecp_nistp521.o" => + [ + "crypto/ec/ecp_nistp521.c", + ], + "crypto/ec/ecp_nistputil.o" => + [ + "crypto/ec/ecp_nistputil.c", + ], + "crypto/ec/ecp_oct.o" => + [ + "crypto/ec/ecp_oct.c", + ], + "crypto/ec/ecp_smpl.o" => + [ + "crypto/ec/ecp_smpl.c", + ], + "crypto/ec/ecx_meth.o" => + [ + "crypto/ec/ecx_meth.c", + ], + "crypto/engine/eng_all.o" => + [ + "crypto/engine/eng_all.c", + ], + "crypto/engine/eng_cnf.o" => + [ + "crypto/engine/eng_cnf.c", + ], + "crypto/engine/eng_ctrl.o" => + [ + "crypto/engine/eng_ctrl.c", + ], + "crypto/engine/eng_dyn.o" => + [ + "crypto/engine/eng_dyn.c", + ], + "crypto/engine/eng_err.o" => + [ + "crypto/engine/eng_err.c", + ], + "crypto/engine/eng_fat.o" => + [ + "crypto/engine/eng_fat.c", + ], + "crypto/engine/eng_init.o" => + [ + "crypto/engine/eng_init.c", + ], + "crypto/engine/eng_lib.o" => + [ + "crypto/engine/eng_lib.c", + ], + "crypto/engine/eng_list.o" => + [ + "crypto/engine/eng_list.c", + ], + "crypto/engine/eng_openssl.o" => + [ + "crypto/engine/eng_openssl.c", + ], + "crypto/engine/eng_pkey.o" => + [ + "crypto/engine/eng_pkey.c", + ], + "crypto/engine/eng_rdrand.o" => + [ + "crypto/engine/eng_rdrand.c", + ], + "crypto/engine/eng_table.o" => + [ + "crypto/engine/eng_table.c", + ], + "crypto/engine/tb_asnmth.o" => + [ + "crypto/engine/tb_asnmth.c", + ], + "crypto/engine/tb_cipher.o" => + [ + "crypto/engine/tb_cipher.c", + ], + "crypto/engine/tb_dh.o" => + [ + "crypto/engine/tb_dh.c", + ], + "crypto/engine/tb_digest.o" => + [ + "crypto/engine/tb_digest.c", + ], + "crypto/engine/tb_dsa.o" => + [ + "crypto/engine/tb_dsa.c", + ], + "crypto/engine/tb_eckey.o" => + [ + "crypto/engine/tb_eckey.c", + ], + "crypto/engine/tb_pkmeth.o" => + [ + "crypto/engine/tb_pkmeth.c", + ], + "crypto/engine/tb_rand.o" => + [ + "crypto/engine/tb_rand.c", + ], + "crypto/engine/tb_rsa.o" => + [ + "crypto/engine/tb_rsa.c", + ], + "crypto/err/err.o" => + [ + "crypto/err/err.c", + ], + "crypto/err/err_all.o" => + [ + "crypto/err/err_all.c", + ], + "crypto/err/err_prn.o" => + [ + "crypto/err/err_prn.c", + ], + "crypto/evp/bio_b64.o" => + [ + "crypto/evp/bio_b64.c", + ], + "crypto/evp/bio_enc.o" => + [ + "crypto/evp/bio_enc.c", + ], + "crypto/evp/bio_md.o" => + [ + "crypto/evp/bio_md.c", + ], + "crypto/evp/bio_ok.o" => + [ + "crypto/evp/bio_ok.c", + ], + "crypto/evp/c_allc.o" => + [ + "crypto/evp/c_allc.c", + ], + "crypto/evp/c_alld.o" => + [ + "crypto/evp/c_alld.c", + ], + "crypto/evp/cmeth_lib.o" => + [ + "crypto/evp/cmeth_lib.c", + ], + "crypto/evp/digest.o" => + [ + "crypto/evp/digest.c", + ], + "crypto/evp/e_aes.o" => + [ + "crypto/evp/e_aes.c", + ], + "crypto/evp/e_aes_cbc_hmac_sha1.o" => + [ + "crypto/evp/e_aes_cbc_hmac_sha1.c", + ], + "crypto/evp/e_aes_cbc_hmac_sha256.o" => + [ + "crypto/evp/e_aes_cbc_hmac_sha256.c", + ], + "crypto/evp/e_aria.o" => + [ + "crypto/evp/e_aria.c", + ], + "crypto/evp/e_bf.o" => + [ + "crypto/evp/e_bf.c", + ], + "crypto/evp/e_camellia.o" => + [ + "crypto/evp/e_camellia.c", + ], + "crypto/evp/e_cast.o" => + [ + "crypto/evp/e_cast.c", + ], + "crypto/evp/e_chacha20_poly1305.o" => + [ + "crypto/evp/e_chacha20_poly1305.c", + ], + "crypto/evp/e_des.o" => + [ + "crypto/evp/e_des.c", + ], + "crypto/evp/e_des3.o" => + [ + "crypto/evp/e_des3.c", + ], + "crypto/evp/e_idea.o" => + [ + "crypto/evp/e_idea.c", + ], + "crypto/evp/e_null.o" => + [ + "crypto/evp/e_null.c", + ], + "crypto/evp/e_old.o" => + [ + "crypto/evp/e_old.c", + ], + "crypto/evp/e_rc2.o" => + [ + "crypto/evp/e_rc2.c", + ], + "crypto/evp/e_rc4.o" => + [ + "crypto/evp/e_rc4.c", + ], + "crypto/evp/e_rc4_hmac_md5.o" => + [ + "crypto/evp/e_rc4_hmac_md5.c", + ], + "crypto/evp/e_rc5.o" => + [ + "crypto/evp/e_rc5.c", + ], + "crypto/evp/e_seed.o" => + [ + "crypto/evp/e_seed.c", + ], + "crypto/evp/e_sm4.o" => + [ + "crypto/evp/e_sm4.c", + ], + "crypto/evp/e_xcbc_d.o" => + [ + "crypto/evp/e_xcbc_d.c", + ], + "crypto/evp/encode.o" => + [ + "crypto/evp/encode.c", + ], + "crypto/evp/evp_cnf.o" => + [ + "crypto/evp/evp_cnf.c", + ], + "crypto/evp/evp_enc.o" => + [ + "crypto/evp/evp_enc.c", + ], + "crypto/evp/evp_err.o" => + [ + "crypto/evp/evp_err.c", + ], + "crypto/evp/evp_key.o" => + [ + "crypto/evp/evp_key.c", + ], + "crypto/evp/evp_lib.o" => + [ + "crypto/evp/evp_lib.c", + ], + "crypto/evp/evp_pbe.o" => + [ + "crypto/evp/evp_pbe.c", + ], + "crypto/evp/evp_pkey.o" => + [ + "crypto/evp/evp_pkey.c", + ], + "crypto/evp/m_md2.o" => + [ + "crypto/evp/m_md2.c", + ], + "crypto/evp/m_md4.o" => + [ + "crypto/evp/m_md4.c", + ], + "crypto/evp/m_md5.o" => + [ + "crypto/evp/m_md5.c", + ], + "crypto/evp/m_md5_sha1.o" => + [ + "crypto/evp/m_md5_sha1.c", + ], + "crypto/evp/m_mdc2.o" => + [ + "crypto/evp/m_mdc2.c", + ], + "crypto/evp/m_null.o" => + [ + "crypto/evp/m_null.c", + ], + "crypto/evp/m_ripemd.o" => + [ + "crypto/evp/m_ripemd.c", + ], + "crypto/evp/m_sha1.o" => + [ + "crypto/evp/m_sha1.c", + ], + "crypto/evp/m_sha3.o" => + [ + "crypto/evp/m_sha3.c", + ], + "crypto/evp/m_sigver.o" => + [ + "crypto/evp/m_sigver.c", + ], + "crypto/evp/m_wp.o" => + [ + "crypto/evp/m_wp.c", + ], + "crypto/evp/names.o" => + [ + "crypto/evp/names.c", + ], + "crypto/evp/p5_crpt.o" => + [ + "crypto/evp/p5_crpt.c", + ], + "crypto/evp/p5_crpt2.o" => + [ + "crypto/evp/p5_crpt2.c", + ], + "crypto/evp/p_dec.o" => + [ + "crypto/evp/p_dec.c", + ], + "crypto/evp/p_enc.o" => + [ + "crypto/evp/p_enc.c", + ], + "crypto/evp/p_lib.o" => + [ + "crypto/evp/p_lib.c", + ], + "crypto/evp/p_open.o" => + [ + "crypto/evp/p_open.c", + ], + "crypto/evp/p_seal.o" => + [ + "crypto/evp/p_seal.c", + ], + "crypto/evp/p_sign.o" => + [ + "crypto/evp/p_sign.c", + ], + "crypto/evp/p_verify.o" => + [ + "crypto/evp/p_verify.c", + ], + "crypto/evp/pbe_scrypt.o" => + [ + "crypto/evp/pbe_scrypt.c", + ], + "crypto/evp/pmeth_fn.o" => + [ + "crypto/evp/pmeth_fn.c", + ], + "crypto/evp/pmeth_gn.o" => + [ + "crypto/evp/pmeth_gn.c", + ], + "crypto/evp/pmeth_lib.o" => + [ + "crypto/evp/pmeth_lib.c", + ], + "crypto/ex_data.o" => + [ + "crypto/ex_data.c", + ], + "crypto/getenv.o" => + [ + "crypto/getenv.c", + ], + "crypto/hmac/hm_ameth.o" => + [ + "crypto/hmac/hm_ameth.c", + ], + "crypto/hmac/hm_pmeth.o" => + [ + "crypto/hmac/hm_pmeth.c", + ], + "crypto/hmac/hmac.o" => + [ + "crypto/hmac/hmac.c", + ], + "crypto/idea/i_cbc.o" => + [ + "crypto/idea/i_cbc.c", + ], + "crypto/idea/i_cfb64.o" => + [ + "crypto/idea/i_cfb64.c", + ], + "crypto/idea/i_ecb.o" => + [ + "crypto/idea/i_ecb.c", + ], + "crypto/idea/i_ofb64.o" => + [ + "crypto/idea/i_ofb64.c", + ], + "crypto/idea/i_skey.o" => + [ + "crypto/idea/i_skey.c", + ], + "crypto/init.o" => + [ + "crypto/init.c", + ], + "crypto/kdf/hkdf.o" => + [ + "crypto/kdf/hkdf.c", + ], + "crypto/kdf/kdf_err.o" => + [ + "crypto/kdf/kdf_err.c", + ], + "crypto/kdf/scrypt.o" => + [ + "crypto/kdf/scrypt.c", + ], + "crypto/kdf/tls1_prf.o" => + [ + "crypto/kdf/tls1_prf.c", + ], + "crypto/lhash/lh_stats.o" => + [ + "crypto/lhash/lh_stats.c", + ], + "crypto/lhash/lhash.o" => + [ + "crypto/lhash/lhash.c", + ], + "crypto/md4/md4_dgst.o" => + [ + "crypto/md4/md4_dgst.c", + ], + "crypto/md4/md4_one.o" => + [ + "crypto/md4/md4_one.c", + ], + "crypto/md5/md5_dgst.o" => + [ + "crypto/md5/md5_dgst.c", + ], + "crypto/md5/md5_one.o" => + [ + "crypto/md5/md5_one.c", + ], + "crypto/mdc2/mdc2_one.o" => + [ + "crypto/mdc2/mdc2_one.c", + ], + "crypto/mdc2/mdc2dgst.o" => + [ + "crypto/mdc2/mdc2dgst.c", + ], + "crypto/mem.o" => + [ + "crypto/mem.c", + ], + "crypto/mem_clr.o" => + [ + "crypto/mem_clr.c", + ], + "crypto/mem_dbg.o" => + [ + "crypto/mem_dbg.c", + ], + "crypto/mem_sec.o" => + [ + "crypto/mem_sec.c", + ], + "crypto/modes/cbc128.o" => + [ + "crypto/modes/cbc128.c", + ], + "crypto/modes/ccm128.o" => + [ + "crypto/modes/ccm128.c", + ], + "crypto/modes/cfb128.o" => + [ + "crypto/modes/cfb128.c", + ], + "crypto/modes/ctr128.o" => + [ + "crypto/modes/ctr128.c", + ], + "crypto/modes/cts128.o" => + [ + "crypto/modes/cts128.c", + ], + "crypto/modes/gcm128.o" => + [ + "crypto/modes/gcm128.c", + ], + "crypto/modes/ocb128.o" => + [ + "crypto/modes/ocb128.c", + ], + "crypto/modes/ofb128.o" => + [ + "crypto/modes/ofb128.c", + ], + "crypto/modes/wrap128.o" => + [ + "crypto/modes/wrap128.c", + ], + "crypto/modes/xts128.o" => + [ + "crypto/modes/xts128.c", + ], + "crypto/o_dir.o" => + [ + "crypto/o_dir.c", + ], + "crypto/o_fips.o" => + [ + "crypto/o_fips.c", + ], + "crypto/o_fopen.o" => + [ + "crypto/o_fopen.c", + ], + "crypto/o_init.o" => + [ + "crypto/o_init.c", + ], + "crypto/o_str.o" => + [ + "crypto/o_str.c", + ], + "crypto/o_time.o" => + [ + "crypto/o_time.c", + ], + "crypto/objects/o_names.o" => + [ + "crypto/objects/o_names.c", + ], + "crypto/objects/obj_dat.o" => + [ + "crypto/objects/obj_dat.c", + ], + "crypto/objects/obj_err.o" => + [ + "crypto/objects/obj_err.c", + ], + "crypto/objects/obj_lib.o" => + [ + "crypto/objects/obj_lib.c", + ], + "crypto/objects/obj_xref.o" => + [ + "crypto/objects/obj_xref.c", + ], + "crypto/ocsp/ocsp_asn.o" => + [ + "crypto/ocsp/ocsp_asn.c", + ], + "crypto/ocsp/ocsp_cl.o" => + [ + "crypto/ocsp/ocsp_cl.c", + ], + "crypto/ocsp/ocsp_err.o" => + [ + "crypto/ocsp/ocsp_err.c", + ], + "crypto/ocsp/ocsp_ext.o" => + [ + "crypto/ocsp/ocsp_ext.c", + ], + "crypto/ocsp/ocsp_ht.o" => + [ + "crypto/ocsp/ocsp_ht.c", + ], + "crypto/ocsp/ocsp_lib.o" => + [ + "crypto/ocsp/ocsp_lib.c", + ], + "crypto/ocsp/ocsp_prn.o" => + [ + "crypto/ocsp/ocsp_prn.c", + ], + "crypto/ocsp/ocsp_srv.o" => + [ + "crypto/ocsp/ocsp_srv.c", + ], + "crypto/ocsp/ocsp_vfy.o" => + [ + "crypto/ocsp/ocsp_vfy.c", + ], + "crypto/ocsp/v3_ocsp.o" => + [ + "crypto/ocsp/v3_ocsp.c", + ], + "crypto/pem/pem_all.o" => + [ + "crypto/pem/pem_all.c", + ], + "crypto/pem/pem_err.o" => + [ + "crypto/pem/pem_err.c", + ], + "crypto/pem/pem_info.o" => + [ + "crypto/pem/pem_info.c", + ], + "crypto/pem/pem_lib.o" => + [ + "crypto/pem/pem_lib.c", + ], + "crypto/pem/pem_oth.o" => + [ + "crypto/pem/pem_oth.c", + ], + "crypto/pem/pem_pk8.o" => + [ + "crypto/pem/pem_pk8.c", + ], + "crypto/pem/pem_pkey.o" => + [ + "crypto/pem/pem_pkey.c", + ], + "crypto/pem/pem_sign.o" => + [ + "crypto/pem/pem_sign.c", + ], + "crypto/pem/pem_x509.o" => + [ + "crypto/pem/pem_x509.c", + ], + "crypto/pem/pem_xaux.o" => + [ + "crypto/pem/pem_xaux.c", + ], + "crypto/pem/pvkfmt.o" => + [ + "crypto/pem/pvkfmt.c", + ], + "crypto/pkcs12/p12_add.o" => + [ + "crypto/pkcs12/p12_add.c", + ], + "crypto/pkcs12/p12_asn.o" => + [ + "crypto/pkcs12/p12_asn.c", + ], + "crypto/pkcs12/p12_attr.o" => + [ + "crypto/pkcs12/p12_attr.c", + ], + "crypto/pkcs12/p12_crpt.o" => + [ + "crypto/pkcs12/p12_crpt.c", + ], + "crypto/pkcs12/p12_crt.o" => + [ + "crypto/pkcs12/p12_crt.c", + ], + "crypto/pkcs12/p12_decr.o" => + [ + "crypto/pkcs12/p12_decr.c", + ], + "crypto/pkcs12/p12_init.o" => + [ + "crypto/pkcs12/p12_init.c", + ], + "crypto/pkcs12/p12_key.o" => + [ + "crypto/pkcs12/p12_key.c", + ], + "crypto/pkcs12/p12_kiss.o" => + [ + "crypto/pkcs12/p12_kiss.c", + ], + "crypto/pkcs12/p12_mutl.o" => + [ + "crypto/pkcs12/p12_mutl.c", + ], + "crypto/pkcs12/p12_npas.o" => + [ + "crypto/pkcs12/p12_npas.c", + ], + "crypto/pkcs12/p12_p8d.o" => + [ + "crypto/pkcs12/p12_p8d.c", + ], + "crypto/pkcs12/p12_p8e.o" => + [ + "crypto/pkcs12/p12_p8e.c", + ], + "crypto/pkcs12/p12_sbag.o" => + [ + "crypto/pkcs12/p12_sbag.c", + ], + "crypto/pkcs12/p12_utl.o" => + [ + "crypto/pkcs12/p12_utl.c", + ], + "crypto/pkcs12/pk12err.o" => + [ + "crypto/pkcs12/pk12err.c", + ], + "crypto/pkcs7/bio_pk7.o" => + [ + "crypto/pkcs7/bio_pk7.c", + ], + "crypto/pkcs7/pk7_asn1.o" => + [ + "crypto/pkcs7/pk7_asn1.c", + ], + "crypto/pkcs7/pk7_attr.o" => + [ + "crypto/pkcs7/pk7_attr.c", + ], + "crypto/pkcs7/pk7_doit.o" => + [ + "crypto/pkcs7/pk7_doit.c", + ], + "crypto/pkcs7/pk7_lib.o" => + [ + "crypto/pkcs7/pk7_lib.c", + ], + "crypto/pkcs7/pk7_mime.o" => + [ + "crypto/pkcs7/pk7_mime.c", + ], + "crypto/pkcs7/pk7_smime.o" => + [ + "crypto/pkcs7/pk7_smime.c", + ], + "crypto/pkcs7/pkcs7err.o" => + [ + "crypto/pkcs7/pkcs7err.c", + ], + "crypto/poly1305/poly1305.o" => + [ + "crypto/poly1305/poly1305.c", + ], + "crypto/poly1305/poly1305_ameth.o" => + [ + "crypto/poly1305/poly1305_ameth.c", + ], + "crypto/poly1305/poly1305_pmeth.o" => + [ + "crypto/poly1305/poly1305_pmeth.c", + ], + "crypto/rand/drbg_ctr.o" => + [ + "crypto/rand/drbg_ctr.c", + ], + "crypto/rand/drbg_lib.o" => + [ + "crypto/rand/drbg_lib.c", + ], + "crypto/rand/rand_egd.o" => + [ + "crypto/rand/rand_egd.c", + ], + "crypto/rand/rand_err.o" => + [ + "crypto/rand/rand_err.c", + ], + "crypto/rand/rand_lib.o" => + [ + "crypto/rand/rand_lib.c", + ], + "crypto/rand/rand_unix.o" => + [ + "crypto/rand/rand_unix.c", + ], + "crypto/rand/rand_vms.o" => + [ + "crypto/rand/rand_vms.c", + ], + "crypto/rand/rand_win.o" => + [ + "crypto/rand/rand_win.c", + ], + "crypto/rand/randfile.o" => + [ + "crypto/rand/randfile.c", + ], + "crypto/rc2/rc2_cbc.o" => + [ + "crypto/rc2/rc2_cbc.c", + ], + "crypto/rc2/rc2_ecb.o" => + [ + "crypto/rc2/rc2_ecb.c", + ], + "crypto/rc2/rc2_skey.o" => + [ + "crypto/rc2/rc2_skey.c", + ], + "crypto/rc2/rc2cfb64.o" => + [ + "crypto/rc2/rc2cfb64.c", + ], + "crypto/rc2/rc2ofb64.o" => + [ + "crypto/rc2/rc2ofb64.c", + ], + "crypto/rc4/rc4_enc.o" => + [ + "crypto/rc4/rc4_enc.c", + ], + "crypto/rc4/rc4_skey.o" => + [ + "crypto/rc4/rc4_skey.c", + ], + "crypto/ripemd/rmd_dgst.o" => + [ + "crypto/ripemd/rmd_dgst.c", + ], + "crypto/ripemd/rmd_one.o" => + [ + "crypto/ripemd/rmd_one.c", + ], + "crypto/rsa/rsa_ameth.o" => + [ + "crypto/rsa/rsa_ameth.c", + ], + "crypto/rsa/rsa_asn1.o" => + [ + "crypto/rsa/rsa_asn1.c", + ], + "crypto/rsa/rsa_chk.o" => + [ + "crypto/rsa/rsa_chk.c", + ], + "crypto/rsa/rsa_crpt.o" => + [ + "crypto/rsa/rsa_crpt.c", + ], + "crypto/rsa/rsa_depr.o" => + [ + "crypto/rsa/rsa_depr.c", + ], + "crypto/rsa/rsa_err.o" => + [ + "crypto/rsa/rsa_err.c", + ], + "crypto/rsa/rsa_gen.o" => + [ + "crypto/rsa/rsa_gen.c", + ], + "crypto/rsa/rsa_lib.o" => + [ + "crypto/rsa/rsa_lib.c", + ], + "crypto/rsa/rsa_meth.o" => + [ + "crypto/rsa/rsa_meth.c", + ], + "crypto/rsa/rsa_mp.o" => + [ + "crypto/rsa/rsa_mp.c", + ], + "crypto/rsa/rsa_none.o" => + [ + "crypto/rsa/rsa_none.c", + ], + "crypto/rsa/rsa_oaep.o" => + [ + "crypto/rsa/rsa_oaep.c", + ], + "crypto/rsa/rsa_ossl.o" => + [ + "crypto/rsa/rsa_ossl.c", + ], + "crypto/rsa/rsa_pk1.o" => + [ + "crypto/rsa/rsa_pk1.c", + ], + "crypto/rsa/rsa_pmeth.o" => + [ + "crypto/rsa/rsa_pmeth.c", + ], + "crypto/rsa/rsa_prn.o" => + [ + "crypto/rsa/rsa_prn.c", + ], + "crypto/rsa/rsa_pss.o" => + [ + "crypto/rsa/rsa_pss.c", + ], + "crypto/rsa/rsa_saos.o" => + [ + "crypto/rsa/rsa_saos.c", + ], + "crypto/rsa/rsa_sign.o" => + [ + "crypto/rsa/rsa_sign.c", + ], + "crypto/rsa/rsa_ssl.o" => + [ + "crypto/rsa/rsa_ssl.c", + ], + "crypto/rsa/rsa_x931.o" => + [ + "crypto/rsa/rsa_x931.c", + ], + "crypto/rsa/rsa_x931g.o" => + [ + "crypto/rsa/rsa_x931g.c", + ], + "crypto/seed/seed.o" => + [ + "crypto/seed/seed.c", + ], + "crypto/seed/seed_cbc.o" => + [ + "crypto/seed/seed_cbc.c", + ], + "crypto/seed/seed_cfb.o" => + [ + "crypto/seed/seed_cfb.c", + ], + "crypto/seed/seed_ecb.o" => + [ + "crypto/seed/seed_ecb.c", + ], + "crypto/seed/seed_ofb.o" => + [ + "crypto/seed/seed_ofb.c", + ], + "crypto/sha/keccak1600.o" => + [ + "crypto/sha/keccak1600.c", + ], + "crypto/sha/sha1_one.o" => + [ + "crypto/sha/sha1_one.c", + ], + "crypto/sha/sha1dgst.o" => + [ + "crypto/sha/sha1dgst.c", + ], + "crypto/sha/sha256.o" => + [ + "crypto/sha/sha256.c", + ], + "crypto/sha/sha512.o" => + [ + "crypto/sha/sha512.c", + ], + "crypto/siphash/siphash.o" => + [ + "crypto/siphash/siphash.c", + ], + "crypto/siphash/siphash_ameth.o" => + [ + "crypto/siphash/siphash_ameth.c", + ], + "crypto/siphash/siphash_pmeth.o" => + [ + "crypto/siphash/siphash_pmeth.c", + ], + "crypto/sm2/sm2_crypt.o" => + [ + "crypto/sm2/sm2_crypt.c", + ], + "crypto/sm2/sm2_err.o" => + [ + "crypto/sm2/sm2_err.c", + ], + "crypto/sm2/sm2_pmeth.o" => + [ + "crypto/sm2/sm2_pmeth.c", + ], + "crypto/sm2/sm2_sign.o" => + [ + "crypto/sm2/sm2_sign.c", + ], + "crypto/sm3/m_sm3.o" => + [ + "crypto/sm3/m_sm3.c", + ], + "crypto/sm3/sm3.o" => + [ + "crypto/sm3/sm3.c", + ], + "crypto/sm4/sm4.o" => + [ + "crypto/sm4/sm4.c", + ], + "crypto/srp/srp_lib.o" => + [ + "crypto/srp/srp_lib.c", + ], + "crypto/srp/srp_vfy.o" => + [ + "crypto/srp/srp_vfy.c", + ], + "crypto/stack/stack.o" => + [ + "crypto/stack/stack.c", + ], + "crypto/store/loader_file.o" => + [ + "crypto/store/loader_file.c", + ], + "crypto/store/store_err.o" => + [ + "crypto/store/store_err.c", + ], + "crypto/store/store_init.o" => + [ + "crypto/store/store_init.c", + ], + "crypto/store/store_lib.o" => + [ + "crypto/store/store_lib.c", + ], + "crypto/store/store_register.o" => + [ + "crypto/store/store_register.c", + ], + "crypto/store/store_strings.o" => + [ + "crypto/store/store_strings.c", + ], + "crypto/threads_none.o" => + [ + "crypto/threads_none.c", + ], + "crypto/threads_pthread.o" => + [ + "crypto/threads_pthread.c", + ], + "crypto/threads_win.o" => + [ + "crypto/threads_win.c", + ], + "crypto/ts/ts_asn1.o" => + [ + "crypto/ts/ts_asn1.c", + ], + "crypto/ts/ts_conf.o" => + [ + "crypto/ts/ts_conf.c", + ], + "crypto/ts/ts_err.o" => + [ + "crypto/ts/ts_err.c", + ], + "crypto/ts/ts_lib.o" => + [ + "crypto/ts/ts_lib.c", + ], + "crypto/ts/ts_req_print.o" => + [ + "crypto/ts/ts_req_print.c", + ], + "crypto/ts/ts_req_utils.o" => + [ + "crypto/ts/ts_req_utils.c", + ], + "crypto/ts/ts_rsp_print.o" => + [ + "crypto/ts/ts_rsp_print.c", + ], + "crypto/ts/ts_rsp_sign.o" => + [ + "crypto/ts/ts_rsp_sign.c", + ], + "crypto/ts/ts_rsp_utils.o" => + [ + "crypto/ts/ts_rsp_utils.c", + ], + "crypto/ts/ts_rsp_verify.o" => + [ + "crypto/ts/ts_rsp_verify.c", + ], + "crypto/ts/ts_verify_ctx.o" => + [ + "crypto/ts/ts_verify_ctx.c", + ], + "crypto/txt_db/txt_db.o" => + [ + "crypto/txt_db/txt_db.c", + ], + "crypto/ui/ui_err.o" => + [ + "crypto/ui/ui_err.c", + ], + "crypto/ui/ui_lib.o" => + [ + "crypto/ui/ui_lib.c", + ], + "crypto/ui/ui_null.o" => + [ + "crypto/ui/ui_null.c", + ], + "crypto/ui/ui_openssl.o" => + [ + "crypto/ui/ui_openssl.c", + ], + "crypto/ui/ui_util.o" => + [ + "crypto/ui/ui_util.c", + ], + "crypto/uid.o" => + [ + "crypto/uid.c", + ], + "crypto/whrlpool/wp_block.o" => + [ + "crypto/whrlpool/wp_block.c", + ], + "crypto/whrlpool/wp_dgst.o" => + [ + "crypto/whrlpool/wp_dgst.c", + ], + "crypto/x509/by_dir.o" => + [ + "crypto/x509/by_dir.c", + ], + "crypto/x509/by_file.o" => + [ + "crypto/x509/by_file.c", + ], + "crypto/x509/t_crl.o" => + [ + "crypto/x509/t_crl.c", + ], + "crypto/x509/t_req.o" => + [ + "crypto/x509/t_req.c", + ], + "crypto/x509/t_x509.o" => + [ + "crypto/x509/t_x509.c", + ], + "crypto/x509/x509_att.o" => + [ + "crypto/x509/x509_att.c", + ], + "crypto/x509/x509_cmp.o" => + [ + "crypto/x509/x509_cmp.c", + ], + "crypto/x509/x509_d2.o" => + [ + "crypto/x509/x509_d2.c", + ], + "crypto/x509/x509_def.o" => + [ + "crypto/x509/x509_def.c", + ], + "crypto/x509/x509_err.o" => + [ + "crypto/x509/x509_err.c", + ], + "crypto/x509/x509_ext.o" => + [ + "crypto/x509/x509_ext.c", + ], + "crypto/x509/x509_lu.o" => + [ + "crypto/x509/x509_lu.c", + ], + "crypto/x509/x509_meth.o" => + [ + "crypto/x509/x509_meth.c", + ], + "crypto/x509/x509_obj.o" => + [ + "crypto/x509/x509_obj.c", + ], + "crypto/x509/x509_r2x.o" => + [ + "crypto/x509/x509_r2x.c", + ], + "crypto/x509/x509_req.o" => + [ + "crypto/x509/x509_req.c", + ], + "crypto/x509/x509_set.o" => + [ + "crypto/x509/x509_set.c", + ], + "crypto/x509/x509_trs.o" => + [ + "crypto/x509/x509_trs.c", + ], + "crypto/x509/x509_txt.o" => + [ + "crypto/x509/x509_txt.c", + ], + "crypto/x509/x509_v3.o" => + [ + "crypto/x509/x509_v3.c", + ], + "crypto/x509/x509_vfy.o" => + [ + "crypto/x509/x509_vfy.c", + ], + "crypto/x509/x509_vpm.o" => + [ + "crypto/x509/x509_vpm.c", + ], + "crypto/x509/x509cset.o" => + [ + "crypto/x509/x509cset.c", + ], + "crypto/x509/x509name.o" => + [ + "crypto/x509/x509name.c", + ], + "crypto/x509/x509rset.o" => + [ + "crypto/x509/x509rset.c", + ], + "crypto/x509/x509spki.o" => + [ + "crypto/x509/x509spki.c", + ], + "crypto/x509/x509type.o" => + [ + "crypto/x509/x509type.c", + ], + "crypto/x509/x_all.o" => + [ + "crypto/x509/x_all.c", + ], + "crypto/x509/x_attrib.o" => + [ + "crypto/x509/x_attrib.c", + ], + "crypto/x509/x_crl.o" => + [ + "crypto/x509/x_crl.c", + ], + "crypto/x509/x_exten.o" => + [ + "crypto/x509/x_exten.c", + ], + "crypto/x509/x_name.o" => + [ + "crypto/x509/x_name.c", + ], + "crypto/x509/x_pubkey.o" => + [ + "crypto/x509/x_pubkey.c", + ], + "crypto/x509/x_req.o" => + [ + "crypto/x509/x_req.c", + ], + "crypto/x509/x_x509.o" => + [ + "crypto/x509/x_x509.c", + ], + "crypto/x509/x_x509a.o" => + [ + "crypto/x509/x_x509a.c", + ], + "crypto/x509v3/pcy_cache.o" => + [ + "crypto/x509v3/pcy_cache.c", + ], + "crypto/x509v3/pcy_data.o" => + [ + "crypto/x509v3/pcy_data.c", + ], + "crypto/x509v3/pcy_lib.o" => + [ + "crypto/x509v3/pcy_lib.c", + ], + "crypto/x509v3/pcy_map.o" => + [ + "crypto/x509v3/pcy_map.c", + ], + "crypto/x509v3/pcy_node.o" => + [ + "crypto/x509v3/pcy_node.c", + ], + "crypto/x509v3/pcy_tree.o" => + [ + "crypto/x509v3/pcy_tree.c", + ], + "crypto/x509v3/v3_addr.o" => + [ + "crypto/x509v3/v3_addr.c", + ], + "crypto/x509v3/v3_admis.o" => + [ + "crypto/x509v3/v3_admis.c", + ], + "crypto/x509v3/v3_akey.o" => + [ + "crypto/x509v3/v3_akey.c", + ], + "crypto/x509v3/v3_akeya.o" => + [ + "crypto/x509v3/v3_akeya.c", + ], + "crypto/x509v3/v3_alt.o" => + [ + "crypto/x509v3/v3_alt.c", + ], + "crypto/x509v3/v3_asid.o" => + [ + "crypto/x509v3/v3_asid.c", + ], + "crypto/x509v3/v3_bcons.o" => + [ + "crypto/x509v3/v3_bcons.c", + ], + "crypto/x509v3/v3_bitst.o" => + [ + "crypto/x509v3/v3_bitst.c", + ], + "crypto/x509v3/v3_conf.o" => + [ + "crypto/x509v3/v3_conf.c", + ], + "crypto/x509v3/v3_cpols.o" => + [ + "crypto/x509v3/v3_cpols.c", + ], + "crypto/x509v3/v3_crld.o" => + [ + "crypto/x509v3/v3_crld.c", + ], + "crypto/x509v3/v3_enum.o" => + [ + "crypto/x509v3/v3_enum.c", + ], + "crypto/x509v3/v3_extku.o" => + [ + "crypto/x509v3/v3_extku.c", + ], + "crypto/x509v3/v3_genn.o" => + [ + "crypto/x509v3/v3_genn.c", + ], + "crypto/x509v3/v3_ia5.o" => + [ + "crypto/x509v3/v3_ia5.c", + ], + "crypto/x509v3/v3_info.o" => + [ + "crypto/x509v3/v3_info.c", + ], + "crypto/x509v3/v3_int.o" => + [ + "crypto/x509v3/v3_int.c", + ], + "crypto/x509v3/v3_lib.o" => + [ + "crypto/x509v3/v3_lib.c", + ], + "crypto/x509v3/v3_ncons.o" => + [ + "crypto/x509v3/v3_ncons.c", + ], + "crypto/x509v3/v3_pci.o" => + [ + "crypto/x509v3/v3_pci.c", + ], + "crypto/x509v3/v3_pcia.o" => + [ + "crypto/x509v3/v3_pcia.c", + ], + "crypto/x509v3/v3_pcons.o" => + [ + "crypto/x509v3/v3_pcons.c", + ], + "crypto/x509v3/v3_pku.o" => + [ + "crypto/x509v3/v3_pku.c", + ], + "crypto/x509v3/v3_pmaps.o" => + [ + "crypto/x509v3/v3_pmaps.c", + ], + "crypto/x509v3/v3_prn.o" => + [ + "crypto/x509v3/v3_prn.c", + ], + "crypto/x509v3/v3_purp.o" => + [ + "crypto/x509v3/v3_purp.c", + ], + "crypto/x509v3/v3_skey.o" => + [ + "crypto/x509v3/v3_skey.c", + ], + "crypto/x509v3/v3_sxnet.o" => + [ + "crypto/x509v3/v3_sxnet.c", + ], + "crypto/x509v3/v3_tlsf.o" => + [ + "crypto/x509v3/v3_tlsf.c", + ], + "crypto/x509v3/v3_utl.o" => + [ + "crypto/x509v3/v3_utl.c", + ], + "crypto/x509v3/v3err.o" => + [ + "crypto/x509v3/v3err.c", + ], + "engines/e_capi.o" => + [ + "engines/e_capi.c", + ], + "engines/e_padlock.o" => + [ + "engines/e_padlock.c", + ], + "fuzz/asn1-test" => + [ + "fuzz/asn1.o", + "fuzz/test-corpus.o", + ], + "fuzz/asn1.o" => + [ + "fuzz/asn1.c", + ], + "fuzz/asn1parse-test" => + [ + "fuzz/asn1parse.o", + "fuzz/test-corpus.o", + ], + "fuzz/asn1parse.o" => + [ + "fuzz/asn1parse.c", + ], + "fuzz/bignum-test" => + [ + "fuzz/bignum.o", + "fuzz/test-corpus.o", + ], + "fuzz/bignum.o" => + [ + "fuzz/bignum.c", + ], + "fuzz/bndiv-test" => + [ + "fuzz/bndiv.o", + "fuzz/test-corpus.o", + ], + "fuzz/bndiv.o" => + [ + "fuzz/bndiv.c", + ], + "fuzz/client-test" => + [ + "fuzz/client.o", + "fuzz/test-corpus.o", + ], + "fuzz/client.o" => + [ + "fuzz/client.c", + ], + "fuzz/cms-test" => + [ + "fuzz/cms.o", + "fuzz/test-corpus.o", + ], + "fuzz/cms.o" => + [ + "fuzz/cms.c", + ], + "fuzz/conf-test" => + [ + "fuzz/conf.o", + "fuzz/test-corpus.o", + ], + "fuzz/conf.o" => + [ + "fuzz/conf.c", + ], + "fuzz/crl-test" => + [ + "fuzz/crl.o", + "fuzz/test-corpus.o", + ], + "fuzz/crl.o" => + [ + "fuzz/crl.c", + ], + "fuzz/ct-test" => + [ + "fuzz/ct.o", + "fuzz/test-corpus.o", + ], + "fuzz/ct.o" => + [ + "fuzz/ct.c", + ], + "fuzz/server-test" => + [ + "fuzz/server.o", + "fuzz/test-corpus.o", + ], + "fuzz/server.o" => + [ + "fuzz/server.c", + ], + "fuzz/test-corpus.o" => + [ + "fuzz/test-corpus.c", + ], + "fuzz/x509-test" => + [ + "fuzz/test-corpus.o", + "fuzz/x509.o", + ], + "fuzz/x509.o" => + [ + "fuzz/x509.c", + ], + "libcrypto" => + [ + "crypto/aes/aes_cbc.o", + "crypto/aes/aes_cfb.o", + "crypto/aes/aes_core.o", + "crypto/aes/aes_ecb.o", + "crypto/aes/aes_ige.o", + "crypto/aes/aes_misc.o", + "crypto/aes/aes_ofb.o", + "crypto/aes/aes_wrap.o", + "crypto/aria/aria.o", + "crypto/asn1/a_bitstr.o", + "crypto/asn1/a_d2i_fp.o", + "crypto/asn1/a_digest.o", + "crypto/asn1/a_dup.o", + "crypto/asn1/a_gentm.o", + "crypto/asn1/a_i2d_fp.o", + "crypto/asn1/a_int.o", + "crypto/asn1/a_mbstr.o", + "crypto/asn1/a_object.o", + "crypto/asn1/a_octet.o", + "crypto/asn1/a_print.o", + "crypto/asn1/a_sign.o", + "crypto/asn1/a_strex.o", + "crypto/asn1/a_strnid.o", + "crypto/asn1/a_time.o", + "crypto/asn1/a_type.o", + "crypto/asn1/a_utctm.o", + "crypto/asn1/a_utf8.o", + "crypto/asn1/a_verify.o", + "crypto/asn1/ameth_lib.o", + "crypto/asn1/asn1_err.o", + "crypto/asn1/asn1_gen.o", + "crypto/asn1/asn1_item_list.o", + "crypto/asn1/asn1_lib.o", + "crypto/asn1/asn1_par.o", + "crypto/asn1/asn_mime.o", + "crypto/asn1/asn_moid.o", + "crypto/asn1/asn_mstbl.o", + "crypto/asn1/asn_pack.o", + "crypto/asn1/bio_asn1.o", + "crypto/asn1/bio_ndef.o", + "crypto/asn1/d2i_pr.o", + "crypto/asn1/d2i_pu.o", + "crypto/asn1/evp_asn1.o", + "crypto/asn1/f_int.o", + "crypto/asn1/f_string.o", + "crypto/asn1/i2d_pr.o", + "crypto/asn1/i2d_pu.o", + "crypto/asn1/n_pkey.o", + "crypto/asn1/nsseq.o", + "crypto/asn1/p5_pbe.o", + "crypto/asn1/p5_pbev2.o", + "crypto/asn1/p5_scrypt.o", + "crypto/asn1/p8_pkey.o", + "crypto/asn1/t_bitst.o", + "crypto/asn1/t_pkey.o", + "crypto/asn1/t_spki.o", + "crypto/asn1/tasn_dec.o", + "crypto/asn1/tasn_enc.o", + "crypto/asn1/tasn_fre.o", + "crypto/asn1/tasn_new.o", + "crypto/asn1/tasn_prn.o", + "crypto/asn1/tasn_scn.o", + "crypto/asn1/tasn_typ.o", + "crypto/asn1/tasn_utl.o", + "crypto/asn1/x_algor.o", + "crypto/asn1/x_bignum.o", + "crypto/asn1/x_info.o", + "crypto/asn1/x_int64.o", + "crypto/asn1/x_long.o", + "crypto/asn1/x_pkey.o", + "crypto/asn1/x_sig.o", + "crypto/asn1/x_spki.o", + "crypto/asn1/x_val.o", + "crypto/async/arch/async_null.o", + "crypto/async/arch/async_posix.o", + "crypto/async/arch/async_win.o", + "crypto/async/async.o", + "crypto/async/async_err.o", + "crypto/async/async_wait.o", + "crypto/bf/bf_cfb64.o", + "crypto/bf/bf_ecb.o", + "crypto/bf/bf_enc.o", + "crypto/bf/bf_ofb64.o", + "crypto/bf/bf_skey.o", + "crypto/bio/b_addr.o", + "crypto/bio/b_dump.o", + "crypto/bio/b_print.o", + "crypto/bio/b_sock.o", + "crypto/bio/b_sock2.o", + "crypto/bio/bf_buff.o", + "crypto/bio/bf_lbuf.o", + "crypto/bio/bf_nbio.o", + "crypto/bio/bf_null.o", + "crypto/bio/bio_cb.o", + "crypto/bio/bio_err.o", + "crypto/bio/bio_lib.o", + "crypto/bio/bio_meth.o", + "crypto/bio/bss_acpt.o", + "crypto/bio/bss_bio.o", + "crypto/bio/bss_conn.o", + "crypto/bio/bss_dgram.o", + "crypto/bio/bss_fd.o", + "crypto/bio/bss_file.o", + "crypto/bio/bss_log.o", + "crypto/bio/bss_mem.o", + "crypto/bio/bss_null.o", + "crypto/bio/bss_sock.o", + "crypto/blake2/blake2b.o", + "crypto/blake2/blake2s.o", + "crypto/blake2/m_blake2b.o", + "crypto/blake2/m_blake2s.o", + "crypto/bn/bn_add.o", + "crypto/bn/bn_asm.o", + "crypto/bn/bn_blind.o", + "crypto/bn/bn_const.o", + "crypto/bn/bn_ctx.o", + "crypto/bn/bn_depr.o", + "crypto/bn/bn_dh.o", + "crypto/bn/bn_div.o", + "crypto/bn/bn_err.o", + "crypto/bn/bn_exp.o", + "crypto/bn/bn_exp2.o", + "crypto/bn/bn_gcd.o", + "crypto/bn/bn_gf2m.o", + "crypto/bn/bn_intern.o", + "crypto/bn/bn_kron.o", + "crypto/bn/bn_lib.o", + "crypto/bn/bn_mod.o", + "crypto/bn/bn_mont.o", + "crypto/bn/bn_mpi.o", + "crypto/bn/bn_mul.o", + "crypto/bn/bn_nist.o", + "crypto/bn/bn_prime.o", + "crypto/bn/bn_print.o", + "crypto/bn/bn_rand.o", + "crypto/bn/bn_recp.o", + "crypto/bn/bn_shift.o", + "crypto/bn/bn_sqr.o", + "crypto/bn/bn_sqrt.o", + "crypto/bn/bn_srp.o", + "crypto/bn/bn_word.o", + "crypto/bn/bn_x931p.o", + "crypto/buffer/buf_err.o", + "crypto/buffer/buffer.o", + "crypto/camellia/camellia.o", + "crypto/camellia/cmll_cbc.o", + "crypto/camellia/cmll_cfb.o", + "crypto/camellia/cmll_ctr.o", + "crypto/camellia/cmll_ecb.o", + "crypto/camellia/cmll_misc.o", + "crypto/camellia/cmll_ofb.o", + "crypto/cast/c_cfb64.o", + "crypto/cast/c_ecb.o", + "crypto/cast/c_enc.o", + "crypto/cast/c_ofb64.o", + "crypto/cast/c_skey.o", + "crypto/chacha/chacha_enc.o", + "crypto/cmac/cm_ameth.o", + "crypto/cmac/cm_pmeth.o", + "crypto/cmac/cmac.o", + "crypto/cms/cms_asn1.o", + "crypto/cms/cms_att.o", + "crypto/cms/cms_cd.o", + "crypto/cms/cms_dd.o", + "crypto/cms/cms_enc.o", + "crypto/cms/cms_env.o", + "crypto/cms/cms_err.o", + "crypto/cms/cms_ess.o", + "crypto/cms/cms_io.o", + "crypto/cms/cms_kari.o", + "crypto/cms/cms_lib.o", + "crypto/cms/cms_pwri.o", + "crypto/cms/cms_sd.o", + "crypto/cms/cms_smime.o", + "crypto/conf/conf_api.o", + "crypto/conf/conf_def.o", + "crypto/conf/conf_err.o", + "crypto/conf/conf_lib.o", + "crypto/conf/conf_mall.o", + "crypto/conf/conf_mod.o", + "crypto/conf/conf_sap.o", + "crypto/conf/conf_ssl.o", + "crypto/cpt_err.o", + "crypto/cryptlib.o", + "crypto/ct/ct_b64.o", + "crypto/ct/ct_err.o", + "crypto/ct/ct_log.o", + "crypto/ct/ct_oct.o", + "crypto/ct/ct_policy.o", + "crypto/ct/ct_prn.o", + "crypto/ct/ct_sct.o", + "crypto/ct/ct_sct_ctx.o", + "crypto/ct/ct_vfy.o", + "crypto/ct/ct_x509v3.o", + "crypto/ctype.o", + "crypto/cversion.o", + "crypto/des/cbc_cksm.o", + "crypto/des/cbc_enc.o", + "crypto/des/cfb64ede.o", + "crypto/des/cfb64enc.o", + "crypto/des/cfb_enc.o", + "crypto/des/des_enc.o", + "crypto/des/ecb3_enc.o", + "crypto/des/ecb_enc.o", + "crypto/des/fcrypt.o", + "crypto/des/fcrypt_b.o", + "crypto/des/ofb64ede.o", + "crypto/des/ofb64enc.o", + "crypto/des/ofb_enc.o", + "crypto/des/pcbc_enc.o", + "crypto/des/qud_cksm.o", + "crypto/des/rand_key.o", + "crypto/des/set_key.o", + "crypto/des/str2key.o", + "crypto/des/xcbc_enc.o", + "crypto/dh/dh_ameth.o", + "crypto/dh/dh_asn1.o", + "crypto/dh/dh_check.o", + "crypto/dh/dh_depr.o", + "crypto/dh/dh_err.o", + "crypto/dh/dh_gen.o", + "crypto/dh/dh_kdf.o", + "crypto/dh/dh_key.o", + "crypto/dh/dh_lib.o", + "crypto/dh/dh_meth.o", + "crypto/dh/dh_pmeth.o", + "crypto/dh/dh_prn.o", + "crypto/dh/dh_rfc5114.o", + "crypto/dh/dh_rfc7919.o", + "crypto/dsa/dsa_ameth.o", + "crypto/dsa/dsa_asn1.o", + "crypto/dsa/dsa_depr.o", + "crypto/dsa/dsa_err.o", + "crypto/dsa/dsa_gen.o", + "crypto/dsa/dsa_key.o", + "crypto/dsa/dsa_lib.o", + "crypto/dsa/dsa_meth.o", + "crypto/dsa/dsa_ossl.o", + "crypto/dsa/dsa_pmeth.o", + "crypto/dsa/dsa_prn.o", + "crypto/dsa/dsa_sign.o", + "crypto/dsa/dsa_vrf.o", + "crypto/dso/dso_dl.o", + "crypto/dso/dso_dlfcn.o", + "crypto/dso/dso_err.o", + "crypto/dso/dso_lib.o", + "crypto/dso/dso_openssl.o", + "crypto/dso/dso_vms.o", + "crypto/dso/dso_win32.o", + "crypto/ebcdic.o", + "crypto/ec/curve25519.o", + "crypto/ec/curve448/arch_32/f_impl.o", + "crypto/ec/curve448/curve448.o", + "crypto/ec/curve448/curve448_tables.o", + "crypto/ec/curve448/eddsa.o", + "crypto/ec/curve448/f_generic.o", + "crypto/ec/curve448/scalar.o", + "crypto/ec/ec2_oct.o", + "crypto/ec/ec2_smpl.o", + "crypto/ec/ec_ameth.o", + "crypto/ec/ec_asn1.o", + "crypto/ec/ec_check.o", + "crypto/ec/ec_curve.o", + "crypto/ec/ec_cvt.o", + "crypto/ec/ec_err.o", + "crypto/ec/ec_key.o", + "crypto/ec/ec_kmeth.o", + "crypto/ec/ec_lib.o", + "crypto/ec/ec_mult.o", + "crypto/ec/ec_oct.o", + "crypto/ec/ec_pmeth.o", + "crypto/ec/ec_print.o", + "crypto/ec/ecdh_kdf.o", + "crypto/ec/ecdh_ossl.o", + "crypto/ec/ecdsa_ossl.o", + "crypto/ec/ecdsa_sign.o", + "crypto/ec/ecdsa_vrf.o", + "crypto/ec/eck_prn.o", + "crypto/ec/ecp_mont.o", + "crypto/ec/ecp_nist.o", + "crypto/ec/ecp_nistp224.o", + "crypto/ec/ecp_nistp256.o", + "crypto/ec/ecp_nistp521.o", + "crypto/ec/ecp_nistputil.o", + "crypto/ec/ecp_oct.o", + "crypto/ec/ecp_smpl.o", + "crypto/ec/ecx_meth.o", + "crypto/engine/eng_all.o", + "crypto/engine/eng_cnf.o", + "crypto/engine/eng_ctrl.o", + "crypto/engine/eng_dyn.o", + "crypto/engine/eng_err.o", + "crypto/engine/eng_fat.o", + "crypto/engine/eng_init.o", + "crypto/engine/eng_lib.o", + "crypto/engine/eng_list.o", + "crypto/engine/eng_openssl.o", + "crypto/engine/eng_pkey.o", + "crypto/engine/eng_rdrand.o", + "crypto/engine/eng_table.o", + "crypto/engine/tb_asnmth.o", + "crypto/engine/tb_cipher.o", + "crypto/engine/tb_dh.o", + "crypto/engine/tb_digest.o", + "crypto/engine/tb_dsa.o", + "crypto/engine/tb_eckey.o", + "crypto/engine/tb_pkmeth.o", + "crypto/engine/tb_rand.o", + "crypto/engine/tb_rsa.o", + "crypto/err/err.o", + "crypto/err/err_all.o", + "crypto/err/err_prn.o", + "crypto/evp/bio_b64.o", + "crypto/evp/bio_enc.o", + "crypto/evp/bio_md.o", + "crypto/evp/bio_ok.o", + "crypto/evp/c_allc.o", + "crypto/evp/c_alld.o", + "crypto/evp/cmeth_lib.o", + "crypto/evp/digest.o", + "crypto/evp/e_aes.o", + "crypto/evp/e_aes_cbc_hmac_sha1.o", + "crypto/evp/e_aes_cbc_hmac_sha256.o", + "crypto/evp/e_aria.o", + "crypto/evp/e_bf.o", + "crypto/evp/e_camellia.o", + "crypto/evp/e_cast.o", + "crypto/evp/e_chacha20_poly1305.o", + "crypto/evp/e_des.o", + "crypto/evp/e_des3.o", + "crypto/evp/e_idea.o", + "crypto/evp/e_null.o", + "crypto/evp/e_old.o", + "crypto/evp/e_rc2.o", + "crypto/evp/e_rc4.o", + "crypto/evp/e_rc4_hmac_md5.o", + "crypto/evp/e_rc5.o", + "crypto/evp/e_seed.o", + "crypto/evp/e_sm4.o", + "crypto/evp/e_xcbc_d.o", + "crypto/evp/encode.o", + "crypto/evp/evp_cnf.o", + "crypto/evp/evp_enc.o", + "crypto/evp/evp_err.o", + "crypto/evp/evp_key.o", + "crypto/evp/evp_lib.o", + "crypto/evp/evp_pbe.o", + "crypto/evp/evp_pkey.o", + "crypto/evp/m_md2.o", + "crypto/evp/m_md4.o", + "crypto/evp/m_md5.o", + "crypto/evp/m_md5_sha1.o", + "crypto/evp/m_mdc2.o", + "crypto/evp/m_null.o", + "crypto/evp/m_ripemd.o", + "crypto/evp/m_sha1.o", + "crypto/evp/m_sha3.o", + "crypto/evp/m_sigver.o", + "crypto/evp/m_wp.o", + "crypto/evp/names.o", + "crypto/evp/p5_crpt.o", + "crypto/evp/p5_crpt2.o", + "crypto/evp/p_dec.o", + "crypto/evp/p_enc.o", + "crypto/evp/p_lib.o", + "crypto/evp/p_open.o", + "crypto/evp/p_seal.o", + "crypto/evp/p_sign.o", + "crypto/evp/p_verify.o", + "crypto/evp/pbe_scrypt.o", + "crypto/evp/pmeth_fn.o", + "crypto/evp/pmeth_gn.o", + "crypto/evp/pmeth_lib.o", + "crypto/ex_data.o", + "crypto/getenv.o", + "crypto/hmac/hm_ameth.o", + "crypto/hmac/hm_pmeth.o", + "crypto/hmac/hmac.o", + "crypto/idea/i_cbc.o", + "crypto/idea/i_cfb64.o", + "crypto/idea/i_ecb.o", + "crypto/idea/i_ofb64.o", + "crypto/idea/i_skey.o", + "crypto/init.o", + "crypto/kdf/hkdf.o", + "crypto/kdf/kdf_err.o", + "crypto/kdf/scrypt.o", + "crypto/kdf/tls1_prf.o", + "crypto/lhash/lh_stats.o", + "crypto/lhash/lhash.o", + "crypto/md4/md4_dgst.o", + "crypto/md4/md4_one.o", + "crypto/md5/md5_dgst.o", + "crypto/md5/md5_one.o", + "crypto/mdc2/mdc2_one.o", + "crypto/mdc2/mdc2dgst.o", + "crypto/mem.o", + "crypto/mem_clr.o", + "crypto/mem_dbg.o", + "crypto/mem_sec.o", + "crypto/modes/cbc128.o", + "crypto/modes/ccm128.o", + "crypto/modes/cfb128.o", + "crypto/modes/ctr128.o", + "crypto/modes/cts128.o", + "crypto/modes/gcm128.o", + "crypto/modes/ocb128.o", + "crypto/modes/ofb128.o", + "crypto/modes/wrap128.o", + "crypto/modes/xts128.o", + "crypto/o_dir.o", + "crypto/o_fips.o", + "crypto/o_fopen.o", + "crypto/o_init.o", + "crypto/o_str.o", + "crypto/o_time.o", + "crypto/objects/o_names.o", + "crypto/objects/obj_dat.o", + "crypto/objects/obj_err.o", + "crypto/objects/obj_lib.o", + "crypto/objects/obj_xref.o", + "crypto/ocsp/ocsp_asn.o", + "crypto/ocsp/ocsp_cl.o", + "crypto/ocsp/ocsp_err.o", + "crypto/ocsp/ocsp_ext.o", + "crypto/ocsp/ocsp_ht.o", + "crypto/ocsp/ocsp_lib.o", + "crypto/ocsp/ocsp_prn.o", + "crypto/ocsp/ocsp_srv.o", + "crypto/ocsp/ocsp_vfy.o", + "crypto/ocsp/v3_ocsp.o", + "crypto/pem/pem_all.o", + "crypto/pem/pem_err.o", + "crypto/pem/pem_info.o", + "crypto/pem/pem_lib.o", + "crypto/pem/pem_oth.o", + "crypto/pem/pem_pk8.o", + "crypto/pem/pem_pkey.o", + "crypto/pem/pem_sign.o", + "crypto/pem/pem_x509.o", + "crypto/pem/pem_xaux.o", + "crypto/pem/pvkfmt.o", + "crypto/pkcs12/p12_add.o", + "crypto/pkcs12/p12_asn.o", + "crypto/pkcs12/p12_attr.o", + "crypto/pkcs12/p12_crpt.o", + "crypto/pkcs12/p12_crt.o", + "crypto/pkcs12/p12_decr.o", + "crypto/pkcs12/p12_init.o", + "crypto/pkcs12/p12_key.o", + "crypto/pkcs12/p12_kiss.o", + "crypto/pkcs12/p12_mutl.o", + "crypto/pkcs12/p12_npas.o", + "crypto/pkcs12/p12_p8d.o", + "crypto/pkcs12/p12_p8e.o", + "crypto/pkcs12/p12_sbag.o", + "crypto/pkcs12/p12_utl.o", + "crypto/pkcs12/pk12err.o", + "crypto/pkcs7/bio_pk7.o", + "crypto/pkcs7/pk7_asn1.o", + "crypto/pkcs7/pk7_attr.o", + "crypto/pkcs7/pk7_doit.o", + "crypto/pkcs7/pk7_lib.o", + "crypto/pkcs7/pk7_mime.o", + "crypto/pkcs7/pk7_smime.o", + "crypto/pkcs7/pkcs7err.o", + "crypto/poly1305/poly1305.o", + "crypto/poly1305/poly1305_ameth.o", + "crypto/poly1305/poly1305_pmeth.o", + "crypto/rand/drbg_ctr.o", + "crypto/rand/drbg_lib.o", + "crypto/rand/rand_egd.o", + "crypto/rand/rand_err.o", + "crypto/rand/rand_lib.o", + "crypto/rand/rand_unix.o", + "crypto/rand/rand_vms.o", + "crypto/rand/rand_win.o", + "crypto/rand/randfile.o", + "crypto/rc2/rc2_cbc.o", + "crypto/rc2/rc2_ecb.o", + "crypto/rc2/rc2_skey.o", + "crypto/rc2/rc2cfb64.o", + "crypto/rc2/rc2ofb64.o", + "crypto/rc4/rc4_enc.o", + "crypto/rc4/rc4_skey.o", + "crypto/ripemd/rmd_dgst.o", + "crypto/ripemd/rmd_one.o", + "crypto/rsa/rsa_ameth.o", + "crypto/rsa/rsa_asn1.o", + "crypto/rsa/rsa_chk.o", + "crypto/rsa/rsa_crpt.o", + "crypto/rsa/rsa_depr.o", + "crypto/rsa/rsa_err.o", + "crypto/rsa/rsa_gen.o", + "crypto/rsa/rsa_lib.o", + "crypto/rsa/rsa_meth.o", + "crypto/rsa/rsa_mp.o", + "crypto/rsa/rsa_none.o", + "crypto/rsa/rsa_oaep.o", + "crypto/rsa/rsa_ossl.o", + "crypto/rsa/rsa_pk1.o", + "crypto/rsa/rsa_pmeth.o", + "crypto/rsa/rsa_prn.o", + "crypto/rsa/rsa_pss.o", + "crypto/rsa/rsa_saos.o", + "crypto/rsa/rsa_sign.o", + "crypto/rsa/rsa_ssl.o", + "crypto/rsa/rsa_x931.o", + "crypto/rsa/rsa_x931g.o", + "crypto/seed/seed.o", + "crypto/seed/seed_cbc.o", + "crypto/seed/seed_cfb.o", + "crypto/seed/seed_ecb.o", + "crypto/seed/seed_ofb.o", + "crypto/sha/keccak1600.o", + "crypto/sha/sha1_one.o", + "crypto/sha/sha1dgst.o", + "crypto/sha/sha256.o", + "crypto/sha/sha512.o", + "crypto/siphash/siphash.o", + "crypto/siphash/siphash_ameth.o", + "crypto/siphash/siphash_pmeth.o", + "crypto/sm2/sm2_crypt.o", + "crypto/sm2/sm2_err.o", + "crypto/sm2/sm2_pmeth.o", + "crypto/sm2/sm2_sign.o", + "crypto/sm3/m_sm3.o", + "crypto/sm3/sm3.o", + "crypto/sm4/sm4.o", + "crypto/srp/srp_lib.o", + "crypto/srp/srp_vfy.o", + "crypto/stack/stack.o", + "crypto/store/loader_file.o", + "crypto/store/store_err.o", + "crypto/store/store_init.o", + "crypto/store/store_lib.o", + "crypto/store/store_register.o", + "crypto/store/store_strings.o", + "crypto/threads_none.o", + "crypto/threads_pthread.o", + "crypto/threads_win.o", + "crypto/ts/ts_asn1.o", + "crypto/ts/ts_conf.o", + "crypto/ts/ts_err.o", + "crypto/ts/ts_lib.o", + "crypto/ts/ts_req_print.o", + "crypto/ts/ts_req_utils.o", + "crypto/ts/ts_rsp_print.o", + "crypto/ts/ts_rsp_sign.o", + "crypto/ts/ts_rsp_utils.o", + "crypto/ts/ts_rsp_verify.o", + "crypto/ts/ts_verify_ctx.o", + "crypto/txt_db/txt_db.o", + "crypto/ui/ui_err.o", + "crypto/ui/ui_lib.o", + "crypto/ui/ui_null.o", + "crypto/ui/ui_openssl.o", + "crypto/ui/ui_util.o", + "crypto/uid.o", + "crypto/whrlpool/wp_block.o", + "crypto/whrlpool/wp_dgst.o", + "crypto/x509/by_dir.o", + "crypto/x509/by_file.o", + "crypto/x509/t_crl.o", + "crypto/x509/t_req.o", + "crypto/x509/t_x509.o", + "crypto/x509/x509_att.o", + "crypto/x509/x509_cmp.o", + "crypto/x509/x509_d2.o", + "crypto/x509/x509_def.o", + "crypto/x509/x509_err.o", + "crypto/x509/x509_ext.o", + "crypto/x509/x509_lu.o", + "crypto/x509/x509_meth.o", + "crypto/x509/x509_obj.o", + "crypto/x509/x509_r2x.o", + "crypto/x509/x509_req.o", + "crypto/x509/x509_set.o", + "crypto/x509/x509_trs.o", + "crypto/x509/x509_txt.o", + "crypto/x509/x509_v3.o", + "crypto/x509/x509_vfy.o", + "crypto/x509/x509_vpm.o", + "crypto/x509/x509cset.o", + "crypto/x509/x509name.o", + "crypto/x509/x509rset.o", + "crypto/x509/x509spki.o", + "crypto/x509/x509type.o", + "crypto/x509/x_all.o", + "crypto/x509/x_attrib.o", + "crypto/x509/x_crl.o", + "crypto/x509/x_exten.o", + "crypto/x509/x_name.o", + "crypto/x509/x_pubkey.o", + "crypto/x509/x_req.o", + "crypto/x509/x_x509.o", + "crypto/x509/x_x509a.o", + "crypto/x509v3/pcy_cache.o", + "crypto/x509v3/pcy_data.o", + "crypto/x509v3/pcy_lib.o", + "crypto/x509v3/pcy_map.o", + "crypto/x509v3/pcy_node.o", + "crypto/x509v3/pcy_tree.o", + "crypto/x509v3/v3_addr.o", + "crypto/x509v3/v3_admis.o", + "crypto/x509v3/v3_akey.o", + "crypto/x509v3/v3_akeya.o", + "crypto/x509v3/v3_alt.o", + "crypto/x509v3/v3_asid.o", + "crypto/x509v3/v3_bcons.o", + "crypto/x509v3/v3_bitst.o", + "crypto/x509v3/v3_conf.o", + "crypto/x509v3/v3_cpols.o", + "crypto/x509v3/v3_crld.o", + "crypto/x509v3/v3_enum.o", + "crypto/x509v3/v3_extku.o", + "crypto/x509v3/v3_genn.o", + "crypto/x509v3/v3_ia5.o", + "crypto/x509v3/v3_info.o", + "crypto/x509v3/v3_int.o", + "crypto/x509v3/v3_lib.o", + "crypto/x509v3/v3_ncons.o", + "crypto/x509v3/v3_pci.o", + "crypto/x509v3/v3_pcia.o", + "crypto/x509v3/v3_pcons.o", + "crypto/x509v3/v3_pku.o", + "crypto/x509v3/v3_pmaps.o", + "crypto/x509v3/v3_prn.o", + "crypto/x509v3/v3_purp.o", + "crypto/x509v3/v3_skey.o", + "crypto/x509v3/v3_sxnet.o", + "crypto/x509v3/v3_tlsf.o", + "crypto/x509v3/v3_utl.o", + "crypto/x509v3/v3err.o", + "engines/e_capi.o", + "engines/e_padlock.o", + ], + "libssl" => + [ + "ssl/bio_ssl.o", + "ssl/d1_lib.o", + "ssl/d1_msg.o", + "ssl/d1_srtp.o", + "ssl/methods.o", + "ssl/packet.o", + "ssl/pqueue.o", + "ssl/record/dtls1_bitmap.o", + "ssl/record/rec_layer_d1.o", + "ssl/record/rec_layer_s3.o", + "ssl/record/ssl3_buffer.o", + "ssl/record/ssl3_record.o", + "ssl/record/ssl3_record_tls13.o", + "ssl/s3_cbc.o", + "ssl/s3_enc.o", + "ssl/s3_lib.o", + "ssl/s3_msg.o", + "ssl/ssl_asn1.o", + "ssl/ssl_cert.o", + "ssl/ssl_ciph.o", + "ssl/ssl_conf.o", + "ssl/ssl_err.o", + "ssl/ssl_init.o", + "ssl/ssl_lib.o", + "ssl/ssl_mcnf.o", + "ssl/ssl_quic.o", + "ssl/ssl_rsa.o", + "ssl/ssl_sess.o", + "ssl/ssl_stat.o", + "ssl/ssl_txt.o", + "ssl/ssl_utst.o", + "ssl/statem/extensions.o", + "ssl/statem/extensions_clnt.o", + "ssl/statem/extensions_cust.o", + "ssl/statem/extensions_srvr.o", + "ssl/statem/statem.o", + "ssl/statem/statem_clnt.o", + "ssl/statem/statem_dtls.o", + "ssl/statem/statem_lib.o", + "ssl/statem/statem_quic.o", + "ssl/statem/statem_srvr.o", + "ssl/t1_enc.o", + "ssl/t1_lib.o", + "ssl/t1_trce.o", + "ssl/tls13_enc.o", + "ssl/tls_srp.o", + ], + "ssl/bio_ssl.o" => + [ + "ssl/bio_ssl.c", + ], + "ssl/d1_lib.o" => + [ + "ssl/d1_lib.c", + ], + "ssl/d1_msg.o" => + [ + "ssl/d1_msg.c", + ], + "ssl/d1_srtp.o" => + [ + "ssl/d1_srtp.c", + ], + "ssl/methods.o" => + [ + "ssl/methods.c", + ], + "ssl/packet.o" => + [ + "ssl/packet.c", + ], + "ssl/pqueue.o" => + [ + "ssl/pqueue.c", + ], + "ssl/record/dtls1_bitmap.o" => + [ + "ssl/record/dtls1_bitmap.c", + ], + "ssl/record/rec_layer_d1.o" => + [ + "ssl/record/rec_layer_d1.c", + ], + "ssl/record/rec_layer_s3.o" => + [ + "ssl/record/rec_layer_s3.c", + ], + "ssl/record/ssl3_buffer.o" => + [ + "ssl/record/ssl3_buffer.c", + ], + "ssl/record/ssl3_record.o" => + [ + "ssl/record/ssl3_record.c", + ], + "ssl/record/ssl3_record_tls13.o" => + [ + "ssl/record/ssl3_record_tls13.c", + ], + "ssl/s3_cbc.o" => + [ + "ssl/s3_cbc.c", + ], + "ssl/s3_enc.o" => + [ + "ssl/s3_enc.c", + ], + "ssl/s3_lib.o" => + [ + "ssl/s3_lib.c", + ], + "ssl/s3_msg.o" => + [ + "ssl/s3_msg.c", + ], + "ssl/ssl_asn1.o" => + [ + "ssl/ssl_asn1.c", + ], + "ssl/ssl_cert.o" => + [ + "ssl/ssl_cert.c", + ], + "ssl/ssl_ciph.o" => + [ + "ssl/ssl_ciph.c", + ], + "ssl/ssl_conf.o" => + [ + "ssl/ssl_conf.c", + ], + "ssl/ssl_err.o" => + [ + "ssl/ssl_err.c", + ], + "ssl/ssl_init.o" => + [ + "ssl/ssl_init.c", + ], + "ssl/ssl_lib.o" => + [ + "ssl/ssl_lib.c", + ], + "ssl/ssl_mcnf.o" => + [ + "ssl/ssl_mcnf.c", + ], + "ssl/ssl_quic.o" => + [ + "ssl/ssl_quic.c", + ], + "ssl/ssl_rsa.o" => + [ + "ssl/ssl_rsa.c", + ], + "ssl/ssl_sess.o" => + [ + "ssl/ssl_sess.c", + ], + "ssl/ssl_stat.o" => + [ + "ssl/ssl_stat.c", + ], + "ssl/ssl_txt.o" => + [ + "ssl/ssl_txt.c", + ], + "ssl/ssl_utst.o" => + [ + "ssl/ssl_utst.c", + ], + "ssl/statem/extensions.o" => + [ + "ssl/statem/extensions.c", + ], + "ssl/statem/extensions_clnt.o" => + [ + "ssl/statem/extensions_clnt.c", + ], + "ssl/statem/extensions_cust.o" => + [ + "ssl/statem/extensions_cust.c", + ], + "ssl/statem/extensions_srvr.o" => + [ + "ssl/statem/extensions_srvr.c", + ], + "ssl/statem/statem.o" => + [ + "ssl/statem/statem.c", + ], + "ssl/statem/statem_clnt.o" => + [ + "ssl/statem/statem_clnt.c", + ], + "ssl/statem/statem_dtls.o" => + [ + "ssl/statem/statem_dtls.c", + ], + "ssl/statem/statem_lib.o" => + [ + "ssl/statem/statem_lib.c", + ], + "ssl/statem/statem_quic.o" => + [ + "ssl/statem/statem_quic.c", + ], + "ssl/statem/statem_srvr.o" => + [ + "ssl/statem/statem_srvr.c", + ], + "ssl/t1_enc.o" => + [ + "ssl/t1_enc.c", + ], + "ssl/t1_lib.o" => + [ + "ssl/t1_lib.c", + ], + "ssl/t1_trce.o" => + [ + "ssl/t1_trce.c", + ], + "ssl/tls13_enc.o" => + [ + "ssl/tls13_enc.c", + ], + "ssl/tls_srp.o" => + [ + "ssl/tls_srp.c", + ], + "test/aborttest" => + [ + "test/aborttest.o", + ], + "test/aborttest.o" => + [ + "test/aborttest.c", + ], + "test/afalgtest" => + [ + "test/afalgtest.o", + ], + "test/afalgtest.o" => + [ + "test/afalgtest.c", + ], + "test/asn1_decode_test" => + [ + "test/asn1_decode_test.o", + ], + "test/asn1_decode_test.o" => + [ + "test/asn1_decode_test.c", + ], + "test/asn1_encode_test" => + [ + "test/asn1_encode_test.o", + ], + "test/asn1_encode_test.o" => + [ + "test/asn1_encode_test.c", + ], + "test/asn1_internal_test" => + [ + "test/asn1_internal_test.o", + ], + "test/asn1_internal_test.o" => + [ + "test/asn1_internal_test.c", + ], + "test/asn1_string_table_test" => + [ + "test/asn1_string_table_test.o", + ], + "test/asn1_string_table_test.o" => + [ + "test/asn1_string_table_test.c", + ], + "test/asn1_time_test" => + [ + "test/asn1_time_test.o", + ], + "test/asn1_time_test.o" => + [ + "test/asn1_time_test.c", + ], + "test/asynciotest" => + [ + "test/asynciotest.o", + "test/ssltestlib.o", + ], + "test/asynciotest.o" => + [ + "test/asynciotest.c", + ], + "test/asynctest" => + [ + "test/asynctest.o", + ], + "test/asynctest.o" => + [ + "test/asynctest.c", + ], + "test/bad_dtls_test" => + [ + "test/bad_dtls_test.o", + ], + "test/bad_dtls_test.o" => + [ + "test/bad_dtls_test.c", + ], + "test/bftest" => + [ + "test/bftest.o", + ], + "test/bftest.o" => + [ + "test/bftest.c", + ], + "test/bio_callback_test" => + [ + "test/bio_callback_test.o", + ], + "test/bio_callback_test.o" => + [ + "test/bio_callback_test.c", + ], + "test/bio_enc_test" => + [ + "test/bio_enc_test.o", + ], + "test/bio_enc_test.o" => + [ + "test/bio_enc_test.c", + ], + "test/bio_memleak_test" => + [ + "test/bio_memleak_test.o", + ], + "test/bio_memleak_test.o" => + [ + "test/bio_memleak_test.c", + ], + "test/bioprinttest" => + [ + "test/bioprinttest.o", + ], + "test/bioprinttest.o" => + [ + "test/bioprinttest.c", + ], + "test/bntest" => + [ + "test/bntest.o", + ], + "test/bntest.o" => + [ + "test/bntest.c", + ], + "test/buildtest_aes.o" => + [ + "test/buildtest_aes.c", + ], + "test/buildtest_asn1.o" => + [ + "test/buildtest_asn1.c", + ], + "test/buildtest_asn1t.o" => + [ + "test/buildtest_asn1t.c", + ], + "test/buildtest_async.o" => + [ + "test/buildtest_async.c", + ], + "test/buildtest_bio.o" => + [ + "test/buildtest_bio.c", + ], + "test/buildtest_blowfish.o" => + [ + "test/buildtest_blowfish.c", + ], + "test/buildtest_bn.o" => + [ + "test/buildtest_bn.c", + ], + "test/buildtest_buffer.o" => + [ + "test/buildtest_buffer.c", + ], + "test/buildtest_c_aes" => + [ + "test/buildtest_aes.o", + ], + "test/buildtest_c_asn1" => + [ + "test/buildtest_asn1.o", + ], + "test/buildtest_c_asn1t" => + [ + "test/buildtest_asn1t.o", + ], + "test/buildtest_c_async" => + [ + "test/buildtest_async.o", + ], + "test/buildtest_c_bio" => + [ + "test/buildtest_bio.o", + ], + "test/buildtest_c_blowfish" => + [ + "test/buildtest_blowfish.o", + ], + "test/buildtest_c_bn" => + [ + "test/buildtest_bn.o", + ], + "test/buildtest_c_buffer" => + [ + "test/buildtest_buffer.o", + ], + "test/buildtest_c_camellia" => + [ + "test/buildtest_camellia.o", + ], + "test/buildtest_c_cast" => + [ + "test/buildtest_cast.o", + ], + "test/buildtest_c_cmac" => + [ + "test/buildtest_cmac.o", + ], + "test/buildtest_c_cms" => + [ + "test/buildtest_cms.o", + ], + "test/buildtest_c_conf" => + [ + "test/buildtest_conf.o", + ], + "test/buildtest_c_conf_api" => + [ + "test/buildtest_conf_api.o", + ], + "test/buildtest_c_crypto" => + [ + "test/buildtest_crypto.o", + ], + "test/buildtest_c_ct" => + [ + "test/buildtest_ct.o", + ], + "test/buildtest_c_des" => + [ + "test/buildtest_des.o", + ], + "test/buildtest_c_dh" => + [ + "test/buildtest_dh.o", + ], + "test/buildtest_c_dsa" => + [ + "test/buildtest_dsa.o", + ], + "test/buildtest_c_dtls1" => + [ + "test/buildtest_dtls1.o", + ], + "test/buildtest_c_e_os2" => + [ + "test/buildtest_e_os2.o", + ], + "test/buildtest_c_ebcdic" => + [ + "test/buildtest_ebcdic.o", + ], + "test/buildtest_c_ec" => + [ + "test/buildtest_ec.o", + ], + "test/buildtest_c_ecdh" => + [ + "test/buildtest_ecdh.o", + ], + "test/buildtest_c_ecdsa" => + [ + "test/buildtest_ecdsa.o", + ], + "test/buildtest_c_engine" => + [ + "test/buildtest_engine.o", + ], + "test/buildtest_c_evp" => + [ + "test/buildtest_evp.o", + ], + "test/buildtest_c_hmac" => + [ + "test/buildtest_hmac.o", + ], + "test/buildtest_c_idea" => + [ + "test/buildtest_idea.o", + ], + "test/buildtest_c_kdf" => + [ + "test/buildtest_kdf.o", + ], + "test/buildtest_c_lhash" => + [ + "test/buildtest_lhash.o", + ], + "test/buildtest_c_md4" => + [ + "test/buildtest_md4.o", + ], + "test/buildtest_c_md5" => + [ + "test/buildtest_md5.o", + ], + "test/buildtest_c_mdc2" => + [ + "test/buildtest_mdc2.o", + ], + "test/buildtest_c_modes" => + [ + "test/buildtest_modes.o", + ], + "test/buildtest_c_obj_mac" => + [ + "test/buildtest_obj_mac.o", + ], + "test/buildtest_c_objects" => + [ + "test/buildtest_objects.o", + ], + "test/buildtest_c_ocsp" => + [ + "test/buildtest_ocsp.o", + ], + "test/buildtest_c_opensslv" => + [ + "test/buildtest_opensslv.o", + ], + "test/buildtest_c_ossl_typ" => + [ + "test/buildtest_ossl_typ.o", + ], + "test/buildtest_c_pem" => + [ + "test/buildtest_pem.o", + ], + "test/buildtest_c_pem2" => + [ + "test/buildtest_pem2.o", + ], + "test/buildtest_c_pkcs12" => + [ + "test/buildtest_pkcs12.o", + ], + "test/buildtest_c_pkcs7" => + [ + "test/buildtest_pkcs7.o", + ], + "test/buildtest_c_rand" => + [ + "test/buildtest_rand.o", + ], + "test/buildtest_c_rand_drbg" => + [ + "test/buildtest_rand_drbg.o", + ], + "test/buildtest_c_rc2" => + [ + "test/buildtest_rc2.o", + ], + "test/buildtest_c_rc4" => + [ + "test/buildtest_rc4.o", + ], + "test/buildtest_c_ripemd" => + [ + "test/buildtest_ripemd.o", + ], + "test/buildtest_c_rsa" => + [ + "test/buildtest_rsa.o", + ], + "test/buildtest_c_safestack" => + [ + "test/buildtest_safestack.o", + ], + "test/buildtest_c_seed" => + [ + "test/buildtest_seed.o", + ], + "test/buildtest_c_sha" => + [ + "test/buildtest_sha.o", + ], + "test/buildtest_c_srp" => + [ + "test/buildtest_srp.o", + ], + "test/buildtest_c_srtp" => + [ + "test/buildtest_srtp.o", + ], + "test/buildtest_c_ssl" => + [ + "test/buildtest_ssl.o", + ], + "test/buildtest_c_ssl2" => + [ + "test/buildtest_ssl2.o", + ], + "test/buildtest_c_stack" => + [ + "test/buildtest_stack.o", + ], + "test/buildtest_c_store" => + [ + "test/buildtest_store.o", + ], + "test/buildtest_c_symhacks" => + [ + "test/buildtest_symhacks.o", + ], + "test/buildtest_c_tls1" => + [ + "test/buildtest_tls1.o", + ], + "test/buildtest_c_ts" => + [ + "test/buildtest_ts.o", + ], + "test/buildtest_c_txt_db" => + [ + "test/buildtest_txt_db.o", + ], + "test/buildtest_c_ui" => + [ + "test/buildtest_ui.o", + ], + "test/buildtest_c_whrlpool" => + [ + "test/buildtest_whrlpool.o", + ], + "test/buildtest_c_x509" => + [ + "test/buildtest_x509.o", + ], + "test/buildtest_c_x509_vfy" => + [ + "test/buildtest_x509_vfy.o", + ], + "test/buildtest_c_x509v3" => + [ + "test/buildtest_x509v3.o", + ], + "test/buildtest_camellia.o" => + [ + "test/buildtest_camellia.c", + ], + "test/buildtest_cast.o" => + [ + "test/buildtest_cast.c", + ], + "test/buildtest_cmac.o" => + [ + "test/buildtest_cmac.c", + ], + "test/buildtest_cms.o" => + [ + "test/buildtest_cms.c", + ], + "test/buildtest_conf.o" => + [ + "test/buildtest_conf.c", + ], + "test/buildtest_conf_api.o" => + [ + "test/buildtest_conf_api.c", + ], + "test/buildtest_crypto.o" => + [ + "test/buildtest_crypto.c", + ], + "test/buildtest_ct.o" => + [ + "test/buildtest_ct.c", + ], + "test/buildtest_des.o" => + [ + "test/buildtest_des.c", + ], + "test/buildtest_dh.o" => + [ + "test/buildtest_dh.c", + ], + "test/buildtest_dsa.o" => + [ + "test/buildtest_dsa.c", + ], + "test/buildtest_dtls1.o" => + [ + "test/buildtest_dtls1.c", + ], + "test/buildtest_e_os2.o" => + [ + "test/buildtest_e_os2.c", + ], + "test/buildtest_ebcdic.o" => + [ + "test/buildtest_ebcdic.c", + ], + "test/buildtest_ec.o" => + [ + "test/buildtest_ec.c", + ], + "test/buildtest_ecdh.o" => + [ + "test/buildtest_ecdh.c", + ], + "test/buildtest_ecdsa.o" => + [ + "test/buildtest_ecdsa.c", + ], + "test/buildtest_engine.o" => + [ + "test/buildtest_engine.c", + ], + "test/buildtest_evp.o" => + [ + "test/buildtest_evp.c", + ], + "test/buildtest_hmac.o" => + [ + "test/buildtest_hmac.c", + ], + "test/buildtest_idea.o" => + [ + "test/buildtest_idea.c", + ], + "test/buildtest_kdf.o" => + [ + "test/buildtest_kdf.c", + ], + "test/buildtest_lhash.o" => + [ + "test/buildtest_lhash.c", + ], + "test/buildtest_md4.o" => + [ + "test/buildtest_md4.c", + ], + "test/buildtest_md5.o" => + [ + "test/buildtest_md5.c", + ], + "test/buildtest_mdc2.o" => + [ + "test/buildtest_mdc2.c", + ], + "test/buildtest_modes.o" => + [ + "test/buildtest_modes.c", + ], + "test/buildtest_obj_mac.o" => + [ + "test/buildtest_obj_mac.c", + ], + "test/buildtest_objects.o" => + [ + "test/buildtest_objects.c", + ], + "test/buildtest_ocsp.o" => + [ + "test/buildtest_ocsp.c", + ], + "test/buildtest_opensslv.o" => + [ + "test/buildtest_opensslv.c", + ], + "test/buildtest_ossl_typ.o" => + [ + "test/buildtest_ossl_typ.c", + ], + "test/buildtest_pem.o" => + [ + "test/buildtest_pem.c", + ], + "test/buildtest_pem2.o" => + [ + "test/buildtest_pem2.c", + ], + "test/buildtest_pkcs12.o" => + [ + "test/buildtest_pkcs12.c", + ], + "test/buildtest_pkcs7.o" => + [ + "test/buildtest_pkcs7.c", + ], + "test/buildtest_rand.o" => + [ + "test/buildtest_rand.c", + ], + "test/buildtest_rand_drbg.o" => + [ + "test/buildtest_rand_drbg.c", + ], + "test/buildtest_rc2.o" => + [ + "test/buildtest_rc2.c", + ], + "test/buildtest_rc4.o" => + [ + "test/buildtest_rc4.c", + ], + "test/buildtest_ripemd.o" => + [ + "test/buildtest_ripemd.c", + ], + "test/buildtest_rsa.o" => + [ + "test/buildtest_rsa.c", + ], + "test/buildtest_safestack.o" => + [ + "test/buildtest_safestack.c", + ], + "test/buildtest_seed.o" => + [ + "test/buildtest_seed.c", + ], + "test/buildtest_sha.o" => + [ + "test/buildtest_sha.c", + ], + "test/buildtest_srp.o" => + [ + "test/buildtest_srp.c", + ], + "test/buildtest_srtp.o" => + [ + "test/buildtest_srtp.c", + ], + "test/buildtest_ssl.o" => + [ + "test/buildtest_ssl.c", + ], + "test/buildtest_ssl2.o" => + [ + "test/buildtest_ssl2.c", + ], + "test/buildtest_stack.o" => + [ + "test/buildtest_stack.c", + ], + "test/buildtest_store.o" => + [ + "test/buildtest_store.c", + ], + "test/buildtest_symhacks.o" => + [ + "test/buildtest_symhacks.c", + ], + "test/buildtest_tls1.o" => + [ + "test/buildtest_tls1.c", + ], + "test/buildtest_ts.o" => + [ + "test/buildtest_ts.c", + ], + "test/buildtest_txt_db.o" => + [ + "test/buildtest_txt_db.c", + ], + "test/buildtest_ui.o" => + [ + "test/buildtest_ui.c", + ], + "test/buildtest_whrlpool.o" => + [ + "test/buildtest_whrlpool.c", + ], + "test/buildtest_x509.o" => + [ + "test/buildtest_x509.c", + ], + "test/buildtest_x509_vfy.o" => + [ + "test/buildtest_x509_vfy.c", + ], + "test/buildtest_x509v3.o" => + [ + "test/buildtest_x509v3.c", + ], + "test/casttest" => + [ + "test/casttest.o", + ], + "test/casttest.o" => + [ + "test/casttest.c", + ], + "test/chacha_internal_test" => + [ + "test/chacha_internal_test.o", + ], + "test/chacha_internal_test.o" => + [ + "test/chacha_internal_test.c", + ], + "test/cipher_overhead_test" => + [ + "test/cipher_overhead_test.o", + ], + "test/cipher_overhead_test.o" => + [ + "test/cipher_overhead_test.c", + ], + "test/cipherbytes_test" => + [ + "test/cipherbytes_test.o", + ], + "test/cipherbytes_test.o" => + [ + "test/cipherbytes_test.c", + ], + "test/cipherlist_test" => + [ + "test/cipherlist_test.o", + ], + "test/cipherlist_test.o" => + [ + "test/cipherlist_test.c", + ], + "test/ciphername_test" => + [ + "test/ciphername_test.o", + ], + "test/ciphername_test.o" => + [ + "test/ciphername_test.c", + ], + "test/clienthellotest" => + [ + "test/clienthellotest.o", + ], + "test/clienthellotest.o" => + [ + "test/clienthellotest.c", + ], + "test/cmactest" => + [ + "test/cmactest.o", + ], + "test/cmactest.o" => + [ + "test/cmactest.c", + ], + "test/cmsapitest" => + [ + "test/cmsapitest.o", + ], + "test/cmsapitest.o" => + [ + "test/cmsapitest.c", + ], + "test/conf_include_test" => + [ + "test/conf_include_test.o", + ], + "test/conf_include_test.o" => + [ + "test/conf_include_test.c", + ], + "test/constant_time_test" => + [ + "test/constant_time_test.o", + ], + "test/constant_time_test.o" => + [ + "test/constant_time_test.c", + ], + "test/crltest" => + [ + "test/crltest.o", + ], + "test/crltest.o" => + [ + "test/crltest.c", + ], + "test/ct_test" => + [ + "test/ct_test.o", + ], + "test/ct_test.o" => + [ + "test/ct_test.c", + ], + "test/ctype_internal_test" => + [ + "test/ctype_internal_test.o", + ], + "test/ctype_internal_test.o" => + [ + "test/ctype_internal_test.c", + ], + "test/curve448_internal_test" => + [ + "test/curve448_internal_test.o", + ], + "test/curve448_internal_test.o" => + [ + "test/curve448_internal_test.c", + ], + "test/d2i_test" => + [ + "test/d2i_test.o", + ], + "test/d2i_test.o" => + [ + "test/d2i_test.c", + ], + "test/danetest" => + [ + "test/danetest.o", + ], + "test/danetest.o" => + [ + "test/danetest.c", + ], + "test/destest" => + [ + "test/destest.o", + ], + "test/destest.o" => + [ + "test/destest.c", + ], + "test/dhtest" => + [ + "test/dhtest.o", + ], + "test/dhtest.o" => + [ + "test/dhtest.c", + ], + "test/drbg_cavs_data.o" => + [ + "test/drbg_cavs_data.c", + ], + "test/drbg_cavs_test" => + [ + "test/drbg_cavs_data.o", + "test/drbg_cavs_test.o", + ], + "test/drbg_cavs_test.o" => + [ + "test/drbg_cavs_test.c", + ], + "test/drbgtest" => + [ + "test/drbgtest.o", + ], + "test/drbgtest.o" => + [ + "test/drbgtest.c", + ], + "test/dsa_no_digest_size_test" => + [ + "test/dsa_no_digest_size_test.o", + ], + "test/dsa_no_digest_size_test.o" => + [ + "test/dsa_no_digest_size_test.c", + ], + "test/dsatest" => + [ + "test/dsatest.o", + ], + "test/dsatest.o" => + [ + "test/dsatest.c", + ], + "test/dtls_mtu_test" => + [ + "test/dtls_mtu_test.o", + "test/ssltestlib.o", + ], + "test/dtls_mtu_test.o" => + [ + "test/dtls_mtu_test.c", + ], + "test/dtlstest" => + [ + "test/dtlstest.o", + "test/ssltestlib.o", + ], + "test/dtlstest.o" => + [ + "test/dtlstest.c", + ], + "test/dtlsv1listentest" => + [ + "test/dtlsv1listentest.o", + ], + "test/dtlsv1listentest.o" => + [ + "test/dtlsv1listentest.c", + ], + "test/ec_internal_test" => + [ + "test/ec_internal_test.o", + ], + "test/ec_internal_test.o" => + [ + "test/ec_internal_test.c", + ], + "test/ecdsatest" => + [ + "test/ecdsatest.o", + ], + "test/ecdsatest.o" => + [ + "test/ecdsatest.c", + ], + "test/ecstresstest" => + [ + "test/ecstresstest.o", + ], + "test/ecstresstest.o" => + [ + "test/ecstresstest.c", + ], + "test/ectest" => + [ + "test/ectest.o", + ], + "test/ectest.o" => + [ + "test/ectest.c", + ], + "test/enginetest" => + [ + "test/enginetest.o", + ], + "test/enginetest.o" => + [ + "test/enginetest.c", + ], + "test/errtest" => + [ + "test/errtest.o", + ], + "test/errtest.o" => + [ + "test/errtest.c", + ], + "test/evp_extra_test" => + [ + "test/evp_extra_test.o", + ], + "test/evp_extra_test.o" => + [ + "test/evp_extra_test.c", + ], + "test/evp_test" => + [ + "test/evp_test.o", + ], + "test/evp_test.o" => + [ + "test/evp_test.c", + ], + "test/exdatatest" => + [ + "test/exdatatest.o", + ], + "test/exdatatest.o" => + [ + "test/exdatatest.c", + ], + "test/exptest" => + [ + "test/exptest.o", + ], + "test/exptest.o" => + [ + "test/exptest.c", + ], + "test/fatalerrtest" => + [ + "test/fatalerrtest.o", + "test/ssltestlib.o", + ], + "test/fatalerrtest.o" => + [ + "test/fatalerrtest.c", + ], + "test/gmdifftest" => + [ + "test/gmdifftest.o", + ], + "test/gmdifftest.o" => + [ + "test/gmdifftest.c", + ], + "test/gosttest" => + [ + "test/gosttest.o", + "test/ssltestlib.o", + ], + "test/gosttest.o" => + [ + "test/gosttest.c", + ], + "test/handshake_helper.o" => + [ + "test/handshake_helper.c", + ], + "test/hmactest" => + [ + "test/hmactest.o", + ], + "test/hmactest.o" => + [ + "test/hmactest.c", + ], + "test/ideatest" => + [ + "test/ideatest.o", + ], + "test/ideatest.o" => + [ + "test/ideatest.c", + ], + "test/igetest" => + [ + "test/igetest.o", + ], + "test/igetest.o" => + [ + "test/igetest.c", + ], + "test/lhash_test" => + [ + "test/lhash_test.o", + ], + "test/lhash_test.o" => + [ + "test/lhash_test.c", + ], + "test/libtestutil.a" => + [ + "test/testutil/basic_output.o", + "test/testutil/cb.o", + "test/testutil/driver.o", + "test/testutil/format_output.o", + "test/testutil/main.o", + "test/testutil/output_helpers.o", + "test/testutil/random.o", + "test/testutil/stanza.o", + "test/testutil/tap_bio.o", + "test/testutil/test_cleanup.o", + "test/testutil/tests.o", + "test/testutil/testutil_init.o", + ], + "test/md2test" => + [ + "test/md2test.o", + ], + "test/md2test.o" => + [ + "test/md2test.c", + ], + "test/mdc2_internal_test" => + [ + "test/mdc2_internal_test.o", + ], + "test/mdc2_internal_test.o" => + [ + "test/mdc2_internal_test.c", + ], + "test/mdc2test" => + [ + "test/mdc2test.o", + ], + "test/mdc2test.o" => + [ + "test/mdc2test.c", + ], + "test/memleaktest" => + [ + "test/memleaktest.o", + ], + "test/memleaktest.o" => + [ + "test/memleaktest.c", + ], + "test/modes_internal_test" => + [ + "test/modes_internal_test.o", + ], + "test/modes_internal_test.o" => + [ + "test/modes_internal_test.c", + ], + "test/ocspapitest" => + [ + "test/ocspapitest.o", + ], + "test/ocspapitest.o" => + [ + "test/ocspapitest.c", + ], + "test/packettest" => + [ + "test/packettest.o", + ], + "test/packettest.o" => + [ + "test/packettest.c", + ], + "test/pbelutest" => + [ + "test/pbelutest.o", + ], + "test/pbelutest.o" => + [ + "test/pbelutest.c", + ], + "test/pemtest" => + [ + "test/pemtest.o", + ], + "test/pemtest.o" => + [ + "test/pemtest.c", + ], + "test/pkey_meth_kdf_test" => + [ + "test/pkey_meth_kdf_test.o", + ], + "test/pkey_meth_kdf_test.o" => + [ + "test/pkey_meth_kdf_test.c", + ], + "test/pkey_meth_test" => + [ + "test/pkey_meth_test.o", + ], + "test/pkey_meth_test.o" => + [ + "test/pkey_meth_test.c", + ], + "test/poly1305_internal_test" => + [ + "test/poly1305_internal_test.o", + ], + "test/poly1305_internal_test.o" => + [ + "test/poly1305_internal_test.c", + ], + "test/rc2test" => + [ + "test/rc2test.o", + ], + "test/rc2test.o" => + [ + "test/rc2test.c", + ], + "test/rc4test" => + [ + "test/rc4test.o", + ], + "test/rc4test.o" => + [ + "test/rc4test.c", + ], + "test/rc5test" => + [ + "test/rc5test.o", + ], + "test/rc5test.o" => + [ + "test/rc5test.c", + ], + "test/rdrand_sanitytest" => + [ + "test/rdrand_sanitytest.o", + ], + "test/rdrand_sanitytest.o" => + [ + "test/rdrand_sanitytest.c", + ], + "test/recordlentest" => + [ + "test/recordlentest.o", + "test/ssltestlib.o", + ], + "test/recordlentest.o" => + [ + "test/recordlentest.c", + ], + "test/rsa_complex" => + [ + "test/rsa_complex.o", + ], + "test/rsa_complex.o" => + [ + "test/rsa_complex.c", + ], + "test/rsa_mp_test" => + [ + "test/rsa_mp_test.o", + ], + "test/rsa_mp_test.o" => + [ + "test/rsa_mp_test.c", + ], + "test/rsa_test" => + [ + "test/rsa_test.o", + ], + "test/rsa_test.o" => + [ + "test/rsa_test.c", + ], + "test/sanitytest" => + [ + "test/sanitytest.o", + ], + "test/sanitytest.o" => + [ + "test/sanitytest.c", + ], + "test/secmemtest" => + [ + "test/secmemtest.o", + ], + "test/secmemtest.o" => + [ + "test/secmemtest.c", + ], + "test/servername_test" => + [ + "test/servername_test.o", + "test/ssltestlib.o", + ], + "test/servername_test.o" => + [ + "test/servername_test.c", + ], + "test/siphash_internal_test" => + [ + "test/siphash_internal_test.o", + ], + "test/siphash_internal_test.o" => + [ + "test/siphash_internal_test.c", + ], + "test/sm2_internal_test" => + [ + "test/sm2_internal_test.o", + ], + "test/sm2_internal_test.o" => + [ + "test/sm2_internal_test.c", + ], + "test/sm4_internal_test" => + [ + "test/sm4_internal_test.o", + ], + "test/sm4_internal_test.o" => + [ + "test/sm4_internal_test.c", + ], + "test/srptest" => + [ + "test/srptest.o", + ], + "test/srptest.o" => + [ + "test/srptest.c", + ], + "test/ssl_cert_table_internal_test" => + [ + "test/ssl_cert_table_internal_test.o", + ], + "test/ssl_cert_table_internal_test.o" => + [ + "test/ssl_cert_table_internal_test.c", + ], + "test/ssl_ctx_test" => + [ + "test/ssl_ctx_test.o", + ], + "test/ssl_ctx_test.o" => + [ + "test/ssl_ctx_test.c", + ], + "test/ssl_test" => + [ + "test/handshake_helper.o", + "test/ssl_test.o", + "test/ssl_test_ctx.o", + ], + "test/ssl_test.o" => + [ + "test/ssl_test.c", + ], + "test/ssl_test_ctx.o" => + [ + "test/ssl_test_ctx.c", + ], + "test/ssl_test_ctx_test" => + [ + "test/ssl_test_ctx.o", + "test/ssl_test_ctx_test.o", + ], + "test/ssl_test_ctx_test.o" => + [ + "test/ssl_test_ctx_test.c", + ], + "test/sslapitest" => + [ + "test/sslapitest.o", + "test/ssltestlib.o", + ], + "test/sslapitest.o" => + [ + "test/sslapitest.c", + ], + "test/sslbuffertest" => + [ + "test/sslbuffertest.o", + "test/ssltestlib.o", + ], + "test/sslbuffertest.o" => + [ + "test/sslbuffertest.c", + ], + "test/sslcorrupttest" => + [ + "test/sslcorrupttest.o", + "test/ssltestlib.o", + ], + "test/sslcorrupttest.o" => + [ + "test/sslcorrupttest.c", + ], + "test/ssltest_old" => + [ + "test/ssltest_old.o", + ], + "test/ssltest_old.o" => + [ + "test/ssltest_old.c", + ], + "test/ssltestlib.o" => + [ + "test/ssltestlib.c", + ], + "test/stack_test" => + [ + "test/stack_test.o", + ], + "test/stack_test.o" => + [ + "test/stack_test.c", + ], + "test/sysdefaulttest" => + [ + "test/sysdefaulttest.o", + ], + "test/sysdefaulttest.o" => + [ + "test/sysdefaulttest.c", + ], + "test/test_test" => + [ + "test/test_test.o", + ], + "test/test_test.o" => + [ + "test/test_test.c", + ], + "test/testutil/basic_output.o" => + [ + "test/testutil/basic_output.c", + ], + "test/testutil/cb.o" => + [ + "test/testutil/cb.c", + ], + "test/testutil/driver.o" => + [ + "test/testutil/driver.c", + ], + "test/testutil/format_output.o" => + [ + "test/testutil/format_output.c", + ], + "test/testutil/main.o" => + [ + "test/testutil/main.c", + ], + "test/testutil/output_helpers.o" => + [ + "test/testutil/output_helpers.c", + ], + "test/testutil/random.o" => + [ + "test/testutil/random.c", + ], + "test/testutil/stanza.o" => + [ + "test/testutil/stanza.c", + ], + "test/testutil/tap_bio.o" => + [ + "test/testutil/tap_bio.c", + ], + "test/testutil/test_cleanup.o" => + [ + "test/testutil/test_cleanup.c", + ], + "test/testutil/tests.o" => + [ + "test/testutil/tests.c", + ], + "test/testutil/testutil_init.o" => + [ + "test/testutil/testutil_init.c", + ], + "test/threadstest" => + [ + "test/threadstest.o", + ], + "test/threadstest.o" => + [ + "test/threadstest.c", + ], + "test/time_offset_test" => + [ + "test/time_offset_test.o", + ], + "test/time_offset_test.o" => + [ + "test/time_offset_test.c", + ], + "test/tls13ccstest" => + [ + "test/ssltestlib.o", + "test/tls13ccstest.o", + ], + "test/tls13ccstest.o" => + [ + "test/tls13ccstest.c", + ], + "test/tls13encryptiontest" => + [ + "test/tls13encryptiontest.o", + ], + "test/tls13encryptiontest.o" => + [ + "test/tls13encryptiontest.c", + ], + "test/uitest" => + [ + "test/uitest.o", + ], + "test/uitest.o" => + [ + "test/uitest.c", + ], + "test/v3ext" => + [ + "test/v3ext.o", + ], + "test/v3ext.o" => + [ + "test/v3ext.c", + ], + "test/v3nametest" => + [ + "test/v3nametest.o", + ], + "test/v3nametest.o" => + [ + "test/v3nametest.c", + ], + "test/verify_extra_test" => + [ + "test/verify_extra_test.o", + ], + "test/verify_extra_test.o" => + [ + "test/verify_extra_test.c", + ], + "test/versions" => + [ + "test/versions.o", + ], + "test/versions.o" => + [ + "test/versions.c", + ], + "test/wpackettest" => + [ + "test/wpackettest.o", + ], + "test/wpackettest.o" => + [ + "test/wpackettest.c", + ], + "test/x509_check_cert_pkey_test" => + [ + "test/x509_check_cert_pkey_test.o", + ], + "test/x509_check_cert_pkey_test.o" => + [ + "test/x509_check_cert_pkey_test.c", + ], + "test/x509_dup_cert_test" => + [ + "test/x509_dup_cert_test.o", + ], + "test/x509_dup_cert_test.o" => + [ + "test/x509_dup_cert_test.c", + ], + "test/x509_internal_test" => + [ + "test/x509_internal_test.o", + ], + "test/x509_internal_test.o" => + [ + "test/x509_internal_test.c", + ], + "test/x509_time_test" => + [ + "test/x509_time_test.o", + ], + "test/x509_time_test.o" => + [ + "test/x509_time_test.c", + ], + "test/x509aux" => + [ + "test/x509aux.o", + ], + "test/x509aux.o" => + [ + "test/x509aux.c", + ], + "tools/c_rehash" => + [ + "tools/c_rehash.in", + ], + "util/shlib_wrap.sh" => + [ + "util/shlib_wrap.sh.in", + ], + }, +); + +# The following data is only used when this files is use as a script +my @makevars = ( + 'AR', + 'ARFLAGS', + 'AS', + 'ASFLAGS', + 'CC', + 'CFLAGS', + 'CPP', + 'CPPDEFINES', + 'CPPFLAGS', + 'CPPINCLUDES', + 'CROSS_COMPILE', + 'CXX', + 'CXXFLAGS', + 'HASHBANGPERL', + 'LD', + 'LDFLAGS', + 'LDLIBS', + 'MT', + 'MTFLAGS', + 'PERL', + 'RANLIB', + 'RC', + 'RCFLAGS', + 'RM', +); +my %disabled_info = ( + 'afalgeng' => { + macro => 'OPENSSL_NO_AFALGENG', + }, + 'asan' => { + macro => 'OPENSSL_NO_ASAN', + }, + 'asm' => { + macro => 'OPENSSL_NO_ASM', + }, + 'comp' => { + macro => 'OPENSSL_NO_COMP', + skipped => [ 'crypto/comp' ], + }, + 'crypto-mdebug' => { + macro => 'OPENSSL_NO_CRYPTO_MDEBUG', + }, + 'crypto-mdebug-backtrace' => { + macro => 'OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE', + }, + 'devcryptoeng' => { + macro => 'OPENSSL_NO_DEVCRYPTOENG', + }, + 'ec_nistp_64_gcc_128' => { + macro => 'OPENSSL_NO_EC_NISTP_64_GCC_128', + }, + 'egd' => { + macro => 'OPENSSL_NO_EGD', + }, + 'external-tests' => { + macro => 'OPENSSL_NO_EXTERNAL_TESTS', + }, + 'fuzz-afl' => { + macro => 'OPENSSL_NO_FUZZ_AFL', + }, + 'fuzz-libfuzzer' => { + macro => 'OPENSSL_NO_FUZZ_LIBFUZZER', + }, + 'heartbeats' => { + macro => 'OPENSSL_NO_HEARTBEATS', + }, + 'md2' => { + macro => 'OPENSSL_NO_MD2', + skipped => [ 'crypto/md2' ], + }, + 'msan' => { + macro => 'OPENSSL_NO_MSAN', + }, + 'rc5' => { + macro => 'OPENSSL_NO_RC5', + skipped => [ 'crypto/rc5' ], + }, + 'sctp' => { + macro => 'OPENSSL_NO_SCTP', + }, + 'ssl3' => { + macro => 'OPENSSL_NO_SSL3', + }, + 'ssl3-method' => { + macro => 'OPENSSL_NO_SSL3_METHOD', + }, + 'ubsan' => { + macro => 'OPENSSL_NO_UBSAN', + }, + 'unit-test' => { + macro => 'OPENSSL_NO_UNIT_TEST', + }, + 'weak-ssl-ciphers' => { + macro => 'OPENSSL_NO_WEAK_SSL_CIPHERS', + }, +); +my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); +# If run directly, we can give some answers, and even reconfigure +unless (caller) { + use Getopt::Long; + use File::Spec::Functions; + use File::Basename; + use Pod::Usage; + + my $here = dirname($0); + + my $dump = undef; + my $cmdline = undef; + my $options = undef; + my $target = undef; + my $envvars = undef; + my $makevars = undef; + my $buildparams = undef; + my $reconf = undef; + my $verbose = undef; + my $help = undef; + my $man = undef; + GetOptions('dump|d' => \$dump, + 'command-line|c' => \$cmdline, + 'options|o' => \$options, + 'target|t' => \$target, + 'environment|e' => \$envvars, + 'make-variables|m' => \$makevars, + 'build-parameters|b' => \$buildparams, + 'reconfigure|reconf|r' => \$reconf, + 'verbose|v' => \$verbose, + 'help' => \$help, + 'man' => \$man) + or die "Errors in command line arguments\n"; + + unless ($dump || $cmdline || $options || $target || $envvars || $makevars + || $buildparams || $reconf || $verbose || $help || $man) { + print STDERR <<"_____"; +You must give at least one option. +For more information, do '$0 --help' +_____ + exit(2); + } + + if ($help) { + pod2usage(-exitval => 0, + -verbose => 1); + } + if ($man) { + pod2usage(-exitval => 0, + -verbose => 2); + } + if ($dump || $cmdline) { + print "\nCommand line (with current working directory = $here):\n\n"; + print ' ',join(' ', + $config{PERL}, + catfile($config{sourcedir}, 'Configure'), + @{$config{perlargv}}), "\n"; + print "\nPerl information:\n\n"; + print ' ',$config{perl_cmd},"\n"; + print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; + } + if ($dump || $options) { + my $longest = 0; + my $longest2 = 0; + foreach my $what (@disablables) { + $longest = length($what) if $longest < length($what); + $longest2 = length($disabled{$what}) + if $disabled{$what} && $longest2 < length($disabled{$what}); + } + print "\nEnabled features:\n\n"; + foreach my $what (@disablables) { + print " $what\n" + unless grep { $_ =~ /^${what}$/ } keys %disabled; + } + print "\nDisabled features:\n\n"; + foreach my $what (@disablables) { + my @what2 = grep { $_ =~ /^${what}$/ } keys %disabled; + my $what3 = $what2[0]; + if ($what3) { + print " $what3", ' ' x ($longest - length($what3) + 1), + "[$disabled{$what3}]", ' ' x ($longest2 - length($disabled{$what3}) + 1); + print $disabled_info{$what3}->{macro} + if $disabled_info{$what3}->{macro}; + print ' (skip ', + join(', ', @{$disabled_info{$what3}->{skipped}}), + ')' + if $disabled_info{$what3}->{skipped}; + print "\n"; + } + } + } + if ($dump || $target) { + print "\nConfig target attributes:\n\n"; + foreach (sort keys %target) { + next if $_ =~ m|^_| || $_ eq 'template'; + my $quotify = sub { + map { (my $x = $_) =~ s|([\\\$\@"])|\\$1|g; "\"$x\""} @_; + }; + print ' ', $_, ' => '; + if (ref($target{$_}) eq "ARRAY") { + print '[ ', join(', ', $quotify->(@{$target{$_}})), " ],\n"; + } else { + print $quotify->($target{$_}), ",\n" + } + } + } + if ($dump || $envvars) { + print "\nRecorded environment:\n\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ''),"\n"; + } + } + if ($dump || $makevars) { + print "\nMakevars:\n\n"; + foreach my $var (@makevars) { + my $prefix = ''; + $prefix = $config{CROSS_COMPILE} + if grep { $var eq $_ } @user_crossable; + $prefix //= ''; + print ' ',$var,' ' x (16 - length $var),'= ', + (ref $config{$var} eq 'ARRAY' + ? join(' ', @{$config{$var}}) + : $prefix.$config{$var}), + "\n" + if defined $config{$var}; + } + + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + my $buildfile = canonpath(catdir(@buildfile)); + print <<"_____"; + +NOTE: These variables only represent the configuration view. The build file +template may have processed these variables further, please have a look at the +build file for more exact data: + $buildfile +_____ + } + if ($dump || $buildparams) { + my @buildfile = ($config{builddir}, $config{build_file}); + unshift @buildfile, $here + unless file_name_is_absolute($config{builddir}); + print "\nbuild file:\n\n"; + print " ", canonpath(catfile(@buildfile)),"\n"; + + print "\nbuild file templates:\n\n"; + foreach (@{$config{build_file_templates}}) { + my @tmpl = ($_); + unshift @tmpl, $here + unless file_name_is_absolute($config{sourcedir}); + print ' ',canonpath(catfile(@tmpl)),"\n"; + } + } + if ($reconf) { + if ($verbose) { + print 'Reconfiguring with: ', join(' ',@{$config{perlargv}}), "\n"; + foreach (sort keys %{$config{perlenv}}) { + print ' ',$_,' = ',($config{perlenv}->{$_} || ""),"\n"; + } + } + + chdir $here; + exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf'; + } +} + +1; + +__END__ + +=head1 NAME + +configdata.pm - configuration data for OpenSSL builds + +=head1 SYNOPSIS + +Interactive: + + perl configdata.pm [options] + +As data bank module: + + use configdata; + +=head1 DESCRIPTION + +This module can be used in two modes, interactively and as a module containing +all the data recorded by OpenSSL's Configure script. + +When used interactively, simply run it as any perl script, with at least one +option, and you will get the information you ask for. See L below. + +When loaded as a module, you get a few databanks with useful information to +perform build related tasks. The databanks are: + + %config Configured things. + %target The OpenSSL config target with all inheritances + resolved. + %disabled The features that are disabled. + @disablables The list of features that can be disabled. + %withargs All data given through --with-THING options. + %unified_info All information that was computed from the build.info + files. + +=head1 OPTIONS + +=over 4 + +=item B<--help> + +Print a brief help message and exit. + +=item B<--man> + +Print the manual page and exit. + +=item B<--dump> | B<-d> + +Print all relevant configuration data. This is equivalent to B<--command-line> +B<--options> B<--target> B<--environment> B<--make-variables> +B<--build-parameters>. + +=item B<--command-line> | B<-c> + +Print the current configuration command line. + +=item B<--options> | B<-o> + +Print the features, both enabled and disabled, and display defined macro and +skipped directories where applicable. + +=item B<--target> | B<-t> + +Print the config attributes for this config target. + +=item B<--environment> | B<-e> + +Print the environment variables and their values at the time of configuration. + +=item B<--make-variables> | B<-m> + +Print the main make variables generated in the current configuration + +=item B<--build-parameters> | B<-b> + +Print the build parameters, i.e. build file and build file templates. + +=item B<--reconfigure> | B<--reconf> | B<-r> + +Redo the configuration. + +=item B<--verbose> | B<-v> + +Verbose output. + +=back + +=cut + diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h new file mode 100644 index 00000000000000..2bac7c4445a21a --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h @@ -0,0 +1,28 @@ +/* + * WARNING: do not edit! + * Generated by util/mkbuildinf.pl + * + * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define PLATFORM "platform: linux64-riscv64" +#define DATE "built on: Fri Sep 10 08:58:25 2021 UTC" + +/* + * Generate compiler_flags as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ +static const char compiler_flags[] = { + 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f', + 'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','W','a', + 'l','l',' ','-','O','3',' ','-','D','O','P','E','N','S','S','L', + '_','U','S','E','_','N','O','D','E','L','E','T','E',' ','-','D', + 'O','P','E','N','S','S','L','_','P','I','C',' ','-','D','N','D', + 'E','B','U','G','\0' +}; diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/include/internal/bn_conf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/include/internal/bn_conf.h new file mode 100644 index 00000000000000..5312ef5a7ac43b --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/include/internal/bn_conf.h @@ -0,0 +1,28 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/bn_conf.h.in */ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#define SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT + +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/include/internal/dso_conf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/include/internal/dso_conf.h new file mode 100644 index 00000000000000..4b1167c3d8df3f --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/include/internal/dso_conf.h @@ -0,0 +1,17 @@ +/* WARNING: do not edit! */ +/* Generated by Makefile from include/crypto/dso_conf.h.in */ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_DLFCN +# define HAVE_DLFCN_H +# define DSO_EXTENSION ".so" +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslconf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslconf.h new file mode 100644 index 00000000000000..cc8d71d0364115 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslconf.h @@ -0,0 +1,203 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_NO_COMP +# define OPENSSL_NO_COMP +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_ASM +# define OPENSSL_NO_ASM +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned char + +#ifdef __cplusplus +} +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/progs.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/progs.h new file mode 100644 index 00000000000000..005abd2dd303c6 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/progs.h @@ -0,0 +1,507 @@ +/* + * WARNING: do not edit! + * Generated by apps/progs.pl + * + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +typedef enum FUNC_TYPE { + FT_none, FT_general, FT_md, FT_cipher, FT_pkey, + FT_md_alg, FT_cipher_alg +} FUNC_TYPE; + +typedef struct function_st { + FUNC_TYPE type; + const char *name; + int (*func)(int argc, char *argv[]); + const OPTIONS *help; +} FUNCTION; + +DEFINE_LHASH_OF(FUNCTION); + +extern int asn1parse_main(int argc, char *argv[]); +extern int ca_main(int argc, char *argv[]); +extern int ciphers_main(int argc, char *argv[]); +extern int cms_main(int argc, char *argv[]); +extern int crl_main(int argc, char *argv[]); +extern int crl2pkcs7_main(int argc, char *argv[]); +extern int dgst_main(int argc, char *argv[]); +extern int dhparam_main(int argc, char *argv[]); +extern int dsa_main(int argc, char *argv[]); +extern int dsaparam_main(int argc, char *argv[]); +extern int ec_main(int argc, char *argv[]); +extern int ecparam_main(int argc, char *argv[]); +extern int enc_main(int argc, char *argv[]); +extern int engine_main(int argc, char *argv[]); +extern int errstr_main(int argc, char *argv[]); +extern int gendsa_main(int argc, char *argv[]); +extern int genpkey_main(int argc, char *argv[]); +extern int genrsa_main(int argc, char *argv[]); +extern int help_main(int argc, char *argv[]); +extern int list_main(int argc, char *argv[]); +extern int nseq_main(int argc, char *argv[]); +extern int ocsp_main(int argc, char *argv[]); +extern int passwd_main(int argc, char *argv[]); +extern int pkcs12_main(int argc, char *argv[]); +extern int pkcs7_main(int argc, char *argv[]); +extern int pkcs8_main(int argc, char *argv[]); +extern int pkey_main(int argc, char *argv[]); +extern int pkeyparam_main(int argc, char *argv[]); +extern int pkeyutl_main(int argc, char *argv[]); +extern int prime_main(int argc, char *argv[]); +extern int rand_main(int argc, char *argv[]); +extern int rehash_main(int argc, char *argv[]); +extern int req_main(int argc, char *argv[]); +extern int rsa_main(int argc, char *argv[]); +extern int rsautl_main(int argc, char *argv[]); +extern int s_client_main(int argc, char *argv[]); +extern int s_server_main(int argc, char *argv[]); +extern int s_time_main(int argc, char *argv[]); +extern int sess_id_main(int argc, char *argv[]); +extern int smime_main(int argc, char *argv[]); +extern int speed_main(int argc, char *argv[]); +extern int spkac_main(int argc, char *argv[]); +extern int srp_main(int argc, char *argv[]); +extern int storeutl_main(int argc, char *argv[]); +extern int ts_main(int argc, char *argv[]); +extern int verify_main(int argc, char *argv[]); +extern int version_main(int argc, char *argv[]); +extern int x509_main(int argc, char *argv[]); + +extern const OPTIONS asn1parse_options[]; +extern const OPTIONS ca_options[]; +extern const OPTIONS ciphers_options[]; +extern const OPTIONS cms_options[]; +extern const OPTIONS crl_options[]; +extern const OPTIONS crl2pkcs7_options[]; +extern const OPTIONS dgst_options[]; +extern const OPTIONS dhparam_options[]; +extern const OPTIONS dsa_options[]; +extern const OPTIONS dsaparam_options[]; +extern const OPTIONS ec_options[]; +extern const OPTIONS ecparam_options[]; +extern const OPTIONS enc_options[]; +extern const OPTIONS engine_options[]; +extern const OPTIONS errstr_options[]; +extern const OPTIONS gendsa_options[]; +extern const OPTIONS genpkey_options[]; +extern const OPTIONS genrsa_options[]; +extern const OPTIONS help_options[]; +extern const OPTIONS list_options[]; +extern const OPTIONS nseq_options[]; +extern const OPTIONS ocsp_options[]; +extern const OPTIONS passwd_options[]; +extern const OPTIONS pkcs12_options[]; +extern const OPTIONS pkcs7_options[]; +extern const OPTIONS pkcs8_options[]; +extern const OPTIONS pkey_options[]; +extern const OPTIONS pkeyparam_options[]; +extern const OPTIONS pkeyutl_options[]; +extern const OPTIONS prime_options[]; +extern const OPTIONS rand_options[]; +extern const OPTIONS rehash_options[]; +extern const OPTIONS req_options[]; +extern const OPTIONS rsa_options[]; +extern const OPTIONS rsautl_options[]; +extern const OPTIONS s_client_options[]; +extern const OPTIONS s_server_options[]; +extern const OPTIONS s_time_options[]; +extern const OPTIONS sess_id_options[]; +extern const OPTIONS smime_options[]; +extern const OPTIONS speed_options[]; +extern const OPTIONS spkac_options[]; +extern const OPTIONS srp_options[]; +extern const OPTIONS storeutl_options[]; +extern const OPTIONS ts_options[]; +extern const OPTIONS verify_options[]; +extern const OPTIONS version_options[]; +extern const OPTIONS x509_options[]; + +#ifdef INCLUDE_FUNCTION_TABLE +static FUNCTION functions[] = { + {FT_general, "asn1parse", asn1parse_main, asn1parse_options}, + {FT_general, "ca", ca_main, ca_options}, +#ifndef OPENSSL_NO_SOCK + {FT_general, "ciphers", ciphers_main, ciphers_options}, +#endif +#ifndef OPENSSL_NO_CMS + {FT_general, "cms", cms_main, cms_options}, +#endif + {FT_general, "crl", crl_main, crl_options}, + {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options}, + {FT_general, "dgst", dgst_main, dgst_options}, +#ifndef OPENSSL_NO_DH + {FT_general, "dhparam", dhparam_main, dhparam_options}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsa", dsa_main, dsa_options}, +#endif +#ifndef OPENSSL_NO_DSA + {FT_general, "dsaparam", dsaparam_main, dsaparam_options}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ec", ec_main, ec_options}, +#endif +#ifndef OPENSSL_NO_EC + {FT_general, "ecparam", ecparam_main, ecparam_options}, +#endif + {FT_general, "enc", enc_main, enc_options}, +#ifndef OPENSSL_NO_ENGINE + {FT_general, "engine", engine_main, engine_options}, +#endif + {FT_general, "errstr", errstr_main, errstr_options}, +#ifndef OPENSSL_NO_DSA + {FT_general, "gendsa", gendsa_main, gendsa_options}, +#endif + {FT_general, "genpkey", genpkey_main, genpkey_options}, +#ifndef OPENSSL_NO_RSA + {FT_general, "genrsa", genrsa_main, genrsa_options}, +#endif + {FT_general, "help", help_main, help_options}, + {FT_general, "list", list_main, list_options}, + {FT_general, "nseq", nseq_main, nseq_options}, +#ifndef OPENSSL_NO_OCSP + {FT_general, "ocsp", ocsp_main, ocsp_options}, +#endif + {FT_general, "passwd", passwd_main, passwd_options}, +#ifndef OPENSSL_NO_DES + {FT_general, "pkcs12", pkcs12_main, pkcs12_options}, +#endif + {FT_general, "pkcs7", pkcs7_main, pkcs7_options}, + {FT_general, "pkcs8", pkcs8_main, pkcs8_options}, + {FT_general, "pkey", pkey_main, pkey_options}, + {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options}, + {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options}, + {FT_general, "prime", prime_main, prime_options}, + {FT_general, "rand", rand_main, rand_options}, + {FT_general, "rehash", rehash_main, rehash_options}, + {FT_general, "req", req_main, req_options}, + {FT_general, "rsa", rsa_main, rsa_options}, +#ifndef OPENSSL_NO_RSA + {FT_general, "rsautl", rsautl_main, rsautl_options}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_client", s_client_main, s_client_options}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_server", s_server_main, s_server_options}, +#endif +#ifndef OPENSSL_NO_SOCK + {FT_general, "s_time", s_time_main, s_time_options}, +#endif + {FT_general, "sess_id", sess_id_main, sess_id_options}, + {FT_general, "smime", smime_main, smime_options}, + {FT_general, "speed", speed_main, speed_options}, + {FT_general, "spkac", spkac_main, spkac_options}, +#ifndef OPENSSL_NO_SRP + {FT_general, "srp", srp_main, srp_options}, +#endif + {FT_general, "storeutl", storeutl_main, storeutl_options}, +#ifndef OPENSSL_NO_TS + {FT_general, "ts", ts_main, ts_options}, +#endif + {FT_general, "verify", verify_main, verify_options}, + {FT_general, "version", version_main, version_options}, + {FT_general, "x509", x509_main, x509_options}, +#ifndef OPENSSL_NO_MD2 + {FT_md, "md2", dgst_main}, +#endif +#ifndef OPENSSL_NO_MD4 + {FT_md, "md4", dgst_main}, +#endif + {FT_md, "md5", dgst_main}, +#ifndef OPENSSL_NO_GOST + {FT_md, "gost", dgst_main}, +#endif + {FT_md, "sha1", dgst_main}, + {FT_md, "sha224", dgst_main}, + {FT_md, "sha256", dgst_main}, + {FT_md, "sha384", dgst_main}, + {FT_md, "sha512", dgst_main}, + {FT_md, "sha512-224", dgst_main}, + {FT_md, "sha512-256", dgst_main}, + {FT_md, "sha3-224", dgst_main}, + {FT_md, "sha3-256", dgst_main}, + {FT_md, "sha3-384", dgst_main}, + {FT_md, "sha3-512", dgst_main}, + {FT_md, "shake128", dgst_main}, + {FT_md, "shake256", dgst_main}, +#ifndef OPENSSL_NO_MDC2 + {FT_md, "mdc2", dgst_main}, +#endif +#ifndef OPENSSL_NO_RMD160 + {FT_md, "rmd160", dgst_main}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2b512", dgst_main}, +#endif +#ifndef OPENSSL_NO_BLAKE2 + {FT_md, "blake2s256", dgst_main}, +#endif +#ifndef OPENSSL_NO_SM3 + {FT_md, "sm3", dgst_main}, +#endif + {FT_cipher, "aes-128-cbc", enc_main, enc_options}, + {FT_cipher, "aes-128-ecb", enc_main, enc_options}, + {FT_cipher, "aes-192-cbc", enc_main, enc_options}, + {FT_cipher, "aes-192-ecb", enc_main, enc_options}, + {FT_cipher, "aes-256-cbc", enc_main, enc_options}, + {FT_cipher, "aes-256-ecb", enc_main, enc_options}, +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ctr", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb1", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-128-cfb8", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ctr", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb1", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-192-cfb8", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ctr", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb1", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_ARIA + {FT_cipher, "aria-256-cfb8", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-128-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-192-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAMELLIA + {FT_cipher, "camellia-256-ecb", enc_main, enc_options}, +#endif + {FT_cipher, "base64", enc_main, enc_options}, +#ifdef ZLIB + {FT_cipher, "zlib", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des3", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "desx", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC4 + {FT_cipher, "rc4-40", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_DES + {FT_cipher, "des-ede3-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_IDEA + {FT_cipher, "idea-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SEED + {FT_cipher, "seed-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-64-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC2 + {FT_cipher, "rc2-40-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_BF + {FT_cipher, "bf-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast5-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_CAST + {FT_cipher, "cast-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_RC5 + {FT_cipher, "rc5-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cbc", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ecb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-cfb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ofb", enc_main, enc_options}, +#endif +#ifndef OPENSSL_NO_SM4 + {FT_cipher, "sm4-ctr", enc_main, enc_options}, +#endif + {0, NULL, NULL} +}; +#endif diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/linux64-riscv64/no-asm/openssl-cl.gypi new file mode 100644 index 00000000000000..0f7cdc9929dcad --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/openssl-cl.gypi @@ -0,0 +1,79 @@ +{ + 'variables': { + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_PIC', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-ldl -pthread', + ], + 'openssl_cli_srcs_linux64-riscv64': [ + 'openssl/apps/asn1pars.c', + 'openssl/apps/ca.c', + 'openssl/apps/ciphers.c', + 'openssl/apps/cms.c', + 'openssl/apps/crl.c', + 'openssl/apps/crl2p7.c', + 'openssl/apps/dgst.c', + 'openssl/apps/dhparam.c', + 'openssl/apps/dsa.c', + 'openssl/apps/dsaparam.c', + 'openssl/apps/ec.c', + 'openssl/apps/ecparam.c', + 'openssl/apps/enc.c', + 'openssl/apps/engine.c', + 'openssl/apps/errstr.c', + 'openssl/apps/gendsa.c', + 'openssl/apps/genpkey.c', + 'openssl/apps/genrsa.c', + 'openssl/apps/nseq.c', + 'openssl/apps/ocsp.c', + 'openssl/apps/openssl.c', + 'openssl/apps/passwd.c', + 'openssl/apps/pkcs12.c', + 'openssl/apps/pkcs7.c', + 'openssl/apps/pkcs8.c', + 'openssl/apps/pkey.c', + 'openssl/apps/pkeyparam.c', + 'openssl/apps/pkeyutl.c', + 'openssl/apps/prime.c', + 'openssl/apps/rand.c', + 'openssl/apps/rehash.c', + 'openssl/apps/req.c', + 'openssl/apps/rsa.c', + 'openssl/apps/rsautl.c', + 'openssl/apps/s_client.c', + 'openssl/apps/s_server.c', + 'openssl/apps/s_time.c', + 'openssl/apps/sess_id.c', + 'openssl/apps/smime.c', + 'openssl/apps/speed.c', + 'openssl/apps/spkac.c', + 'openssl/apps/srp.c', + 'openssl/apps/storeutl.c', + 'openssl/apps/ts.c', + 'openssl/apps/verify.c', + 'openssl/apps/version.c', + 'openssl/apps/x509.c', + 'openssl/apps/app_rand.c', + 'openssl/apps/apps.c', + 'openssl/apps/bf_prefix.c', + 'openssl/apps/opt.c', + 'openssl/apps/s_cb.c', + 'openssl/apps/s_socket.c', + ], + }, + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'include_dirs': [ + './include', + ], + 'cflags' : ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'sources': ['<@(openssl_cli_srcs_linux64-riscv64)'], +} diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/openssl.gypi b/deps/openssl/config/archs/linux64-riscv64/no-asm/openssl.gypi new file mode 100644 index 00000000000000..2689a1b5a8f230 --- /dev/null +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/openssl.gypi @@ -0,0 +1,713 @@ +{ + 'variables': { + 'openssl_sources': [ + 'openssl/ssl/bio_ssl.c', + 'openssl/ssl/d1_lib.c', + 'openssl/ssl/d1_msg.c', + 'openssl/ssl/d1_srtp.c', + 'openssl/ssl/methods.c', + 'openssl/ssl/packet.c', + 'openssl/ssl/pqueue.c', + 'openssl/ssl/record/dtls1_bitmap.c', + 'openssl/ssl/record/rec_layer_d1.c', + 'openssl/ssl/record/rec_layer_s3.c', + 'openssl/ssl/record/ssl3_buffer.c', + 'openssl/ssl/record/ssl3_record.c', + 'openssl/ssl/record/ssl3_record_tls13.c', + 'openssl/ssl/s3_cbc.c', + 'openssl/ssl/s3_enc.c', + 'openssl/ssl/s3_lib.c', + 'openssl/ssl/s3_msg.c', + 'openssl/ssl/ssl_asn1.c', + 'openssl/ssl/ssl_cert.c', + 'openssl/ssl/ssl_ciph.c', + 'openssl/ssl/ssl_conf.c', + 'openssl/ssl/ssl_err.c', + 'openssl/ssl/ssl_init.c', + 'openssl/ssl/ssl_lib.c', + 'openssl/ssl/ssl_mcnf.c', + 'openssl/ssl/ssl_quic.c', + 'openssl/ssl/ssl_rsa.c', + 'openssl/ssl/ssl_sess.c', + 'openssl/ssl/ssl_stat.c', + 'openssl/ssl/ssl_txt.c', + 'openssl/ssl/ssl_utst.c', + 'openssl/ssl/statem/extensions.c', + 'openssl/ssl/statem/extensions_clnt.c', + 'openssl/ssl/statem/extensions_cust.c', + 'openssl/ssl/statem/extensions_srvr.c', + 'openssl/ssl/statem/statem.c', + 'openssl/ssl/statem/statem_clnt.c', + 'openssl/ssl/statem/statem_dtls.c', + 'openssl/ssl/statem/statem_lib.c', + 'openssl/ssl/statem/statem_quic.c', + 'openssl/ssl/statem/statem_srvr.c', + 'openssl/ssl/t1_enc.c', + 'openssl/ssl/t1_lib.c', + 'openssl/ssl/t1_trce.c', + 'openssl/ssl/tls13_enc.c', + 'openssl/ssl/tls_srp.c', + 'openssl/crypto/aes/aes_cbc.c', + 'openssl/crypto/aes/aes_cfb.c', + 'openssl/crypto/aes/aes_core.c', + 'openssl/crypto/aes/aes_ecb.c', + 'openssl/crypto/aes/aes_ige.c', + 'openssl/crypto/aes/aes_misc.c', + 'openssl/crypto/aes/aes_ofb.c', + 'openssl/crypto/aes/aes_wrap.c', + 'openssl/crypto/aria/aria.c', + 'openssl/crypto/asn1/a_bitstr.c', + 'openssl/crypto/asn1/a_d2i_fp.c', + 'openssl/crypto/asn1/a_digest.c', + 'openssl/crypto/asn1/a_dup.c', + 'openssl/crypto/asn1/a_gentm.c', + 'openssl/crypto/asn1/a_i2d_fp.c', + 'openssl/crypto/asn1/a_int.c', + 'openssl/crypto/asn1/a_mbstr.c', + 'openssl/crypto/asn1/a_object.c', + 'openssl/crypto/asn1/a_octet.c', + 'openssl/crypto/asn1/a_print.c', + 'openssl/crypto/asn1/a_sign.c', + 'openssl/crypto/asn1/a_strex.c', + 'openssl/crypto/asn1/a_strnid.c', + 'openssl/crypto/asn1/a_time.c', + 'openssl/crypto/asn1/a_type.c', + 'openssl/crypto/asn1/a_utctm.c', + 'openssl/crypto/asn1/a_utf8.c', + 'openssl/crypto/asn1/a_verify.c', + 'openssl/crypto/asn1/ameth_lib.c', + 'openssl/crypto/asn1/asn1_err.c', + 'openssl/crypto/asn1/asn1_gen.c', + 'openssl/crypto/asn1/asn1_item_list.c', + 'openssl/crypto/asn1/asn1_lib.c', + 'openssl/crypto/asn1/asn1_par.c', + 'openssl/crypto/asn1/asn_mime.c', + 'openssl/crypto/asn1/asn_moid.c', + 'openssl/crypto/asn1/asn_mstbl.c', + 'openssl/crypto/asn1/asn_pack.c', + 'openssl/crypto/asn1/bio_asn1.c', + 'openssl/crypto/asn1/bio_ndef.c', + 'openssl/crypto/asn1/d2i_pr.c', + 'openssl/crypto/asn1/d2i_pu.c', + 'openssl/crypto/asn1/evp_asn1.c', + 'openssl/crypto/asn1/f_int.c', + 'openssl/crypto/asn1/f_string.c', + 'openssl/crypto/asn1/i2d_pr.c', + 'openssl/crypto/asn1/i2d_pu.c', + 'openssl/crypto/asn1/n_pkey.c', + 'openssl/crypto/asn1/nsseq.c', + 'openssl/crypto/asn1/p5_pbe.c', + 'openssl/crypto/asn1/p5_pbev2.c', + 'openssl/crypto/asn1/p5_scrypt.c', + 'openssl/crypto/asn1/p8_pkey.c', + 'openssl/crypto/asn1/t_bitst.c', + 'openssl/crypto/asn1/t_pkey.c', + 'openssl/crypto/asn1/t_spki.c', + 'openssl/crypto/asn1/tasn_dec.c', + 'openssl/crypto/asn1/tasn_enc.c', + 'openssl/crypto/asn1/tasn_fre.c', + 'openssl/crypto/asn1/tasn_new.c', + 'openssl/crypto/asn1/tasn_prn.c', + 'openssl/crypto/asn1/tasn_scn.c', + 'openssl/crypto/asn1/tasn_typ.c', + 'openssl/crypto/asn1/tasn_utl.c', + 'openssl/crypto/asn1/x_algor.c', + 'openssl/crypto/asn1/x_bignum.c', + 'openssl/crypto/asn1/x_info.c', + 'openssl/crypto/asn1/x_int64.c', + 'openssl/crypto/asn1/x_long.c', + 'openssl/crypto/asn1/x_pkey.c', + 'openssl/crypto/asn1/x_sig.c', + 'openssl/crypto/asn1/x_spki.c', + 'openssl/crypto/asn1/x_val.c', + 'openssl/crypto/async/arch/async_null.c', + 'openssl/crypto/async/arch/async_posix.c', + 'openssl/crypto/async/arch/async_win.c', + 'openssl/crypto/async/async.c', + 'openssl/crypto/async/async_err.c', + 'openssl/crypto/async/async_wait.c', + 'openssl/crypto/bf/bf_cfb64.c', + 'openssl/crypto/bf/bf_ecb.c', + 'openssl/crypto/bf/bf_enc.c', + 'openssl/crypto/bf/bf_ofb64.c', + 'openssl/crypto/bf/bf_skey.c', + 'openssl/crypto/bio/b_addr.c', + 'openssl/crypto/bio/b_dump.c', + 'openssl/crypto/bio/b_print.c', + 'openssl/crypto/bio/b_sock.c', + 'openssl/crypto/bio/b_sock2.c', + 'openssl/crypto/bio/bf_buff.c', + 'openssl/crypto/bio/bf_lbuf.c', + 'openssl/crypto/bio/bf_nbio.c', + 'openssl/crypto/bio/bf_null.c', + 'openssl/crypto/bio/bio_cb.c', + 'openssl/crypto/bio/bio_err.c', + 'openssl/crypto/bio/bio_lib.c', + 'openssl/crypto/bio/bio_meth.c', + 'openssl/crypto/bio/bss_acpt.c', + 'openssl/crypto/bio/bss_bio.c', + 'openssl/crypto/bio/bss_conn.c', + 'openssl/crypto/bio/bss_dgram.c', + 'openssl/crypto/bio/bss_fd.c', + 'openssl/crypto/bio/bss_file.c', + 'openssl/crypto/bio/bss_log.c', + 'openssl/crypto/bio/bss_mem.c', + 'openssl/crypto/bio/bss_null.c', + 'openssl/crypto/bio/bss_sock.c', + 'openssl/crypto/blake2/blake2b.c', + 'openssl/crypto/blake2/blake2s.c', + 'openssl/crypto/blake2/m_blake2b.c', + 'openssl/crypto/blake2/m_blake2s.c', + 'openssl/crypto/bn/bn_add.c', + 'openssl/crypto/bn/bn_asm.c', + 'openssl/crypto/bn/bn_blind.c', + 'openssl/crypto/bn/bn_const.c', + 'openssl/crypto/bn/bn_ctx.c', + 'openssl/crypto/bn/bn_depr.c', + 'openssl/crypto/bn/bn_dh.c', + 'openssl/crypto/bn/bn_div.c', + 'openssl/crypto/bn/bn_err.c', + 'openssl/crypto/bn/bn_exp.c', + 'openssl/crypto/bn/bn_exp2.c', + 'openssl/crypto/bn/bn_gcd.c', + 'openssl/crypto/bn/bn_gf2m.c', + 'openssl/crypto/bn/bn_intern.c', + 'openssl/crypto/bn/bn_kron.c', + 'openssl/crypto/bn/bn_lib.c', + 'openssl/crypto/bn/bn_mod.c', + 'openssl/crypto/bn/bn_mont.c', + 'openssl/crypto/bn/bn_mpi.c', + 'openssl/crypto/bn/bn_mul.c', + 'openssl/crypto/bn/bn_nist.c', + 'openssl/crypto/bn/bn_prime.c', + 'openssl/crypto/bn/bn_print.c', + 'openssl/crypto/bn/bn_rand.c', + 'openssl/crypto/bn/bn_recp.c', + 'openssl/crypto/bn/bn_shift.c', + 'openssl/crypto/bn/bn_sqr.c', + 'openssl/crypto/bn/bn_sqrt.c', + 'openssl/crypto/bn/bn_srp.c', + 'openssl/crypto/bn/bn_word.c', + 'openssl/crypto/bn/bn_x931p.c', + 'openssl/crypto/buffer/buf_err.c', + 'openssl/crypto/buffer/buffer.c', + 'openssl/crypto/camellia/camellia.c', + 'openssl/crypto/camellia/cmll_cbc.c', + 'openssl/crypto/camellia/cmll_cfb.c', + 'openssl/crypto/camellia/cmll_ctr.c', + 'openssl/crypto/camellia/cmll_ecb.c', + 'openssl/crypto/camellia/cmll_misc.c', + 'openssl/crypto/camellia/cmll_ofb.c', + 'openssl/crypto/cast/c_cfb64.c', + 'openssl/crypto/cast/c_ecb.c', + 'openssl/crypto/cast/c_enc.c', + 'openssl/crypto/cast/c_ofb64.c', + 'openssl/crypto/cast/c_skey.c', + 'openssl/crypto/chacha/chacha_enc.c', + 'openssl/crypto/cmac/cm_ameth.c', + 'openssl/crypto/cmac/cm_pmeth.c', + 'openssl/crypto/cmac/cmac.c', + 'openssl/crypto/cms/cms_asn1.c', + 'openssl/crypto/cms/cms_att.c', + 'openssl/crypto/cms/cms_cd.c', + 'openssl/crypto/cms/cms_dd.c', + 'openssl/crypto/cms/cms_enc.c', + 'openssl/crypto/cms/cms_env.c', + 'openssl/crypto/cms/cms_err.c', + 'openssl/crypto/cms/cms_ess.c', + 'openssl/crypto/cms/cms_io.c', + 'openssl/crypto/cms/cms_kari.c', + 'openssl/crypto/cms/cms_lib.c', + 'openssl/crypto/cms/cms_pwri.c', + 'openssl/crypto/cms/cms_sd.c', + 'openssl/crypto/cms/cms_smime.c', + 'openssl/crypto/conf/conf_api.c', + 'openssl/crypto/conf/conf_def.c', + 'openssl/crypto/conf/conf_err.c', + 'openssl/crypto/conf/conf_lib.c', + 'openssl/crypto/conf/conf_mall.c', + 'openssl/crypto/conf/conf_mod.c', + 'openssl/crypto/conf/conf_sap.c', + 'openssl/crypto/conf/conf_ssl.c', + 'openssl/crypto/cpt_err.c', + 'openssl/crypto/cryptlib.c', + 'openssl/crypto/ct/ct_b64.c', + 'openssl/crypto/ct/ct_err.c', + 'openssl/crypto/ct/ct_log.c', + 'openssl/crypto/ct/ct_oct.c', + 'openssl/crypto/ct/ct_policy.c', + 'openssl/crypto/ct/ct_prn.c', + 'openssl/crypto/ct/ct_sct.c', + 'openssl/crypto/ct/ct_sct_ctx.c', + 'openssl/crypto/ct/ct_vfy.c', + 'openssl/crypto/ct/ct_x509v3.c', + 'openssl/crypto/ctype.c', + 'openssl/crypto/cversion.c', + 'openssl/crypto/des/cbc_cksm.c', + 'openssl/crypto/des/cbc_enc.c', + 'openssl/crypto/des/cfb64ede.c', + 'openssl/crypto/des/cfb64enc.c', + 'openssl/crypto/des/cfb_enc.c', + 'openssl/crypto/des/des_enc.c', + 'openssl/crypto/des/ecb3_enc.c', + 'openssl/crypto/des/ecb_enc.c', + 'openssl/crypto/des/fcrypt.c', + 'openssl/crypto/des/fcrypt_b.c', + 'openssl/crypto/des/ofb64ede.c', + 'openssl/crypto/des/ofb64enc.c', + 'openssl/crypto/des/ofb_enc.c', + 'openssl/crypto/des/pcbc_enc.c', + 'openssl/crypto/des/qud_cksm.c', + 'openssl/crypto/des/rand_key.c', + 'openssl/crypto/des/set_key.c', + 'openssl/crypto/des/str2key.c', + 'openssl/crypto/des/xcbc_enc.c', + 'openssl/crypto/dh/dh_ameth.c', + 'openssl/crypto/dh/dh_asn1.c', + 'openssl/crypto/dh/dh_check.c', + 'openssl/crypto/dh/dh_depr.c', + 'openssl/crypto/dh/dh_err.c', + 'openssl/crypto/dh/dh_gen.c', + 'openssl/crypto/dh/dh_kdf.c', + 'openssl/crypto/dh/dh_key.c', + 'openssl/crypto/dh/dh_lib.c', + 'openssl/crypto/dh/dh_meth.c', + 'openssl/crypto/dh/dh_pmeth.c', + 'openssl/crypto/dh/dh_prn.c', + 'openssl/crypto/dh/dh_rfc5114.c', + 'openssl/crypto/dh/dh_rfc7919.c', + 'openssl/crypto/dsa/dsa_ameth.c', + 'openssl/crypto/dsa/dsa_asn1.c', + 'openssl/crypto/dsa/dsa_depr.c', + 'openssl/crypto/dsa/dsa_err.c', + 'openssl/crypto/dsa/dsa_gen.c', + 'openssl/crypto/dsa/dsa_key.c', + 'openssl/crypto/dsa/dsa_lib.c', + 'openssl/crypto/dsa/dsa_meth.c', + 'openssl/crypto/dsa/dsa_ossl.c', + 'openssl/crypto/dsa/dsa_pmeth.c', + 'openssl/crypto/dsa/dsa_prn.c', + 'openssl/crypto/dsa/dsa_sign.c', + 'openssl/crypto/dsa/dsa_vrf.c', + 'openssl/crypto/dso/dso_dl.c', + 'openssl/crypto/dso/dso_dlfcn.c', + 'openssl/crypto/dso/dso_err.c', + 'openssl/crypto/dso/dso_lib.c', + 'openssl/crypto/dso/dso_openssl.c', + 'openssl/crypto/dso/dso_vms.c', + 'openssl/crypto/dso/dso_win32.c', + 'openssl/crypto/ebcdic.c', + 'openssl/crypto/ec/curve25519.c', + 'openssl/crypto/ec/curve448/arch_32/f_impl.c', + 'openssl/crypto/ec/curve448/curve448.c', + 'openssl/crypto/ec/curve448/curve448_tables.c', + 'openssl/crypto/ec/curve448/eddsa.c', + 'openssl/crypto/ec/curve448/f_generic.c', + 'openssl/crypto/ec/curve448/scalar.c', + 'openssl/crypto/ec/ec2_oct.c', + 'openssl/crypto/ec/ec2_smpl.c', + 'openssl/crypto/ec/ec_ameth.c', + 'openssl/crypto/ec/ec_asn1.c', + 'openssl/crypto/ec/ec_check.c', + 'openssl/crypto/ec/ec_curve.c', + 'openssl/crypto/ec/ec_cvt.c', + 'openssl/crypto/ec/ec_err.c', + 'openssl/crypto/ec/ec_key.c', + 'openssl/crypto/ec/ec_kmeth.c', + 'openssl/crypto/ec/ec_lib.c', + 'openssl/crypto/ec/ec_mult.c', + 'openssl/crypto/ec/ec_oct.c', + 'openssl/crypto/ec/ec_pmeth.c', + 'openssl/crypto/ec/ec_print.c', + 'openssl/crypto/ec/ecdh_kdf.c', + 'openssl/crypto/ec/ecdh_ossl.c', + 'openssl/crypto/ec/ecdsa_ossl.c', + 'openssl/crypto/ec/ecdsa_sign.c', + 'openssl/crypto/ec/ecdsa_vrf.c', + 'openssl/crypto/ec/eck_prn.c', + 'openssl/crypto/ec/ecp_mont.c', + 'openssl/crypto/ec/ecp_nist.c', + 'openssl/crypto/ec/ecp_nistp224.c', + 'openssl/crypto/ec/ecp_nistp256.c', + 'openssl/crypto/ec/ecp_nistp521.c', + 'openssl/crypto/ec/ecp_nistputil.c', + 'openssl/crypto/ec/ecp_oct.c', + 'openssl/crypto/ec/ecp_smpl.c', + 'openssl/crypto/ec/ecx_meth.c', + 'openssl/crypto/engine/eng_all.c', + 'openssl/crypto/engine/eng_cnf.c', + 'openssl/crypto/engine/eng_ctrl.c', + 'openssl/crypto/engine/eng_dyn.c', + 'openssl/crypto/engine/eng_err.c', + 'openssl/crypto/engine/eng_fat.c', + 'openssl/crypto/engine/eng_init.c', + 'openssl/crypto/engine/eng_lib.c', + 'openssl/crypto/engine/eng_list.c', + 'openssl/crypto/engine/eng_openssl.c', + 'openssl/crypto/engine/eng_pkey.c', + 'openssl/crypto/engine/eng_rdrand.c', + 'openssl/crypto/engine/eng_table.c', + 'openssl/crypto/engine/tb_asnmth.c', + 'openssl/crypto/engine/tb_cipher.c', + 'openssl/crypto/engine/tb_dh.c', + 'openssl/crypto/engine/tb_digest.c', + 'openssl/crypto/engine/tb_dsa.c', + 'openssl/crypto/engine/tb_eckey.c', + 'openssl/crypto/engine/tb_pkmeth.c', + 'openssl/crypto/engine/tb_rand.c', + 'openssl/crypto/engine/tb_rsa.c', + 'openssl/crypto/err/err.c', + 'openssl/crypto/err/err_all.c', + 'openssl/crypto/err/err_prn.c', + 'openssl/crypto/evp/bio_b64.c', + 'openssl/crypto/evp/bio_enc.c', + 'openssl/crypto/evp/bio_md.c', + 'openssl/crypto/evp/bio_ok.c', + 'openssl/crypto/evp/c_allc.c', + 'openssl/crypto/evp/c_alld.c', + 'openssl/crypto/evp/cmeth_lib.c', + 'openssl/crypto/evp/digest.c', + 'openssl/crypto/evp/e_aes.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha1.c', + 'openssl/crypto/evp/e_aes_cbc_hmac_sha256.c', + 'openssl/crypto/evp/e_aria.c', + 'openssl/crypto/evp/e_bf.c', + 'openssl/crypto/evp/e_camellia.c', + 'openssl/crypto/evp/e_cast.c', + 'openssl/crypto/evp/e_chacha20_poly1305.c', + 'openssl/crypto/evp/e_des.c', + 'openssl/crypto/evp/e_des3.c', + 'openssl/crypto/evp/e_idea.c', + 'openssl/crypto/evp/e_null.c', + 'openssl/crypto/evp/e_old.c', + 'openssl/crypto/evp/e_rc2.c', + 'openssl/crypto/evp/e_rc4.c', + 'openssl/crypto/evp/e_rc4_hmac_md5.c', + 'openssl/crypto/evp/e_rc5.c', + 'openssl/crypto/evp/e_seed.c', + 'openssl/crypto/evp/e_sm4.c', + 'openssl/crypto/evp/e_xcbc_d.c', + 'openssl/crypto/evp/encode.c', + 'openssl/crypto/evp/evp_cnf.c', + 'openssl/crypto/evp/evp_enc.c', + 'openssl/crypto/evp/evp_err.c', + 'openssl/crypto/evp/evp_key.c', + 'openssl/crypto/evp/evp_lib.c', + 'openssl/crypto/evp/evp_pbe.c', + 'openssl/crypto/evp/evp_pkey.c', + 'openssl/crypto/evp/m_md2.c', + 'openssl/crypto/evp/m_md4.c', + 'openssl/crypto/evp/m_md5.c', + 'openssl/crypto/evp/m_md5_sha1.c', + 'openssl/crypto/evp/m_mdc2.c', + 'openssl/crypto/evp/m_null.c', + 'openssl/crypto/evp/m_ripemd.c', + 'openssl/crypto/evp/m_sha1.c', + 'openssl/crypto/evp/m_sha3.c', + 'openssl/crypto/evp/m_sigver.c', + 'openssl/crypto/evp/m_wp.c', + 'openssl/crypto/evp/names.c', + 'openssl/crypto/evp/p5_crpt.c', + 'openssl/crypto/evp/p5_crpt2.c', + 'openssl/crypto/evp/p_dec.c', + 'openssl/crypto/evp/p_enc.c', + 'openssl/crypto/evp/p_lib.c', + 'openssl/crypto/evp/p_open.c', + 'openssl/crypto/evp/p_seal.c', + 'openssl/crypto/evp/p_sign.c', + 'openssl/crypto/evp/p_verify.c', + 'openssl/crypto/evp/pbe_scrypt.c', + 'openssl/crypto/evp/pmeth_fn.c', + 'openssl/crypto/evp/pmeth_gn.c', + 'openssl/crypto/evp/pmeth_lib.c', + 'openssl/crypto/ex_data.c', + 'openssl/crypto/getenv.c', + 'openssl/crypto/hmac/hm_ameth.c', + 'openssl/crypto/hmac/hm_pmeth.c', + 'openssl/crypto/hmac/hmac.c', + 'openssl/crypto/idea/i_cbc.c', + 'openssl/crypto/idea/i_cfb64.c', + 'openssl/crypto/idea/i_ecb.c', + 'openssl/crypto/idea/i_ofb64.c', + 'openssl/crypto/idea/i_skey.c', + 'openssl/crypto/init.c', + 'openssl/crypto/kdf/hkdf.c', + 'openssl/crypto/kdf/kdf_err.c', + 'openssl/crypto/kdf/scrypt.c', + 'openssl/crypto/kdf/tls1_prf.c', + 'openssl/crypto/lhash/lh_stats.c', + 'openssl/crypto/lhash/lhash.c', + 'openssl/crypto/md4/md4_dgst.c', + 'openssl/crypto/md4/md4_one.c', + 'openssl/crypto/md5/md5_dgst.c', + 'openssl/crypto/md5/md5_one.c', + 'openssl/crypto/mdc2/mdc2_one.c', + 'openssl/crypto/mdc2/mdc2dgst.c', + 'openssl/crypto/mem.c', + 'openssl/crypto/mem_clr.c', + 'openssl/crypto/mem_dbg.c', + 'openssl/crypto/mem_sec.c', + 'openssl/crypto/modes/cbc128.c', + 'openssl/crypto/modes/ccm128.c', + 'openssl/crypto/modes/cfb128.c', + 'openssl/crypto/modes/ctr128.c', + 'openssl/crypto/modes/cts128.c', + 'openssl/crypto/modes/gcm128.c', + 'openssl/crypto/modes/ocb128.c', + 'openssl/crypto/modes/ofb128.c', + 'openssl/crypto/modes/wrap128.c', + 'openssl/crypto/modes/xts128.c', + 'openssl/crypto/o_dir.c', + 'openssl/crypto/o_fips.c', + 'openssl/crypto/o_fopen.c', + 'openssl/crypto/o_init.c', + 'openssl/crypto/o_str.c', + 'openssl/crypto/o_time.c', + 'openssl/crypto/objects/o_names.c', + 'openssl/crypto/objects/obj_dat.c', + 'openssl/crypto/objects/obj_err.c', + 'openssl/crypto/objects/obj_lib.c', + 'openssl/crypto/objects/obj_xref.c', + 'openssl/crypto/ocsp/ocsp_asn.c', + 'openssl/crypto/ocsp/ocsp_cl.c', + 'openssl/crypto/ocsp/ocsp_err.c', + 'openssl/crypto/ocsp/ocsp_ext.c', + 'openssl/crypto/ocsp/ocsp_ht.c', + 'openssl/crypto/ocsp/ocsp_lib.c', + 'openssl/crypto/ocsp/ocsp_prn.c', + 'openssl/crypto/ocsp/ocsp_srv.c', + 'openssl/crypto/ocsp/ocsp_vfy.c', + 'openssl/crypto/ocsp/v3_ocsp.c', + 'openssl/crypto/pem/pem_all.c', + 'openssl/crypto/pem/pem_err.c', + 'openssl/crypto/pem/pem_info.c', + 'openssl/crypto/pem/pem_lib.c', + 'openssl/crypto/pem/pem_oth.c', + 'openssl/crypto/pem/pem_pk8.c', + 'openssl/crypto/pem/pem_pkey.c', + 'openssl/crypto/pem/pem_sign.c', + 'openssl/crypto/pem/pem_x509.c', + 'openssl/crypto/pem/pem_xaux.c', + 'openssl/crypto/pem/pvkfmt.c', + 'openssl/crypto/pkcs12/p12_add.c', + 'openssl/crypto/pkcs12/p12_asn.c', + 'openssl/crypto/pkcs12/p12_attr.c', + 'openssl/crypto/pkcs12/p12_crpt.c', + 'openssl/crypto/pkcs12/p12_crt.c', + 'openssl/crypto/pkcs12/p12_decr.c', + 'openssl/crypto/pkcs12/p12_init.c', + 'openssl/crypto/pkcs12/p12_key.c', + 'openssl/crypto/pkcs12/p12_kiss.c', + 'openssl/crypto/pkcs12/p12_mutl.c', + 'openssl/crypto/pkcs12/p12_npas.c', + 'openssl/crypto/pkcs12/p12_p8d.c', + 'openssl/crypto/pkcs12/p12_p8e.c', + 'openssl/crypto/pkcs12/p12_sbag.c', + 'openssl/crypto/pkcs12/p12_utl.c', + 'openssl/crypto/pkcs12/pk12err.c', + 'openssl/crypto/pkcs7/bio_pk7.c', + 'openssl/crypto/pkcs7/pk7_asn1.c', + 'openssl/crypto/pkcs7/pk7_attr.c', + 'openssl/crypto/pkcs7/pk7_doit.c', + 'openssl/crypto/pkcs7/pk7_lib.c', + 'openssl/crypto/pkcs7/pk7_mime.c', + 'openssl/crypto/pkcs7/pk7_smime.c', + 'openssl/crypto/pkcs7/pkcs7err.c', + 'openssl/crypto/poly1305/poly1305.c', + 'openssl/crypto/poly1305/poly1305_ameth.c', + 'openssl/crypto/poly1305/poly1305_pmeth.c', + 'openssl/crypto/rand/drbg_ctr.c', + 'openssl/crypto/rand/drbg_lib.c', + 'openssl/crypto/rand/rand_egd.c', + 'openssl/crypto/rand/rand_err.c', + 'openssl/crypto/rand/rand_lib.c', + 'openssl/crypto/rand/rand_unix.c', + 'openssl/crypto/rand/rand_vms.c', + 'openssl/crypto/rand/rand_win.c', + 'openssl/crypto/rand/randfile.c', + 'openssl/crypto/rc2/rc2_cbc.c', + 'openssl/crypto/rc2/rc2_ecb.c', + 'openssl/crypto/rc2/rc2_skey.c', + 'openssl/crypto/rc2/rc2cfb64.c', + 'openssl/crypto/rc2/rc2ofb64.c', + 'openssl/crypto/rc4/rc4_enc.c', + 'openssl/crypto/rc4/rc4_skey.c', + 'openssl/crypto/ripemd/rmd_dgst.c', + 'openssl/crypto/ripemd/rmd_one.c', + 'openssl/crypto/rsa/rsa_ameth.c', + 'openssl/crypto/rsa/rsa_asn1.c', + 'openssl/crypto/rsa/rsa_chk.c', + 'openssl/crypto/rsa/rsa_crpt.c', + 'openssl/crypto/rsa/rsa_depr.c', + 'openssl/crypto/rsa/rsa_err.c', + 'openssl/crypto/rsa/rsa_gen.c', + 'openssl/crypto/rsa/rsa_lib.c', + 'openssl/crypto/rsa/rsa_meth.c', + 'openssl/crypto/rsa/rsa_mp.c', + 'openssl/crypto/rsa/rsa_none.c', + 'openssl/crypto/rsa/rsa_oaep.c', + 'openssl/crypto/rsa/rsa_ossl.c', + 'openssl/crypto/rsa/rsa_pk1.c', + 'openssl/crypto/rsa/rsa_pmeth.c', + 'openssl/crypto/rsa/rsa_prn.c', + 'openssl/crypto/rsa/rsa_pss.c', + 'openssl/crypto/rsa/rsa_saos.c', + 'openssl/crypto/rsa/rsa_sign.c', + 'openssl/crypto/rsa/rsa_ssl.c', + 'openssl/crypto/rsa/rsa_x931.c', + 'openssl/crypto/rsa/rsa_x931g.c', + 'openssl/crypto/seed/seed.c', + 'openssl/crypto/seed/seed_cbc.c', + 'openssl/crypto/seed/seed_cfb.c', + 'openssl/crypto/seed/seed_ecb.c', + 'openssl/crypto/seed/seed_ofb.c', + 'openssl/crypto/sha/keccak1600.c', + 'openssl/crypto/sha/sha1_one.c', + 'openssl/crypto/sha/sha1dgst.c', + 'openssl/crypto/sha/sha256.c', + 'openssl/crypto/sha/sha512.c', + 'openssl/crypto/siphash/siphash.c', + 'openssl/crypto/siphash/siphash_ameth.c', + 'openssl/crypto/siphash/siphash_pmeth.c', + 'openssl/crypto/sm2/sm2_crypt.c', + 'openssl/crypto/sm2/sm2_err.c', + 'openssl/crypto/sm2/sm2_pmeth.c', + 'openssl/crypto/sm2/sm2_sign.c', + 'openssl/crypto/sm3/m_sm3.c', + 'openssl/crypto/sm3/sm3.c', + 'openssl/crypto/sm4/sm4.c', + 'openssl/crypto/srp/srp_lib.c', + 'openssl/crypto/srp/srp_vfy.c', + 'openssl/crypto/stack/stack.c', + 'openssl/crypto/store/loader_file.c', + 'openssl/crypto/store/store_err.c', + 'openssl/crypto/store/store_init.c', + 'openssl/crypto/store/store_lib.c', + 'openssl/crypto/store/store_register.c', + 'openssl/crypto/store/store_strings.c', + 'openssl/crypto/threads_none.c', + 'openssl/crypto/threads_pthread.c', + 'openssl/crypto/threads_win.c', + 'openssl/crypto/ts/ts_asn1.c', + 'openssl/crypto/ts/ts_conf.c', + 'openssl/crypto/ts/ts_err.c', + 'openssl/crypto/ts/ts_lib.c', + 'openssl/crypto/ts/ts_req_print.c', + 'openssl/crypto/ts/ts_req_utils.c', + 'openssl/crypto/ts/ts_rsp_print.c', + 'openssl/crypto/ts/ts_rsp_sign.c', + 'openssl/crypto/ts/ts_rsp_utils.c', + 'openssl/crypto/ts/ts_rsp_verify.c', + 'openssl/crypto/ts/ts_verify_ctx.c', + 'openssl/crypto/txt_db/txt_db.c', + 'openssl/crypto/ui/ui_err.c', + 'openssl/crypto/ui/ui_lib.c', + 'openssl/crypto/ui/ui_null.c', + 'openssl/crypto/ui/ui_openssl.c', + 'openssl/crypto/ui/ui_util.c', + 'openssl/crypto/uid.c', + 'openssl/crypto/whrlpool/wp_block.c', + 'openssl/crypto/whrlpool/wp_dgst.c', + 'openssl/crypto/x509/by_dir.c', + 'openssl/crypto/x509/by_file.c', + 'openssl/crypto/x509/t_crl.c', + 'openssl/crypto/x509/t_req.c', + 'openssl/crypto/x509/t_x509.c', + 'openssl/crypto/x509/x509_att.c', + 'openssl/crypto/x509/x509_cmp.c', + 'openssl/crypto/x509/x509_d2.c', + 'openssl/crypto/x509/x509_def.c', + 'openssl/crypto/x509/x509_err.c', + 'openssl/crypto/x509/x509_ext.c', + 'openssl/crypto/x509/x509_lu.c', + 'openssl/crypto/x509/x509_meth.c', + 'openssl/crypto/x509/x509_obj.c', + 'openssl/crypto/x509/x509_r2x.c', + 'openssl/crypto/x509/x509_req.c', + 'openssl/crypto/x509/x509_set.c', + 'openssl/crypto/x509/x509_trs.c', + 'openssl/crypto/x509/x509_txt.c', + 'openssl/crypto/x509/x509_v3.c', + 'openssl/crypto/x509/x509_vfy.c', + 'openssl/crypto/x509/x509_vpm.c', + 'openssl/crypto/x509/x509cset.c', + 'openssl/crypto/x509/x509name.c', + 'openssl/crypto/x509/x509rset.c', + 'openssl/crypto/x509/x509spki.c', + 'openssl/crypto/x509/x509type.c', + 'openssl/crypto/x509/x_all.c', + 'openssl/crypto/x509/x_attrib.c', + 'openssl/crypto/x509/x_crl.c', + 'openssl/crypto/x509/x_exten.c', + 'openssl/crypto/x509/x_name.c', + 'openssl/crypto/x509/x_pubkey.c', + 'openssl/crypto/x509/x_req.c', + 'openssl/crypto/x509/x_x509.c', + 'openssl/crypto/x509/x_x509a.c', + 'openssl/crypto/x509v3/pcy_cache.c', + 'openssl/crypto/x509v3/pcy_data.c', + 'openssl/crypto/x509v3/pcy_lib.c', + 'openssl/crypto/x509v3/pcy_map.c', + 'openssl/crypto/x509v3/pcy_node.c', + 'openssl/crypto/x509v3/pcy_tree.c', + 'openssl/crypto/x509v3/v3_addr.c', + 'openssl/crypto/x509v3/v3_admis.c', + 'openssl/crypto/x509v3/v3_akey.c', + 'openssl/crypto/x509v3/v3_akeya.c', + 'openssl/crypto/x509v3/v3_alt.c', + 'openssl/crypto/x509v3/v3_asid.c', + 'openssl/crypto/x509v3/v3_bcons.c', + 'openssl/crypto/x509v3/v3_bitst.c', + 'openssl/crypto/x509v3/v3_conf.c', + 'openssl/crypto/x509v3/v3_cpols.c', + 'openssl/crypto/x509v3/v3_crld.c', + 'openssl/crypto/x509v3/v3_enum.c', + 'openssl/crypto/x509v3/v3_extku.c', + 'openssl/crypto/x509v3/v3_genn.c', + 'openssl/crypto/x509v3/v3_ia5.c', + 'openssl/crypto/x509v3/v3_info.c', + 'openssl/crypto/x509v3/v3_int.c', + 'openssl/crypto/x509v3/v3_lib.c', + 'openssl/crypto/x509v3/v3_ncons.c', + 'openssl/crypto/x509v3/v3_pci.c', + 'openssl/crypto/x509v3/v3_pcia.c', + 'openssl/crypto/x509v3/v3_pcons.c', + 'openssl/crypto/x509v3/v3_pku.c', + 'openssl/crypto/x509v3/v3_pmaps.c', + 'openssl/crypto/x509v3/v3_prn.c', + 'openssl/crypto/x509v3/v3_purp.c', + 'openssl/crypto/x509v3/v3_skey.c', + 'openssl/crypto/x509v3/v3_sxnet.c', + 'openssl/crypto/x509v3/v3_tlsf.c', + 'openssl/crypto/x509v3/v3_utl.c', + 'openssl/crypto/x509v3/v3err.c', + 'openssl/engines/e_capi.c', + 'openssl/engines/e_padlock.c', + ], + 'openssl_sources_linux64-riscv64': [ + ], + 'openssl_defines_linux64-riscv64': [ + 'NDEBUG', + 'OPENSSL_USE_NODELETE', + 'OPENSSL_PIC', + ], + 'openssl_cflags_linux64-riscv64': [ + '-Wall -O3', + '-pthread', + '-Wall -O3', + ], + 'openssl_ex_libs_linux64-riscv64': [ + '-ldl -pthread', + ], + }, + 'include_dirs': [ + '.', + './include', + './crypto', + './crypto/include/internal', + ], + 'defines': ['<@(openssl_defines_linux64-riscv64)'], + 'cflags' : ['<@(openssl_cflags_linux64-riscv64)'], + 'libraries': ['<@(openssl_ex_libs_linux64-riscv64)'], + 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux64-riscv64)'], +} diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 213d8805b86087..30a4182357505d 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 3 #define V8_BUILD_NUMBER 345 -#define V8_PATCH_LEVEL 16 +#define V8_PATCH_LEVEL 19 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/src/compiler/js-native-context-specialization.cc b/deps/v8/src/compiler/js-native-context-specialization.cc index 61fa46e94dfd41..30cab3ae26ac38 100644 --- a/deps/v8/src/compiler/js-native-context-specialization.cc +++ b/deps/v8/src/compiler/js-native-context-specialization.cc @@ -825,6 +825,12 @@ Reduction JSNativeContextSpecialization::ReduceGlobalAccess( return NoChange(); } else if (property_cell_type == PropertyCellType::kUndefined) { return NoChange(); + } else if (property_cell_type == PropertyCellType::kConstantType) { + // We rely on stability further below. + if (property_cell_value.IsHeapObject() && + !property_cell_value.AsHeapObject().map().is_stable()) { + return NoChange(); + } } } else if (access_mode == AccessMode::kHas) { DCHECK_EQ(receiver, lookup_start_object); @@ -943,17 +949,7 @@ Reduction JSNativeContextSpecialization::ReduceGlobalAccess( if (property_cell_value.IsHeapObject()) { MapRef property_cell_value_map = property_cell_value.AsHeapObject().map(); - if (property_cell_value_map.is_stable()) { - dependencies()->DependOnStableMap(property_cell_value_map); - } else { - // The value's map is already unstable. If this store were to go - // through the C++ runtime, it would transition the PropertyCell to - // kMutable. We don't want to change the cell type from generated - // code (to simplify concurrent heap access), however, so we keep - // it as kConstantType and do the store anyways (if the new value's - // map matches). This is safe because it merely prolongs the limbo - // state that we are in already. - } + dependencies()->DependOnStableMap(property_cell_value_map); // Check that the {value} is a HeapObject. value = effect = graph()->NewNode(simplified()->CheckHeapObject(), diff --git a/deps/v8/src/objects/fixed-array-inl.h b/deps/v8/src/objects/fixed-array-inl.h index 3b450634a59ee6..0990ee0c6485df 100644 --- a/deps/v8/src/objects/fixed-array-inl.h +++ b/deps/v8/src/objects/fixed-array-inl.h @@ -84,7 +84,7 @@ bool FixedArray::is_the_hole(Isolate* isolate, int index) { return get(isolate, index).IsTheHole(isolate); } -#if !defined(_WIN32) || defined(_WIN64) +#if !defined(_WIN32) || (defined(_WIN64) && _MSC_VER < 1930 && __cplusplus < 201703L) void FixedArray::set(int index, Smi value) { DCHECK_NE(map(), GetReadOnlyRoots().fixed_cow_array_map()); DCHECK_LT(static_cast(index), static_cast(length())); diff --git a/deps/v8/src/objects/fixed-array.h b/deps/v8/src/objects/fixed-array.h index 23904b81968509..74f5ecb3057965 100644 --- a/deps/v8/src/objects/fixed-array.h +++ b/deps/v8/src/objects/fixed-array.h @@ -134,7 +134,9 @@ class FixedArray inline bool is_the_hole(Isolate* isolate, int index); // Setter that doesn't need write barrier. -#if defined(_WIN32) && !defined(_WIN64) +#if !defined(_WIN32) || (defined(_WIN64) && _MSC_VER < 1930 && __cplusplus < 201703L) + inline void set(int index, Smi value); +#else inline void set(int index, Smi value) { DCHECK_NE(map(), GetReadOnlyRoots().fixed_cow_array_map()); DCHECK_LT(static_cast(index), static_cast(length())); @@ -142,8 +144,6 @@ class FixedArray int offset = OffsetOfElementAt(index); RELAXED_WRITE_FIELD(*this, offset, value); } -#else - inline void set(int index, Smi value); #endif // Setter with explicit barrier mode. diff --git a/deps/v8/testing/gmock/BUILD.gn b/deps/v8/testing/gmock/BUILD.gn index de5ae539093257..c20d33511a1c1f 100644 --- a/deps/v8/testing/gmock/BUILD.gn +++ b/deps/v8/testing/gmock/BUILD.gn @@ -15,12 +15,7 @@ source_set("gmock") { "include/gmock/gmock-matchers.h", "include/gmock/gmock.h", ] - deps = [ "//third_party/googletest:gmock" ] - - public_configs = [ - "//third_party/googletest:gmock_config", - "//third_party/googletest:gtest_config", - ] + public_deps = [ "//third_party/googletest:gmock" ] } # The file/directory layout of Google Test is not yet considered stable. Until diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py index 7031ba50dbdb4c..42ed60c7ef644b 100755 --- a/deps/v8/tools/mb/mb.py +++ b/deps/v8/tools/mb/mb.py @@ -53,6 +53,25 @@ def cmp(x, y): # pylint: disable=redefined-builtin return (x > y) - (x < y) +def _v8_builder_fallback(builder, builder_group): + """Fallback to V8 builder names before splitting builder/tester. + + This eases splitting builders and testers on release branches and + can be removed as soon as all builder have been split and all MB configs + exist on all branches. + """ + builders = [builder] + if builder.endswith(' - builder'): + builders.append(builder[:-len(' - builder')]) + elif builder.endswith(' builder'): + builders.append(builder[:-len(' builder')]) + + for builder in builders: + if builder in builder_group: + return builder_group[builder] + return None + + def main(args): mbw = MetaBuildWrapper() return mbw.Main(args) @@ -651,12 +670,14 @@ def ConfigFromArgs(self): raise MBErr('Builder groups name "%s" not found in "%s"' % (self.args.builder_group, self.args.config_file)) - if not self.args.builder in self.builder_groups[self.args.builder_group]: + config = _v8_builder_fallback( + self.args.builder, self.builder_groups[self.args.builder_group]) + + if not config: raise MBErr( 'Builder name "%s" not found under builder_groups[%s] in "%s"' % (self.args.builder, self.args.builder_group, self.args.config_file)) - config = self.builder_groups[self.args.builder_group][self.args.builder] if isinstance(config, dict): if self.args.phase is None: raise MBErr('Must specify a build --phase for %s on %s' % diff --git a/doc/api/addons.md b/doc/api/addons.md index b17e86febee671..c2cdee07ba27af 100644 --- a/doc/api/addons.md +++ b/doc/api/addons.md @@ -965,6 +965,10 @@ provided by the underlying V8 JavaScript engine. They are subject to change or removal at any time. They are not documented by Node.js or V8, and they should never be used outside of testing. +During shutdown of the process or worker threads destructors are not called +by the JS engine. Therefore it's the responsibility of the user to track +these objects and ensure proper destruction to avoid resource leaks. + ### Factory of wrapped objects Alternatively, it is possible to use a factory pattern to avoid explicitly diff --git a/doc/api/cli.md b/doc/api/cli.md index e3294958f8c1d8..f7e66a38baf571 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -595,6 +595,15 @@ added: v7.10.0 This option is a no-op. It is kept for compatibility. +### `--no-addons` + + +Disable the `node-addons` exports condition as well as disable loading +native addons. When `--no-addons` is specified, calling `process.dlopen` or +requiring a native C++ addon will fail and throw an exception. + ### `--no-deprecation` + +Do not search modules from global paths like `$HOME/.node_modules` and +`$NODE_PATH`. + ### `--no-warnings` + +Type: Documentation-only (supports [`--pending-deprecation`][]) + +The `'hash'` and `'mgf1Hash'` options are replaced with `'hashAlgorithm'` +and `'mgf1HashAlgorithm'`. + +### DEP0155: Trailing slashes in pattern specifier resolutions + + +Type: Documentation-only (supports [`--pending-deprecation`][]) + +The remapping of specifiers ending in `"/"` like `import 'pkg/x/'` is deprecated +for package `"exports"` and `"imports"` pattern resolutions. + [Legacy URL API]: url.md#url_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 diff --git a/doc/api/errors.md b/doc/api/errors.md index 211e5e98304ea3..be6355877d6f1c 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -1019,6 +1019,14 @@ added: v16.4.0 The [debugger][] timed out waiting for the required host/port to be free. + +### `ERR_DLOPEN_DISABLED` + + +Loading native addons has been disabled using [`--no-addons`][]. + ### `ERR_DLOPEN_FAILED` + +* {number} Requests per socket. **Default:** null (no limit) + +The maximum number of requests socket can handle +before closing keep alive connection. + +A value of `null` will disable the limit. + +When limit is reach it will set `Connection` header value to `closed`, +but will not actually close the connection, subsequent requests sent +after the limit is reached will get `503 Service Unavailable` as a response. + ### `server.timeout` -### `performanceEntry.details` +### `performanceEntry.detail` @@ -382,7 +382,7 @@ Performance Entry. ### Garbage Collection ('gc') Details -When `performanceEntry.type` is equal to `'gc'`, the `performanceEntry.details` +When `performanceEntry.type` is equal to `'gc'`, the `performanceEntry.detail` property will be an {Object} with two properties: * `kind` {number} One of: @@ -402,10 +402,10 @@ property will be an {Object} with two properties: ### HTTP/2 ('http2') Details When `performanceEntry.type` is equal to `'http2'`, the -`performanceEntry.details` property will be an {Object} containing +`performanceEntry.detail` property will be an {Object} containing additional performance information. -If `performanceEntry.name` is equal to `Http2Stream`, the `details` +If `performanceEntry.name` is equal to `Http2Stream`, the `detail` will contain the following properties: * `bytesRead` {number} The number of `DATA` frame bytes received for this @@ -420,7 +420,7 @@ will contain the following properties: * `timeToFirstHeader` {number} The number of milliseconds elapsed between the `PerformanceEntry` `startTime` and the reception of the first header. -If `performanceEntry.name` is equal to `Http2Session`, the `details` will +If `performanceEntry.name` is equal to `Http2Session`, the `detail` will contain the following properties: * `bytesRead` {number} The number of bytes received for this `Http2Session`. @@ -443,7 +443,7 @@ contain the following properties: ### Timerify ('function') Details When `performanceEntry.type` is equal to `'function'`, the -`performanceEntry.details` property will be an {Array} listing +`performanceEntry.detail` property will be an {Array} listing the input arguments to the timed function. ## Class: `PerformanceNodeTiming` diff --git a/doc/api/process.md b/doc/api/process.md index 3243b23da555a3..806bb66685ce67 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -2596,7 +2596,7 @@ tarball. that are no longer supported). * `'Dubnium'` for the 10.x LTS line beginning with 10.13.0. * `'Erbium'` for the 12.x LTS line beginning with 12.13.0. - For other LTS Release code names, see [Node.js Changelog Archive](https://github.com/nodejs/node/blob/HEAD/doc/changelogs/CHANGELOG_ARCHIVE.md) + For other LTS Release code names, see [Node.js Changelog Archive](https://github.com/nodejs/node/blob/HEAD/doc/changelogs/CHANGELOG_ARCHIVE.md) ```js diff --git a/doc/api/stream.md b/doc/api/stream.md index a700eb9233d77d..9f4bc4516372f9 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -1886,16 +1886,14 @@ const { pipeline } = require('stream/promises'); async function run() { const ac = new AbortController(); - const options = { - signal: ac.signal, - }; + const signal = ac.signal; setTimeout(() => ac.abort(), 1); await pipeline( fs.createReadStream('archive.tar'), zlib.createGzip(), fs.createWriteStream('archive.tar.gz'), - options, + { signal }, ); } @@ -1911,10 +1909,10 @@ const fs = require('fs'); async function run() { await pipeline( fs.createReadStream('lowercase.txt'), - async function* (source) { + async function* (source, signal) { source.setEncoding('utf8'); // Work with strings rather than `Buffer`s. for await (const chunk of source) { - yield chunk.toUpperCase(); + yield await processChunk(chunk, { signal }); } }, fs.createWriteStream('uppercase.txt') @@ -1925,6 +1923,28 @@ async function run() { run().catch(console.error); ``` +Remember to handle the `signal` argument passed into the async generator. +Especially in the case where the async generator is the source for the +pipeline (i.e. first argument) or the pipeline will never complete. + +```js +const { pipeline } = require('stream/promises'); +const fs = require('fs'); + +async function run() { + await pipeline( + async function * (signal) { + await someLongRunningfn({ signal }); + yield 'asd'; + }, + fs.createWriteStream('uppercase.txt') + ); + console.log('Pipeline succeeded.'); +} + +run().catch(console.error); +``` + `stream.pipeline()` will call `stream.destroy(err)` on all streams except: * `Readable` streams which have emitted `'end'` or `'close'`. * `Writable` streams which have emitted `'finish'` or `'close'`. @@ -2022,7 +2042,7 @@ await finished(compose(s1, s2, s3)); console.log(res); // prints 'HELLOWORLD' ``` -### `stream.Readable.from(iterable, [options])` +### `stream.Readable.from(iterable[, options])` diff --git a/doc/api/timers.md b/doc/api/timers.md index cfbc8f1ead4b71..b5a00619edbc36 100644 --- a/doc/api/timers.md +++ b/doc/api/timers.md @@ -72,6 +72,17 @@ timer is active. Each of the `Timeout` objects returned by these functions export both `timeout.ref()` and `timeout.unref()` functions that can be used to control this default behavior. +### `timeout.close()` + + +> Stability: 3 - Legacy: Use [`clearTimeout()`][] instead. + +* Returns: {Timeout} a reference to `timeout` + +Cancels the timeout. + ### `timeout.hasRef()` /sg, ''); let text = current.textRaw; @@ -491,8 +491,8 @@ function newSection(header, file) { function textJoin(nodes, file) { return nodes.map((node) => { if (node.type === 'linkReference') { - return file.contents.slice(node.position.start.offset, - node.position.end.offset); + return file.value.slice(node.position.start.offset, + node.position.end.offset); } else if (node.type === 'inlineCode') { return `\`${node.value}\``; } else if (node.type === 'strong') { diff --git a/tools/doc/package-lock.json b/tools/doc/package-lock.json index 7d60e99f088c6c..4fedbd4e742ccc 100644 --- a/tools/doc/package-lock.json +++ b/tools/doc/package-lock.json @@ -11,52 +11,73 @@ "node-doc-generator": "generate.js" }, "devDependencies": { - "highlight.js": "11.0.1", - "js-yaml": "4.1.0", - "rehype-raw": "5.1.0", - "rehype-stringify": "8.0.0", - "remark-frontmatter": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-html": "13.0.1", - "remark-parse": "^9.0.0", - "remark-rehype": "8.1.0", - "to-vfile": "7.1.0", - "unified": "9.2.1", - "unist-util-select": "4.0.0", - "unist-util-visit": "3.1.0" + "highlight.js": "^11.2.0", + "js-yaml": "^4.1.0", + "rehype-raw": "^6.1.0", + "rehype-stringify": "^9.0.2", + "remark-frontmatter": "^4.0.0", + "remark-gfm": "^2.0.0", + "remark-html": "^14.0.1", + "remark-parse": "^10.0.0", + "remark-rehype": "^9.0.0", + "to-vfile": "^7.2.2", + "unified": "^10.1.0", + "unist-util-select": "^4.0.0", + "unist-util-visit": "^4.0.0" }, "engines": { "node": ">=14.8.0" } }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/hast": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", - "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", "dev": true, "dependencies": { "@types/unist": "*" } }, "node_modules/@types/mdast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", - "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", "dev": true, "dependencies": { "@types/unist": "*" } }, + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, "node_modules/@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA==", "dev": true }, "node_modules/@types/unist": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", - "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, "node_modules/argparse": { @@ -66,9 +87,9 @@ "dev": true }, "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz", + "integrity": "sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA==", "dev": true, "funding": { "type": "github", @@ -82,9 +103,9 @@ "dev": true }, "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz", + "integrity": "sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA==", "dev": true, "funding": { "type": "github", @@ -92,9 +113,9 @@ } }, "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz", + "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==", "dev": true, "funding": { "type": "github", @@ -102,9 +123,9 @@ } }, "node_modules/character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.0.0.tgz", + "integrity": "sha512-dwT2xh5ZhUAjyP96k57ilMKoTQyASaw9IAMR9U5c1lCu2RUni6O6jxfpUEdO2RcPT6TJFvr8pqsbami4Jk+2oA==", "dev": true, "funding": { "type": "github", @@ -112,9 +133,9 @@ } }, "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", + "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", "dev": true, "funding": { "type": "github", @@ -122,9 +143,9 @@ } }, "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz", + "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==", "dev": true, "funding": { "type": "github", @@ -132,9 +153,9 @@ } }, "node_modules/comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", "dev": true, "funding": { "type": "github", @@ -148,9 +169,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -165,12 +186,12 @@ } }, "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -183,9 +204,9 @@ "dev": true }, "node_modules/fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.0.tgz", + "integrity": "sha512-JsDj9LFcoC+4ChII1QpXPA7YIaY8zmqPYw7h9j5n7St7a0BBKfNnwEBAUQRBx70o2q4rs+BeSNHk8Exm6xE7fQ==", "dev": true, "dependencies": { "format": "^0.2.0" @@ -205,18 +226,18 @@ } }, "node_modules/hast-to-hyperscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz", + "integrity": "sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==", "dev": true, "dependencies": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" + "unist-util-is": "^5.0.0", + "web-namespaces": "^2.0.0" }, "funding": { "type": "opencollective", @@ -224,17 +245,19 @@ } }, "node_modules/hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", "dev": true, "dependencies": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" }, "funding": { "type": "opencollective", @@ -242,57 +265,49 @@ } }, "node_modules/hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.1.tgz", + "integrity": "sha512-ag0fiZfRWsPiR1udvnSbaazJLGv8qd8E+/e3rW8rUZhbKG4HNJmFL4QkEceN+22BgE+uozXY30z/s+2dL6Z++g==", "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", "dev": true, + "dependencies": { + "@types/hast": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/hast-util-raw": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz", - "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.0.tgz", + "integrity": "sha512-K2ofsY59XqrtBNUAkvT2vPdyNPUchjj1Z0FxUOwBadS6R5h9O3LaRZqpukQ+YfgQ/IMy9GGMB/Nlpzpu+cuuMA==", "dev": true, "dependencies": { "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", @@ -300,12 +315,12 @@ } }, "node_modules/hast-util-sanitize": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.2.tgz", - "integrity": "sha512-+2I0x2ZCAyiZOO/sb4yNLFmdwPBnyJ4PBkVTUMKMqBwYNA+lXSgOmoRXlJFazoyid9QPogRRKgKhVEodv181sA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", "dev": true, "dependencies": { - "xtend": "^4.0.0" + "@types/hast": "^2.0.0" }, "funding": { "type": "opencollective", @@ -313,21 +328,21 @@ } }, "node_modules/hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", - "dev": true, - "dependencies": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.2.tgz", + "integrity": "sha512-ipLhUTMyyJi9F/LXaNDG9BrRdshP6obCfmUZYbE/+T639IdzqAOkKN4DyrEyID0gbb+rsC3PKf0XlviZwzomhw==", + "dev": true, + "dependencies": { + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", @@ -335,16 +350,17 @@ } }, "node_modules/hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz", + "integrity": "sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==", "dev": true, "dependencies": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-to-hyperscript": "^10.0.0", + "property-information": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", @@ -352,9 +368,9 @@ } }, "node_modules/hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", "dev": true, "funding": { "type": "opencollective", @@ -362,16 +378,16 @@ } }, "node_modules/hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", "dev": true, "dependencies": { "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" }, "funding": { "type": "opencollective", @@ -379,18 +395,18 @@ } }, "node_modules/highlight.js": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.0.1.tgz", - "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.2.0.tgz", + "integrity": "sha512-JOySjtOEcyG8s4MLR2MNbLUyaXqUunmSnL2kdV/KuGJOmHZuAR5xC54Ko7goAXBWNhf09Vy3B+U7vR62UZ/0iw==", "dev": true, "engines": { "node": ">=12.0.0" } }, "node_modules/html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.0.tgz", + "integrity": "sha512-4OYzQQsBt0G9bJ/nM9/DDsjm4+fVdzAaPJJcWk5QwA3GIAPxQEeOR0rsI8HbDHQz5Gta8pVvGnnTNSbZVEVvkQ==", "dev": true, "funding": { "type": "github", @@ -404,9 +420,9 @@ "dev": true }, "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz", + "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==", "dev": true, "funding": { "type": "github", @@ -414,13 +430,13 @@ } }, "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz", + "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==", "dev": true, "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, "funding": { "type": "github", @@ -451,9 +467,9 @@ } }, "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz", + "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==", "dev": true, "funding": { "type": "github", @@ -461,9 +477,9 @@ } }, "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz", + "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==", "dev": true, "funding": { "type": "github", @@ -471,12 +487,15 @@ } }, "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "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==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/js-yaml": { @@ -492,9 +511,9 @@ } }, "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz", + "integrity": "sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==", "dev": true, "funding": { "type": "github", @@ -502,25 +521,24 @@ } }, "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz", + "integrity": "sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A==", "dev": true, - "dependencies": { - "repeat-string": "^1.0.0" - }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", + "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", "dev": true, "dependencies": { - "unist-util-visit": "^2.0.0" + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^3.0.0" }, "funding": { "type": "opencollective", @@ -528,14 +546,14 @@ } }, "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "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": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" }, "funding": { "type": "opencollective", @@ -543,14 +561,14 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "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==", "dev": true, "dependencies": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" }, "funding": { "type": "opencollective", @@ -558,16 +576,21 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.0.tgz", + "integrity": "sha512-uj2G60sb7z1PNOeElFwCC9b/Se/lFXuLhVKFOAY2EHz/VvgbupTQRNXPoZl7rGpXYL6BNZgcgaybrlSWbo7n/g==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "@types/unist": "^2.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "parse-entities": "^3.0.0", + "unist-util-stringify-position": "^3.0.0" }, "funding": { "type": "opencollective", @@ -575,12 +598,12 @@ } }, "node_modules/mdast-util-frontmatter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", - "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz", + "integrity": "sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==", "dev": true, "dependencies": { - "micromark-extension-frontmatter": "^0.2.0" + "micromark-extension-frontmatter": "^1.0.0" }, "funding": { "type": "opencollective", @@ -588,16 +611,15 @@ } }, "node_modules/mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-1.0.0.tgz", + "integrity": "sha512-JY4qImsTqivQ0Gl3qvdaizCpomFaNrHnjEhNjNNKeNEA5jZHAJDYu1+yO4V9jn4/ti8GrKdAScaT4F71knoxsA==", "dev": true, "dependencies": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" + "mdast-util-gfm-autolink-literal": "^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" }, "funding": { "type": "opencollective", @@ -605,14 +627,15 @@ } }, "node_modules/mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.1.tgz", + "integrity": "sha512-dCUDNYXCytIonTHIUOZXp5S3FWd1XAt6IVH1fBfH6BbUF9U+9m1T9XllfHPvKJCccKNI+0RlYmQJ0rfMTDxEtA==", "dev": true, "dependencies": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" }, "funding": { "type": "opencollective", @@ -620,12 +643,13 @@ } }, "node_modules/mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.0.tgz", + "integrity": "sha512-gM9ipBUdRxYa6Yq1Hd8Otg6jEn/dRxFZ1F9ZX4QHosHOexLGqNZO2dh0A+YFbUEd10RcKjnjb4jOfJJzoXXUew==", "dev": true, "dependencies": { - "mdast-util-to-markdown": "^0.6.0" + "@types/mdast": "^3.0.3", + "mdast-util-to-markdown": "^1.0.0" }, "funding": { "type": "opencollective", @@ -633,13 +657,13 @@ } }, "node_modules/mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.1.tgz", + "integrity": "sha512-NByKuaSg5+M6r9DZBPXFUmhMHGFf9u+WE76EeStN01ghi8hpnydiWBXr+qj0XCRWI7SAMNtEjGvip6zci9axQA==", "dev": true, "dependencies": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" + "markdown-table": "^3.0.0", + "mdast-util-to-markdown": "^1.0.0" }, "funding": { "type": "opencollective", @@ -647,12 +671,13 @@ } }, "node_modules/mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.0.tgz", + "integrity": "sha512-dwkzOTjQe8JCCHVE3Cb0pLHTYLudf7t9WCAnb20jI8/dW+VHjgWhjtIUVA3oigNkssgjEwX+i+3XesUdCnXGyA==", "dev": true, "dependencies": { - "mdast-util-to-markdown": "~0.6.0" + "@types/mdast": "^3.0.3", + "mdast-util-to-markdown": "^1.0.0" }, "funding": { "type": "opencollective", @@ -660,34 +685,20 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-11.2.1.tgz", + "integrity": "sha512-tvy3qzo/SKxkQ9smt7D7NX+4nAQng+eK4/A7PVUzAT4+n0NtgaDRyZA2DmGExAbW7xUX4O+4jkO2u94dNStssw==", "dev": true, "dependencies": { + "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" }, "funding": { "type": "opencollective", @@ -695,17 +706,18 @@ } }, "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.2.tgz", + "integrity": "sha512-G8/IwiB2clO8tJsw/fBNNilZ8wDKJnnOts0a3Ls6DVKiy+K7wHGfZDMxLrYXW3QuHiNOZiSU1KduL1oBY4MQqQ==", "dev": true, "dependencies": { + "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "parse-entities": "^3.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", @@ -713,9 +725,9 @@ } }, "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", "dev": true, "funding": { "type": "opencollective", @@ -729,9 +741,9 @@ "dev": true }, "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.5.tgz", + "integrity": "sha512-QfjERBnPw0G9mxhOCkkbRP0n8SX8lIBLrEKeEVceviUukqVMv3hWE4AgNTOK/W6GWqtPvvIHg2Apl3j1Dxm6aQ==", "dev": true, "funding": [ { @@ -744,17 +756,66 @@ } ], "dependencies": { + "@types/debug": "^4.0.0", "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.1.tgz", + "integrity": "sha512-vEOw8hcQ3nwHkKKNIyP9wBi8M50zjNajtmI+cCUWcVfJS+v5/3WCh4PLKf7PPRZFUutjzl4ZjlHwBWUKfb/SkA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0" } }, "node_modules/micromark-extension-frontmatter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", - "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz", + "integrity": "sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==", "dev": true, "dependencies": { - "fault": "^1.0.0" + "fault": "^2.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0" }, "funding": { "type": "opencollective", @@ -762,17 +823,18 @@ } }, "node_modules/micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-1.0.0.tgz", + "integrity": "sha512-OjqbQPL1Vec/4l5hnC8WnMNmWwgrT9JvzR2udqIGrGKecZsdwY9GAWZ5482CuD12SXuHNj8aS8epni6ip0Pwog==", "dev": true, "dependencies": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" }, "funding": { "type": "opencollective", @@ -780,12 +842,15 @@ } }, "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.0.tgz", + "integrity": "sha512-t+K0aPK32mXypVTEKV+WRfoT/Rb7MERDgHZVRr56NXpyQQhgMk72QnK4NljYUlrgbuesH+MxiPQwThzqRDIwvA==", "dev": true, "dependencies": { - "micromark": "~2.11.3" + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" }, "funding": { "type": "opencollective", @@ -793,12 +858,16 @@ } }, "node_modules/micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-fzGYXWz9HPWH1uHqYwdyR8XpEtuoYVHUjTdPQTnl3ETVZOQe1NXMwE3RA7AMqeON52hG+kO9g1/P1+pLONBSMQ==", "dev": true, "dependencies": { - "micromark": "~2.11.0" + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" }, "funding": { "type": "opencollective", @@ -806,12 +875,15 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.0.tgz", + "integrity": "sha512-OATRuHDgEAT/aaJJRSdU12V+s01kNSnJ0jumdfLq5mPy0F5DkR3zbTSFLH4tjVYM0/kEG6umxIhHY62mFe4z5Q==", "dev": true, "dependencies": { - "micromark": "~2.11.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" }, "funding": { "type": "opencollective", @@ -819,272 +891,586 @@ } }, "node_modules/micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.0.tgz", + "integrity": "sha512-GGUZhzQrOdHR8RHU2ru6K+4LMlj+pBdNuXRtw5prOflDOk2hHqDB0xEgej1AHJ2VETeycX7tzQh2EmaTUOmSKg==", "dev": true, + "dependencies": { + "micromark-util-types": "^1.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.0.tgz", + "integrity": "sha512-3tkHCq1NNwijtwpjYba9+rl1yvQ4xYg8iQpUAfTJRyq8MtIEsBUF/vW6B9Gh8Qwy1hE2FmpyHhP4jnFAt61zLg==", "dev": true, "dependencies": { - "micromark": "~2.11.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "node_modules/micromark-factory-label": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz", + "integrity": "sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/rehype-raw": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-5.1.0.tgz", - "integrity": "sha512-MDvHAb/5mUnif2R+0IPCYJU8WjHa9UzGtM/F4AVy5GixPlDZ1z3HacYy4xojDU+uBa+0X/3PIfyQI26/2ljJNA==", + "node_modules/micromark-factory-title": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz", + "integrity": "sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "hast-util-raw": "^6.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/rehype-stringify": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-8.0.0.tgz", - "integrity": "sha512-VkIs18G0pj2xklyllrPSvdShAV36Ff3yE5PUO9u36f6+2qJFnn22Z5gKwBOwgXviux4UC7K+/j13AnZfPICi/g==", + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "hast-util-to-html": "^7.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/remark-frontmatter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", - "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "mdast-util-frontmatter": "^0.2.0", - "micromark-extension-frontmatter": "^0.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, - "node_modules/remark-gfm": { + "node_modules/micromark-util-chunked": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-symbol": "^1.0.0" } }, - "node_modules/remark-html": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-13.0.1.tgz", - "integrity": "sha512-K5KQCXWVz+harnyC+UVM/J9eJWCgjYRqFeZoZf2NgP0iFbuuw/RgMZv3MA34b/OEpGnstl3oiOUtZzD3tJ+CBw==", + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz", + "integrity": "sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "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==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz", + "integrity": "sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz", + "integrity": "sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz", + "integrity": "sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "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==", "dev": true, "dependencies": { - "hast-util-sanitize": "^3.0.0", - "hast-util-to-html": "^7.0.0", - "mdast-util-to-hast": "^10.0.0" + "boolbase": "^1.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "node_modules/parse-entities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz", + "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==", "dev": true, "dependencies": { - "mdast-util-from-markdown": "^0.8.0" + "character-entities": "^2.0.0", + "character-entities-legacy": "^2.0.0", + "character-reference-invalid": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/remark-rehype": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz", - "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==", + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/property-information": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz", + "integrity": "sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype-raw": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.0.tgz", + "integrity": "sha512-12j2UiiYJgZFdjnHDny77NY5BF3eW4Jsl0vtgL1DWdTzcHjPpbhumU+GtPUdivEWwQc8x9OdEuO0oxaGz7Tvyg==", "dev": true, "dependencies": { - "mdast-util-to-hast": "^10.2.0" + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "node_modules/rehype-stringify": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.2.tgz", + "integrity": "sha512-BuVA6lAEYtOpXO2xuHLohAzz8UNoQAxAqYRqh4QEEtU39Co+P1JBZhw6wXA9hMWp+JLcmrxWH8+UKcNSr443Fw==", "dev": true, - "engines": { - "node": ">=0.10" + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "node_modules/remark-frontmatter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.0.tgz", + "integrity": "sha512-0J+2czWAS9sz9baJJel4tTUnNhMI7wYgih99Hxhdeq2GpdI1Ctu0iol6zAsWw5xa+jLsZXNiwEnnJAJo3XX3hw==", "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-frontmatter": "^1.0.0", + "micromark-extension-frontmatter": "^1.0.0", + "unified": "^10.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "node_modules/remark-gfm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-2.0.0.tgz", + "integrity": "sha512-waIv4Tjcd2CTUDxKRYzuPyIHw1FoX4H2GjXAzXV9PxQWb+dU4fJivd/FZ+nxyzPARrqTjMIkwIwPoWNbpBhjcQ==", "dev": true, "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^1.0.0", + "micromark-extension-gfm": "^1.0.0", + "unified": "^10.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "node_modules/remark-html": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-14.0.1.tgz", + "integrity": "sha512-a/x5bTlFrkwYkz43zuJIk0m0IuS5Rx8zLztGwdzmAdUj0Hsi4C4nkJ8gTQRNXY/ET/gMrqQORMMI0arRItq/aQ==", "dev": true, "dependencies": { - "inline-style-parser": "0.1.1" + "@types/mdast": "^3.0.0", + "hast-util-sanitize": "^4.0.0", + "hast-util-to-html": "^8.0.0", + "mdast-util-to-hast": "^11.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/to-vfile": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.1.0.tgz", - "integrity": "sha512-t1c42ASuWo39ddjh2R+hX5+kbDcc2CmbhaTSJkVavDYMjnFkpq0L4LeF+rcPoDdieGUsFaivSSkmwuFpYzhBZw==", + "node_modules/remark-parse": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz", + "integrity": "sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==", "dev": true, "dependencies": { - "is-buffer": "^2.0.0", - "vfile": "^5.0.0" + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/to-vfile/node_modules/unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", + "node_modules/remark-rehype": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-9.0.0.tgz", + "integrity": "sha512-SFA+mPWu45ynFPKeT3h5eNNVAYoMp3wizr3KSKh1IQ9L6dLSyD25/df6/vv8EW8ji3O3dnZGdbLQl592Tn+ydg==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0" + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^11.0.0", + "unified": "^10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/to-vfile/node_modules/vfile": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.1.tgz", - "integrity": "sha512-lbcf0k66x96Syy36HG+nIBFaSD/fAk589q4nETZTr0JW7eRRmrVo1vHwbD8NlHszUM5ICtFSWQ5xHC292hYZ/w==", + "node_modules/space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.1.tgz", + "integrity": "sha512-gmMQxKXPWIO3NXNSPyWNhlYcBNGpPA/487D+9dLPnU4xBnIrnHdr8cv5rGJOS/1BRxEXRb7uKwg7BA36IWV7xg==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^2.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/to-vfile/node_modules/vfile-message": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.1.tgz", - "integrity": "sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==", + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" + "inline-style-parser": "0.1.1" + } + }, + "node_modules/to-vfile": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.2.tgz", + "integrity": "sha512-7WL+coet3qyaYb5vrVrfLtOUHgNv9E1D5SIsyVKmHKcgZefy77WMQRk7FByqGKNInoHOlY6xkTGymo29AwjUKg==", + "dev": true, + "dependencies": { + "is-buffer": "^2.0.0", + "vfile": "^5.1.0" }, "funding": { "type": "opencollective", @@ -1092,9 +1478,9 @@ } }, "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", + "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", "dev": true, "funding": { "type": "github", @@ -1102,17 +1488,18 @@ } }, "node_modules/unified": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz", - "integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz", + "integrity": "sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g==", "dev": true, "dependencies": { - "bail": "^1.0.0", + "@types/unist": "^2.0.0", + "bail": "^2.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" }, "funding": { "type": "opencollective", @@ -1120,19 +1507,22 @@ } }, "node_modules/unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", "dev": true, "funding": { "type": "opencollective", @@ -1140,9 +1530,9 @@ } }, "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", "dev": true, "funding": { "type": "opencollective", @@ -1150,9 +1540,9 @@ } }, "node_modules/unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "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, "funding": { "type": "opencollective", @@ -1175,33 +1565,13 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-select/node_modules/unist-util-is": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.0.tgz", - "integrity": "sha512-pWspZ+AvTqYbC+xWeRmzGqbcY8Na08Eowlfs2xchWTYot8vBBAq+syrE/LWS0bw1D/JOu4lwzDbEb6Mz13tK+g==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-select/node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", + "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", "dev": true, "dependencies": { - "@types/unist": "^2.0.2" + "@types/unist": "^2.0.0" }, "funding": { "type": "opencollective", @@ -1209,14 +1579,14 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.0.0.tgz", + "integrity": "sha512-3HWTvrtU10/E7qgPznBfiOyG0TXj9W8c1GSfaI8L9GkaG1pLePiQPZ7E35a0R3ToQ/zcy4Im6aZ9WBgOTnv1MQ==", "dev": true, "dependencies": { "@types/unist": "^2.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", @@ -1224,33 +1594,23 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "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": "^4.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-is": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.0.tgz", - "integrity": "sha512-pWspZ+AvTqYbC+xWeRmzGqbcY8Na08Eowlfs2xchWTYot8vBBAq+syrE/LWS0bw1D/JOu4lwzDbEb6Mz13tK+g==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-visit/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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.0.0.tgz", + "integrity": "sha512-CVaLOYPM/EaFTYMytbaju3Tw4QI3DHnHFnL358FkEu0hZOzSm/hqBdVwOQDR60jF5ZzhB1tlZlRH0ll/yekZIQ==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", @@ -1262,15 +1622,15 @@ } }, "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", + "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" }, "funding": { "type": "opencollective", @@ -1278,23 +1638,27 @@ } }, "node_modules/vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", + "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "unist-util-stringify-position": "^3.0.0" }, "funding": { "type": "opencollective", @@ -1302,28 +1666,19 @@ } }, "node_modules/web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.0.tgz", + "integrity": "sha512-dE7ELZRVWh0ceQsRgkjLgsAvwTuv3kcjSY/hLjqL0llleUlQBDjE9JkB9FCBY5F2mnFEwiyJoowl8+NVGHe8dw==", "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", "dev": true, "funding": { "type": "github", @@ -1332,34 +1687,55 @@ } }, "dependencies": { + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, "@types/hast": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", - "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", "dev": true, "requires": { "@types/unist": "*" } }, "@types/mdast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", - "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", "dev": true, "requires": { "@types/unist": "*" } }, + "@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, "@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA==", "dev": true }, "@types/unist": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", - "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, "argparse": { @@ -1369,9 +1745,9 @@ "dev": true }, "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz", + "integrity": "sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA==", "dev": true }, "boolbase": { @@ -1381,39 +1757,39 @@ "dev": true }, "ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz", + "integrity": "sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA==", "dev": true }, "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz", + "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==", "dev": true }, "character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.0.0.tgz", + "integrity": "sha512-dwT2xh5ZhUAjyP96k57ilMKoTQyASaw9IAMR9U5c1lCu2RUni6O6jxfpUEdO2RcPT6TJFvr8pqsbami4Jk+2oA==", "dev": true }, "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", + "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", "dev": true }, "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz", + "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==", "dev": true }, "comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", "dev": true }, "css-selector-parser": { @@ -1423,18 +1799,18 @@ "dev": true }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" } }, "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true }, "extend": { @@ -1444,9 +1820,9 @@ "dev": true }, "fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.0.tgz", + "integrity": "sha512-JsDj9LFcoC+4ChII1QpXPA7YIaY8zmqPYw7h9j5n7St7a0BBKfNnwEBAUQRBx70o2q4rs+BeSNHk8Exm6xE7fQ==", "dev": true, "requires": { "format": "^0.2.0" @@ -1459,147 +1835,144 @@ "dev": true }, "hast-to-hyperscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz", + "integrity": "sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==", "dev": true, "requires": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" + "unist-util-is": "^5.0.0", + "web-namespaces": "^2.0.0" } }, "hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", "dev": true, "requires": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" } }, "hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.1.tgz", + "integrity": "sha512-ag0fiZfRWsPiR1udvnSbaazJLGv8qd8E+/e3rW8rUZhbKG4HNJmFL4QkEceN+22BgE+uozXY30z/s+2dL6Z++g==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } }, "hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", + "dev": true, + "requires": { + "@types/hast": "^2.0.0" + } }, "hast-util-raw": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz", - "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.0.tgz", + "integrity": "sha512-K2ofsY59XqrtBNUAkvT2vPdyNPUchjj1Z0FxUOwBadS6R5h9O3LaRZqpukQ+YfgQ/IMy9GGMB/Nlpzpu+cuuMA==", "dev": true, "requires": { "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "dependencies": { - "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - } + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" } }, "hast-util-sanitize": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.2.tgz", - "integrity": "sha512-+2I0x2ZCAyiZOO/sb4yNLFmdwPBnyJ4PBkVTUMKMqBwYNA+lXSgOmoRXlJFazoyid9QPogRRKgKhVEodv181sA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", "dev": true, "requires": { - "xtend": "^4.0.0" + "@types/hast": "^2.0.0" } }, "hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.2.tgz", + "integrity": "sha512-ipLhUTMyyJi9F/LXaNDG9BrRdshP6obCfmUZYbE/+T639IdzqAOkKN4DyrEyID0gbb+rsC3PKf0XlviZwzomhw==", "dev": true, "requires": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "unist-util-is": "^5.0.0" } }, "hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz", + "integrity": "sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==", "dev": true, "requires": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-to-hyperscript": "^10.0.0", + "property-information": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" } }, "hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", "dev": true }, "hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", "dev": true, "requires": { "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" } }, "highlight.js": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.0.1.tgz", - "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.2.0.tgz", + "integrity": "sha512-JOySjtOEcyG8s4MLR2MNbLUyaXqUunmSnL2kdV/KuGJOmHZuAR5xC54Ko7goAXBWNhf09Vy3B+U7vR62UZ/0iw==", "dev": true }, "html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.0.tgz", + "integrity": "sha512-4OYzQQsBt0G9bJ/nM9/DDsjm4+fVdzAaPJJcWk5QwA3GIAPxQEeOR0rsI8HbDHQz5Gta8pVvGnnTNSbZVEVvkQ==", "dev": true }, "inline-style-parser": { @@ -1609,19 +1982,19 @@ "dev": true }, "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz", + "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==", "dev": true }, "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz", + "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==", "dev": true, "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" } }, "is-buffer": { @@ -1631,21 +2004,21 @@ "dev": true }, "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz", + "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==", "dev": true }, "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz", + "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==", "dev": true }, "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "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==", "dev": true }, "js-yaml": { @@ -1658,174 +2031,169 @@ } }, "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz", + "integrity": "sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==", "dev": true }, "markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dev": true, - "requires": { - "repeat-string": "^1.0.0" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz", + "integrity": "sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A==", + "dev": true }, "mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", + "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", "dev": true, "requires": { - "unist-util-visit": "^2.0.0" + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^3.0.0" }, "dependencies": { "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "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": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" } } } }, "mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "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==", "dev": true, "requires": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" } }, "mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.0.tgz", + "integrity": "sha512-uj2G60sb7z1PNOeElFwCC9b/Se/lFXuLhVKFOAY2EHz/VvgbupTQRNXPoZl7rGpXYL6BNZgcgaybrlSWbo7n/g==", "dev": true, "requires": { "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "@types/unist": "^2.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "parse-entities": "^3.0.0", + "unist-util-stringify-position": "^3.0.0" } }, "mdast-util-frontmatter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", - "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz", + "integrity": "sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==", "dev": true, "requires": { - "micromark-extension-frontmatter": "^0.2.0" + "micromark-extension-frontmatter": "^1.0.0" } }, "mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-1.0.0.tgz", + "integrity": "sha512-JY4qImsTqivQ0Gl3qvdaizCpomFaNrHnjEhNjNNKeNEA5jZHAJDYu1+yO4V9jn4/ti8GrKdAScaT4F71knoxsA==", "dev": true, "requires": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" + "mdast-util-gfm-autolink-literal": "^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-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.1.tgz", + "integrity": "sha512-dCUDNYXCytIonTHIUOZXp5S3FWd1XAt6IVH1fBfH6BbUF9U+9m1T9XllfHPvKJCccKNI+0RlYmQJ0rfMTDxEtA==", "dev": true, "requires": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" } }, "mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.0.tgz", + "integrity": "sha512-gM9ipBUdRxYa6Yq1Hd8Otg6jEn/dRxFZ1F9ZX4QHosHOexLGqNZO2dh0A+YFbUEd10RcKjnjb4jOfJJzoXXUew==", "dev": true, "requires": { - "mdast-util-to-markdown": "^0.6.0" + "@types/mdast": "^3.0.3", + "mdast-util-to-markdown": "^1.0.0" } }, "mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.1.tgz", + "integrity": "sha512-NByKuaSg5+M6r9DZBPXFUmhMHGFf9u+WE76EeStN01ghi8hpnydiWBXr+qj0XCRWI7SAMNtEjGvip6zci9axQA==", "dev": true, "requires": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" + "markdown-table": "^3.0.0", + "mdast-util-to-markdown": "^1.0.0" } }, "mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.0.tgz", + "integrity": "sha512-dwkzOTjQe8JCCHVE3Cb0pLHTYLudf7t9WCAnb20jI8/dW+VHjgWhjtIUVA3oigNkssgjEwX+i+3XesUdCnXGyA==", "dev": true, "requires": { - "mdast-util-to-markdown": "~0.6.0" + "@types/mdast": "^3.0.3", + "mdast-util-to-markdown": "^1.0.0" } }, "mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-11.2.1.tgz", + "integrity": "sha512-tvy3qzo/SKxkQ9smt7D7NX+4nAQng+eK4/A7PVUzAT4+n0NtgaDRyZA2DmGExAbW7xUX4O+4jkO2u94dNStssw==", "dev": true, "requires": { + "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "dependencies": { - "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - } + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" } }, "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.2.tgz", + "integrity": "sha512-G8/IwiB2clO8tJsw/fBNNilZ8wDKJnnOts0a3Ls6DVKiy+K7wHGfZDMxLrYXW3QuHiNOZiSU1KduL1oBY4MQqQ==", "dev": true, "requires": { + "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "parse-entities": "^3.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" } }, "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", "dev": true }, "mdurl": { @@ -1835,80 +2203,305 @@ "dev": true }, "micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.5.tgz", + "integrity": "sha512-QfjERBnPw0G9mxhOCkkbRP0n8SX8lIBLrEKeEVceviUukqVMv3hWE4AgNTOK/W6GWqtPvvIHg2Apl3j1Dxm6aQ==", "dev": true, "requires": { + "@types/debug": "^4.0.0", "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0" + } + }, + "micromark-core-commonmark": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.1.tgz", + "integrity": "sha512-vEOw8hcQ3nwHkKKNIyP9wBi8M50zjNajtmI+cCUWcVfJS+v5/3WCh4PLKf7PPRZFUutjzl4ZjlHwBWUKfb/SkA==", + "dev": true, + "requires": { + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0" } }, "micromark-extension-frontmatter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", - "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz", + "integrity": "sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==", "dev": true, "requires": { - "fault": "^1.0.0" + "fault": "^2.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0" } }, "micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-1.0.0.tgz", + "integrity": "sha512-OjqbQPL1Vec/4l5hnC8WnMNmWwgrT9JvzR2udqIGrGKecZsdwY9GAWZ5482CuD12SXuHNj8aS8epni6ip0Pwog==", "dev": true, "requires": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, "micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.0.tgz", + "integrity": "sha512-t+K0aPK32mXypVTEKV+WRfoT/Rb7MERDgHZVRr56NXpyQQhgMk72QnK4NljYUlrgbuesH+MxiPQwThzqRDIwvA==", "dev": true, "requires": { - "micromark": "~2.11.3" + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, "micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-fzGYXWz9HPWH1uHqYwdyR8XpEtuoYVHUjTdPQTnl3ETVZOQe1NXMwE3RA7AMqeON52hG+kO9g1/P1+pLONBSMQ==", "dev": true, "requires": { - "micromark": "~2.11.0" + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, "micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.0.tgz", + "integrity": "sha512-OATRuHDgEAT/aaJJRSdU12V+s01kNSnJ0jumdfLq5mPy0F5DkR3zbTSFLH4tjVYM0/kEG6umxIhHY62mFe4z5Q==", "dev": true, "requires": { - "micromark": "~2.11.0" + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, "micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.0.tgz", + "integrity": "sha512-GGUZhzQrOdHR8RHU2ru6K+4LMlj+pBdNuXRtw5prOflDOk2hHqDB0xEgej1AHJ2VETeycX7tzQh2EmaTUOmSKg==", + "dev": true, + "requires": { + "micromark-util-types": "^1.0.0" + } }, "micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.0.tgz", + "integrity": "sha512-3tkHCq1NNwijtwpjYba9+rl1yvQ4xYg8iQpUAfTJRyq8MtIEsBUF/vW6B9Gh8Qwy1hE2FmpyHhP4jnFAt61zLg==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz", + "integrity": "sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz", + "integrity": "sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dev": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-encode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz", + "integrity": "sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg==", + "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==", + "dev": true + }, + "micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz", + "integrity": "sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ==", "dev": true, "requires": { - "micromark": "~2.11.0" + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" } }, + "micromark-util-symbol": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz", + "integrity": "sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ==", + "dev": true + }, + "micromark-util-types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz", + "integrity": "sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1916,26 +2509,26 @@ "dev": true }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { "boolbase": "^1.0.0" } }, "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz", + "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==", "dev": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "character-entities": "^2.0.0", + "character-entities-legacy": "^2.0.0", + "character-reference-invalid": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" } }, "parse5": { @@ -1945,102 +2538,107 @@ "dev": true }, "property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "dev": true, - "requires": { - "xtend": "^4.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz", + "integrity": "sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg==", + "dev": true }, "rehype-raw": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-5.1.0.tgz", - "integrity": "sha512-MDvHAb/5mUnif2R+0IPCYJU8WjHa9UzGtM/F4AVy5GixPlDZ1z3HacYy4xojDU+uBa+0X/3PIfyQI26/2ljJNA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.0.tgz", + "integrity": "sha512-12j2UiiYJgZFdjnHDny77NY5BF3eW4Jsl0vtgL1DWdTzcHjPpbhumU+GtPUdivEWwQc8x9OdEuO0oxaGz7Tvyg==", "dev": true, "requires": { - "hast-util-raw": "^6.1.0" + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" } }, "rehype-stringify": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-8.0.0.tgz", - "integrity": "sha512-VkIs18G0pj2xklyllrPSvdShAV36Ff3yE5PUO9u36f6+2qJFnn22Z5gKwBOwgXviux4UC7K+/j13AnZfPICi/g==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.2.tgz", + "integrity": "sha512-BuVA6lAEYtOpXO2xuHLohAzz8UNoQAxAqYRqh4QEEtU39Co+P1JBZhw6wXA9hMWp+JLcmrxWH8+UKcNSr443Fw==", "dev": true, "requires": { - "hast-util-to-html": "^7.1.1" + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" } }, "remark-frontmatter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", - "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.0.tgz", + "integrity": "sha512-0J+2czWAS9sz9baJJel4tTUnNhMI7wYgih99Hxhdeq2GpdI1Ctu0iol6zAsWw5xa+jLsZXNiwEnnJAJo3XX3hw==", "dev": true, "requires": { - "mdast-util-frontmatter": "^0.2.0", - "micromark-extension-frontmatter": "^0.2.0" + "@types/mdast": "^3.0.0", + "mdast-util-frontmatter": "^1.0.0", + "micromark-extension-frontmatter": "^1.0.0", + "unified": "^10.0.0" } }, "remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-2.0.0.tgz", + "integrity": "sha512-waIv4Tjcd2CTUDxKRYzuPyIHw1FoX4H2GjXAzXV9PxQWb+dU4fJivd/FZ+nxyzPARrqTjMIkwIwPoWNbpBhjcQ==", "dev": true, "requires": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^1.0.0", + "micromark-extension-gfm": "^1.0.0", + "unified": "^10.0.0" } }, "remark-html": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-13.0.1.tgz", - "integrity": "sha512-K5KQCXWVz+harnyC+UVM/J9eJWCgjYRqFeZoZf2NgP0iFbuuw/RgMZv3MA34b/OEpGnstl3oiOUtZzD3tJ+CBw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-14.0.1.tgz", + "integrity": "sha512-a/x5bTlFrkwYkz43zuJIk0m0IuS5Rx8zLztGwdzmAdUj0Hsi4C4nkJ8gTQRNXY/ET/gMrqQORMMI0arRItq/aQ==", "dev": true, "requires": { - "hast-util-sanitize": "^3.0.0", - "hast-util-to-html": "^7.0.0", - "mdast-util-to-hast": "^10.0.0" + "@types/mdast": "^3.0.0", + "hast-util-sanitize": "^4.0.0", + "hast-util-to-html": "^8.0.0", + "mdast-util-to-hast": "^11.0.0", + "unified": "^10.0.0" } }, "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz", + "integrity": "sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==", "dev": true, "requires": { - "mdast-util-from-markdown": "^0.8.0" + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" } }, "remark-rehype": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz", - "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-9.0.0.tgz", + "integrity": "sha512-SFA+mPWu45ynFPKeT3h5eNNVAYoMp3wizr3KSKh1IQ9L6dLSyD25/df6/vv8EW8ji3O3dnZGdbLQl592Tn+ydg==", "dev": true, "requires": { - "mdast-util-to-hast": "^10.2.0" + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^11.0.0", + "unified": "^10.0.0" } }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", "dev": true }, "stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.1.tgz", + "integrity": "sha512-gmMQxKXPWIO3NXNSPyWNhlYcBNGpPA/487D+9dLPnU4xBnIrnHdr8cv5rGJOS/1BRxEXRb7uKwg7BA36IWV7xg==", "dev": true, "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^2.0.0" } }, "style-to-object": { @@ -2053,90 +2651,61 @@ } }, "to-vfile": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.1.0.tgz", - "integrity": "sha512-t1c42ASuWo39ddjh2R+hX5+kbDcc2CmbhaTSJkVavDYMjnFkpq0L4LeF+rcPoDdieGUsFaivSSkmwuFpYzhBZw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.2.tgz", + "integrity": "sha512-7WL+coet3qyaYb5vrVrfLtOUHgNv9E1D5SIsyVKmHKcgZefy77WMQRk7FByqGKNInoHOlY6xkTGymo29AwjUKg==", "dev": true, "requires": { "is-buffer": "^2.0.0", - "vfile": "^5.0.0" - }, - "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.1.tgz", - "integrity": "sha512-lbcf0k66x96Syy36HG+nIBFaSD/fAk589q4nETZTr0JW7eRRmrVo1vHwbD8NlHszUM5ICtFSWQ5xHC292hYZ/w==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.1.tgz", - "integrity": "sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } + "vfile": "^5.1.0" } }, "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", + "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", "dev": true }, "unified": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz", - "integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz", + "integrity": "sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g==", "dev": true, "requires": { - "bail": "^1.0.0", + "@types/unist": "^2.0.0", + "bail": "^2.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" } }, "unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } }, "unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", "dev": true }, "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", "dev": true }, "unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "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 }, "unist-util-select": { @@ -2149,52 +2718,32 @@ "nth-check": "^2.0.0", "unist-util-is": "^5.0.0", "zwitch": "^2.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.0.tgz", - "integrity": "sha512-pWspZ+AvTqYbC+xWeRmzGqbcY8Na08Eowlfs2xchWTYot8vBBAq+syrE/LWS0bw1D/JOu4lwzDbEb6Mz13tK+g==", - "dev": true - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "dev": true - } } }, "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", + "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", "dev": true, "requires": { - "@types/unist": "^2.0.2" + "@types/unist": "^2.0.0" } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.0.0.tgz", + "integrity": "sha512-3HWTvrtU10/E7qgPznBfiOyG0TXj9W8c1GSfaI8L9GkaG1pLePiQPZ7E35a0R3ToQ/zcy4Im6aZ9WBgOTnv1MQ==", "dev": true, "requires": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "unist-util-visit-parents": "^5.0.0" }, "dependencies": { - "unist-util-is": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.0.tgz", - "integrity": "sha512-pWspZ+AvTqYbC+xWeRmzGqbcY8Na08Eowlfs2xchWTYot8vBBAq+syrE/LWS0bw1D/JOu4lwzDbEb6Mz13tK+g==", - "dev": true - }, "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.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.0.0.tgz", + "integrity": "sha512-CVaLOYPM/EaFTYMytbaju3Tw4QI3DHnHFnL358FkEu0hZOzSm/hqBdVwOQDR60jF5ZzhB1tlZlRH0ll/yekZIQ==", "dev": true, "requires": { "@types/unist": "^2.0.0", @@ -2204,59 +2753,57 @@ } }, "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "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, "requires": { "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "unist-util-is": "^5.0.0" } }, "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", + "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", "dev": true, "requires": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" } }, "vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", - "dev": true + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } }, "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", + "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", "dev": true, "requires": { "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "unist-util-stringify-position": "^3.0.0" } }, "web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.0.tgz", + "integrity": "sha512-dE7ELZRVWh0ceQsRgkjLgsAvwTuv3kcjSY/hLjqL0llleUlQBDjE9JkB9FCBY5F2mnFEwiyJoowl8+NVGHe8dw==", "dev": true }, "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", "dev": true } } diff --git a/tools/doc/package.json b/tools/doc/package.json index 92ac19660d5b42..444576a55f1288 100644 --- a/tools/doc/package.json +++ b/tools/doc/package.json @@ -7,19 +7,19 @@ "node": ">=14.8.0" }, "devDependencies": { - "highlight.js": "11.0.1", - "js-yaml": "4.1.0", - "rehype-raw": "5.1.0", - "rehype-stringify": "8.0.0", - "remark-frontmatter": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-html": "13.0.1", - "remark-parse": "^9.0.0", - "remark-rehype": "8.1.0", - "to-vfile": "7.1.0", - "unified": "9.2.1", - "unist-util-select": "4.0.0", - "unist-util-visit": "3.1.0" + "highlight.js": "^11.2.0", + "js-yaml": "^4.1.0", + "rehype-raw": "^6.1.0", + "rehype-stringify": "^9.0.2", + "remark-frontmatter": "^4.0.0", + "remark-gfm": "^2.0.0", + "remark-html": "^14.0.1", + "remark-parse": "^10.0.0", + "remark-rehype": "^9.0.0", + "to-vfile": "^7.2.2", + "unified": "^10.1.0", + "unist-util-select": "^4.0.0", + "unist-util-visit": "^4.0.0" }, "bin": { "node-doc-generator": "generate.js" diff --git a/tools/doc/stability.mjs b/tools/doc/stability.mjs index 6b5f182a76e7e0..68d77cc4593ffa 100644 --- a/tools/doc/stability.mjs +++ b/tools/doc/stability.mjs @@ -7,7 +7,7 @@ import htmlStringify from 'rehype-stringify'; import gfm from 'remark-gfm'; import markdown from 'remark-parse'; import remark2rehype from 'remark-rehype'; -import unified from 'unified'; +import { unified } from 'unified'; import { visit } from 'unist-util-visit'; const source = new URL('../../out/doc/api/', import.meta.url); @@ -63,7 +63,7 @@ function createHTML(md) { .use(processStability) .processSync(md); - return file.contents.trim(); + return file.value.trim(); } function processStability() { diff --git a/tools/find-inactive-collaborators.mjs b/tools/find-inactive-collaborators.mjs index 9f7ac239d2df01..5f0173564b69af 100755 --- a/tools/find-inactive-collaborators.mjs +++ b/tools/find-inactive-collaborators.mjs @@ -77,8 +77,8 @@ async function getCollaboratorsFromReadme() { if (line === '### Collaborators') { foundCollaboratorHeading = true; } - if (line.startsWith('**') && isCollaborator) { - const [, name, email] = /^\*\*([^*]+)\*\* <(.+)>/.exec(line); + if (line.startsWith(' **') && isCollaborator) { + const [, name, email] = /^ \*\*([^*]+)\*\* \\<(.+)>/.exec(line); const mailmap = await runGitCommand( `git check-mailmap '${name} <${email}>'` ); @@ -141,8 +141,8 @@ async function moveCollaboratorToEmeritus(peopleToMove) { if (isCollaborator) { if (line.startsWith('* ')) { collaboratorFirstLine = line; - } else if (line.startsWith('**')) { - const [, name, email] = /^\*\*([^*]+)\*\* <(.+)>/.exec(line); + } else if (line.startsWith(' **')) { + const [, name, email] = /^ \*\*([^*]+)\*\* \\<(.+)>/.exec(line); if (peopleToMove.some((entry) => { return entry.name === name && entry.email === email; })) { @@ -158,7 +158,7 @@ async function moveCollaboratorToEmeritus(peopleToMove) { if (isCollaboratorEmeritus) { if (line.startsWith('* ')) { collaboratorFirstLine = line; - } else if (line.startsWith('**')) { + } else if (line.startsWith(' **')) { const currentLine = `${collaboratorFirstLine}\n${line}\n`; // If textToMove is empty, this still works because when undefined is // used in a comparison with <, the result is always false. diff --git a/tools/lint-md.mjs b/tools/lint-md.mjs index b614ae37d81af3..f5e5a47a30e98b 100644 --- a/tools/lint-md.mjs +++ b/tools/lint-md.mjs @@ -1,6 +1,7 @@ import path$b from 'path'; -import require$$0$3, { realpathSync as realpathSync$1, statSync, Stats } from 'fs'; +import process$1 from 'process'; import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url'; +import require$$0$3, { realpathSync as realpathSync$1, statSync, Stats } from 'fs'; import process$2 from 'node:process'; import stream, { PassThrough } from 'node:stream'; import require$$0$2 from 'os'; @@ -13,7 +14,6 @@ import { pathToFileURL as pathToFileURL$1 } from 'node:url'; import assert$2 from 'assert'; import fs$a from 'node:fs'; import { EventEmitter as EventEmitter$1 } from 'node:events'; -import process$1 from 'process'; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; @@ -2197,7 +2197,8 @@ const depth = token => { /** * Quickly scans a glob pattern and returns an object with a handful of * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), - * `glob` (the actual pattern), and `negated` (true if the path starts with `!`). + * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not + * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). * * ```js * const pm = require('picomatch'); @@ -2231,6 +2232,7 @@ const scan$1 = (input, options) => { let braceEscaped = false; let backslashes = false; let negated = false; + let negatedExtglob = false; let finished = false; let braces = 0; let prev; @@ -2342,6 +2344,9 @@ const scan$1 = (input, options) => { isGlob = token.isGlob = true; isExtglob = token.isExtglob = true; finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; + } if (scanToEnd === true) { while (eos() !== true && (code = advance())) { @@ -2396,13 +2401,15 @@ const scan$1 = (input, options) => { isBracket = token.isBracket = true; isGlob = token.isGlob = true; finished = true; - - if (scanToEnd === true) { - continue; - } break; } } + + if (scanToEnd === true) { + continue; + } + + break; } if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { @@ -2493,7 +2500,8 @@ const scan$1 = (input, options) => { isGlob, isExtglob, isGlobstar, - negated + negated, + negatedExtglob }; if (opts.tokens === true) { @@ -2639,7 +2647,7 @@ const parse$e = (input, options) => { START_ANCHOR } = PLATFORM_CHARS; - const globstar = (opts) => { + const globstar = opts => { return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; }; @@ -2689,12 +2697,13 @@ const parse$e = (input, options) => { const eos = () => state.index === len - 1; const peek = state.peek = (n = 1) => input[state.index + n]; - const advance = state.advance = () => input[++state.index]; + const advance = state.advance = () => input[++state.index] || ''; const remaining = () => input.slice(state.index + 1); const consume = (value = '', num = 0) => { state.consumed += value; state.index += num; }; + const append = token => { state.output += token.output != null ? token.output : token.value; consume(token.value); @@ -2750,7 +2759,7 @@ const parse$e = (input, options) => { } } - if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) { + if (extglobs.length && tok.type !== 'paren') { extglobs[extglobs.length - 1].inner += tok.value; } @@ -2782,6 +2791,7 @@ const parse$e = (input, options) => { const extglobClose = token => { let output = token.close + (opts.capture ? ')' : ''); + let rest; if (token.type === 'negate') { let extglobStar = star; @@ -2794,7 +2804,11 @@ const parse$e = (input, options) => { output = token.close = `)$))${extglobStar}`; } - if (token.prev.type === 'bos' && eos()) { + if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + output = token.close = `)${rest})${extglobStar})`; + } + + if (token.prev.type === 'bos') { state.negatedExtglob = true; } } @@ -2903,9 +2917,9 @@ const parse$e = (input, options) => { } if (opts.unescape === true) { - value = advance() || ''; + value = advance(); } else { - value += advance() || ''; + value += advance(); } if (state.brackets === 0) { @@ -3569,7 +3583,7 @@ parse$e.fastpaths = (input, options) => { star = `(${star})`; } - const globstar = (opts) => { + const globstar = opts => { if (opts.noglobstar === true) return star; return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; }; @@ -3855,68 +3869,71 @@ picomatch$3.parse = (pattern, options) => { picomatch$3.scan = (input, options) => scan(input, options); /** - * Create a regular expression from a parsed glob pattern. - * - * ```js - * const picomatch = require('picomatch'); - * const state = picomatch.parse('*.js'); - * // picomatch.compileRe(state[, options]); + * Compile a regular expression from the `state` object returned by the + * [parse()](#parse) method. * - * console.log(picomatch.compileRe(state)); - * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ - * ``` - * @param {String} `state` The object returned from the `.parse` method. + * @param {Object} `state` * @param {Object} `options` - * @return {RegExp} Returns a regex created from the given pattern. + * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. + * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. + * @return {RegExp} * @api public */ -picomatch$3.compileRe = (parsed, options, returnOutput = false, returnState = false) => { +picomatch$3.compileRe = (state, options, returnOutput = false, returnState = false) => { if (returnOutput === true) { - return parsed.output; + return state.output; } const opts = options || {}; const prepend = opts.contains ? '' : '^'; const append = opts.contains ? '' : '$'; - let source = `${prepend}(?:${parsed.output})${append}`; - if (parsed && parsed.negated === true) { + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { source = `^(?!${source}).*$`; } const regex = picomatch$3.toRegex(source, options); if (returnState === true) { - regex.state = parsed; + regex.state = state; } return regex; }; -picomatch$3.makeRe = (input, options, returnOutput = false, returnState = false) => { +/** + * Create a regular expression from a parsed glob pattern. + * + * ```js + * const picomatch = require('picomatch'); + * const state = picomatch.parse('*.js'); + * // picomatch.compileRe(state[, options]); + * + * console.log(picomatch.compileRe(state)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `state` The object returned from the `.parse` method. + * @param {Object} `options` + * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. + * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +picomatch$3.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { if (!input || typeof input !== 'string') { throw new TypeError('Expected a non-empty string'); } - const opts = options || {}; let parsed = { negated: false, fastpaths: true }; - let prefix = ''; - let output; - - if (input.startsWith('./')) { - input = input.slice(2); - prefix = parsed.prefix = './'; - } - if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { - output = parse$d.fastpaths(input, options); + if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { + parsed.output = parse$d.fastpaths(input, options); } - if (output === undefined) { + if (!parsed.output) { parsed = parse$d(input, options); - parsed.prefix = prefix + (parsed.prefix || ''); - } else { - parsed.output = output; } return picomatch$3.compileRe(parsed, options, returnOutput, returnState); @@ -8650,7 +8667,7 @@ function extend$2(target, source) { } -function repeat$1(string, count) { +function repeat(string, count) { var result = '', cycle; for (cycle = 0; cycle < count; cycle += 1) { @@ -8669,7 +8686,7 @@ function isNegativeZero(number) { var isNothing_1 = isNothing; var isObject_1 = isObject$1; var toArray_1 = toArray; -var repeat_1 = repeat$1; +var repeat_1 = repeat; var isNegativeZero_1 = isNegativeZero; var extend_1 = extend$2; @@ -16965,7 +16982,7 @@ const SemVer$6 = semver$2; const parse$4 = parse_1; const {re: re$3, t: t$2} = re$6.exports; -const coerce$I = (version, options) => { +const coerce$2 = (version, options) => { if (version instanceof SemVer$6) { return version } @@ -17011,7 +17028,7 @@ const coerce$I = (version, options) => { return parse$4(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) }; -var coerce_1 = coerce$I; +var coerce_1 = coerce$2; var iterator = function (Yallist) { Yallist.prototype[Symbol.iterator] = function* () { @@ -17796,7 +17813,7 @@ class Range$a { } } - if (range instanceof Comparator$2) { + if (range instanceof Comparator$3) { // just put it in the set and return this.raw = range.value; this.set = [[range]]; @@ -17865,7 +17882,7 @@ class Range$a { // this is a very hot path, and fully deterministic. const memoOpts = Object.keys(this.options).join(','); const memoKey = `parseRange:${memoOpts}:${range}`; - const cached = cache$1.get(memoKey); + const cached = cache.get(memoKey); if (cached) return cached @@ -17900,7 +17917,7 @@ class Range$a { .map(comp => replaceGTE0(comp, this.options)) // in loose mode, throw out any that are not valid comparators .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true) - .map(comp => new Comparator$2(comp, this.options)); + .map(comp => new Comparator$3(comp, this.options)); // if any comparators are the null set, then replace with JUST null set // if more than one comparator, remove any * comparators @@ -17916,7 +17933,7 @@ class Range$a { rangeMap.delete(''); const result = [...rangeMap.values()]; - cache$1.set(memoKey, result); + cache.set(memoKey, result); return result } @@ -17967,10 +17984,10 @@ class Range$a { var range$1 = Range$a; const LRU = lruCache; -const cache$1 = new LRU({ max: 1000 }); +const cache = new LRU({ max: 1000 }); const parseOptions$1 = parseOptions_1; -const Comparator$2 = comparator$1; +const Comparator$3 = comparator$1; const debug$d = debug_1; const SemVer$5 = semver$2; const { @@ -18270,7 +18287,7 @@ const testSet = (set, version, options) => { // even though it's within the range set by the comparators. for (let i = 0; i < set.length; i++) { debug$d(set[i].semver); - if (set[i].semver === Comparator$2.ANY) { + if (set[i].semver === Comparator$3.ANY) { continue } @@ -18293,14 +18310,14 @@ const testSet = (set, version, options) => { const ANY$2 = Symbol('SemVer ANY'); // hoisted class for cyclic dependency -class Comparator$1 { +class Comparator$2 { static get ANY () { return ANY$2 } constructor (comp, options) { options = parseOptions(options); - if (comp instanceof Comparator$1) { + if (comp instanceof Comparator$2) { if (comp.loose === !!options.loose) { return comp } else { @@ -18366,7 +18383,7 @@ class Comparator$1 { } intersects (comp, options) { - if (!(comp instanceof Comparator$1)) { + if (!(comp instanceof Comparator$2)) { throw new TypeError('a Comparator is required') } @@ -18418,7 +18435,7 @@ class Comparator$1 { } } -var comparator$1 = Comparator$1; +var comparator$1 = Comparator$2; const parseOptions = parseOptions_1; const {re: re$1, t} = re$6.exports; @@ -18572,8 +18589,8 @@ const validRange = (range, options) => { var valid = validRange; const SemVer = semver$2; -const Comparator = comparator$1; -const {ANY: ANY$1} = Comparator; +const Comparator$1 = comparator$1; +const {ANY: ANY$1} = Comparator$1; const Range$2 = range$1; const satisfies$2 = satisfies_1; const gt = gt_1; @@ -18621,7 +18638,7 @@ const outside$2 = (version, range, hilo, options) => { comparators.forEach((comparator) => { if (comparator.semver === ANY$1) { - comparator = new Comparator('>=0.0.0'); + comparator = new Comparator$1('>=0.0.0'); } high = high || comparator; low = low || comparator; @@ -18716,22 +18733,30 @@ var simplify = (versions, range, options) => { }; const Range = range$1; -const { ANY } = comparator$1; +const Comparator = comparator$1; +const { ANY } = Comparator; const satisfies = satisfies_1; const compare$1 = compare_1; // Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: -// - Every simple range `r1, r2, ...` is a subset of some `R1, R2, ...` +// - 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 return false +// - 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) @@ -18740,13 +18765,16 @@ const compare$1 = compare_1; // - 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 any C is a = range, and GT or LT are set, 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) => { +const subset = (sub, dom, options = {}) => { if (sub === dom) return true @@ -18775,8 +18803,21 @@ const simpleSubset = (sub, dom, options) => { if (sub === dom) return true - if (sub.length === 1 && sub[0].semver === ANY) - return dom.length === 1 && dom[0].semver === ANY + 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) { + if (options.includePrerelease) + return true + else + dom = [ new Comparator('>=0.0.0') ]; + } const eqSet = new Set(); let gt, lt; @@ -18819,10 +18860,32 @@ const simpleSubset = (sub, dom, options) => { 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) @@ -18831,6 +18894,14 @@ const simpleSubset = (sub, dom, 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) @@ -18851,6 +18922,12 @@ const simpleSubset = (sub, dom, options) => { 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) + return false + return true }; @@ -21878,9 +21955,7 @@ class Configuration { if (options.rcName) { names.push( options.rcName, - options.rcName + '.js', - options.rcName + '.yml', - options.rcName + '.yaml' + ...Object.keys(loaders).map((d) => options.rcName + d) ); debug$a('Looking for `%s` configuration files', names); } @@ -23336,6 +23411,9 @@ function range(a, b, str) { var i = ai; if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } begs = []; left = str.length; @@ -24552,8 +24630,6 @@ pathIsAbsolute.exports.win32 = win32; var common$2 = {}; -common$2.alphasort = alphasort; -common$2.alphasorti = alphasorti; common$2.setopts = setopts$2; common$2.ownProp = ownProp$2; common$2.makeAbs = makeAbs; @@ -24571,12 +24647,8 @@ var minimatch$2 = minimatch_1; var isAbsolute$2 = pathIsAbsolute.exports; var Minimatch = minimatch$2.Minimatch; -function alphasorti (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()) -} - function alphasort (a, b) { - return a.localeCompare(b) + return a.localeCompare(b, 'en') } function setupIgnores (self, options) { @@ -24704,7 +24776,7 @@ function finish (self) { all = Object.keys(all); if (!self.nosort) - all = all.sort(self.nocase ? alphasorti : alphasort); + all = all.sort(alphasort); // at *some* point we statted all of these if (self.mark) { @@ -24803,8 +24875,6 @@ var path$2 = path$b; var assert$1 = assert$2; var isAbsolute$1 = pathIsAbsolute.exports; var common$1 = common$2; -common$1.alphasort; -common$1.alphasorti; var setopts$1 = common$1.setopts; var ownProp$1 = common$1.ownProp; var childrenIgnored$1 = common$1.childrenIgnored; @@ -25459,8 +25529,6 @@ var assert = assert$2; var isAbsolute = pathIsAbsolute.exports; var globSync = sync$1; var common = common$2; -common.alphasort; -common.alphasorti; var setopts = common.setopts; var ownProp = common.ownProp; var inflight = inflight_1; @@ -26203,8 +26271,6 @@ var isBuffer = function isBuffer (obj) { typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) }; -const proc$1 = process; - var own$b = {}.hasOwnProperty; /** @@ -26413,10 +26479,47 @@ VFileMessage.prototype.source = null; VFileMessage.prototype.ruleId = null; VFileMessage.prototype.position = null; +const proc$1 = process$1; + +/** + * @typedef URL + * @property {string} hash + * @property {string} host + * @property {string} hostname + * @property {string} href + * @property {string} origin + * @property {string} password + * @property {string} pathname + * @property {string} port + * @property {string} protocol + * @property {string} search + * @property {any} searchParams + * @property {string} username + * @property {() => string} toString + * @property {() => string} toJSON + */ + +/** + * @param {unknown} fileURLOrPath + * @returns {fileURLOrPath is URL} + */ +// From: +function isUrl(fileURLOrPath) { + return ( + fileURLOrPath !== null && + typeof fileURLOrPath === 'object' && + // @ts-expect-error: indexable. + fileURLOrPath.href && + // @ts-expect-error: indexable. + fileURLOrPath.origin + ) +} + /** * @typedef {import('unist').Node} Node * @typedef {import('unist').Position} Position * @typedef {import('unist').Point} Point + * @typedef {import('./minurl.shared.js').URL} URL * * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'latin1'|'binary'|'hex'} BufferEncoding * Encodings supported by the buffer class. @@ -26424,21 +26527,22 @@ VFileMessage.prototype.position = null; * being needed. * Copied from: * - * @typedef {string|Uint8Array} VFileValue Contents of the file. + * @typedef {string|Uint8Array} VFileValue + * Contents of the file. * Can either be text, or a Buffer like structure. * This does not directly use type `Buffer`, because it can also be used in a * browser context. * Instead this leverages `Uint8Array` which is the base type for `Buffer`, * and a native JavaScript construct. * - * @typedef {VFileValue|VFileOptions|VFile} VFileCompatible Things that can be - * passed to the constructor. + * @typedef {VFileValue|VFileOptions|VFile|URL} VFileCompatible + * Things that can be passed to the constructor. * * @typedef VFileCoreOptions * @property {VFileValue} [value] * @property {string} [cwd] * @property {Array.} [history] - * @property {string} [path] + * @property {string|URL} [path] * @property {string} [basename] * @property {string} [stem] * @property {string} [extname] @@ -26456,7 +26560,7 @@ VFileMessage.prototype.position = null; // Order of setting (least specific to most), we need this because otherwise // `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a // stem can be set. -var order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']; +const order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']; class VFile { /** @@ -26476,19 +26580,18 @@ class VFile { * @param {VFileCompatible} [value] */ constructor(value) { - var index = -1; /** @type {VFileOptions} */ - var options; - /** @type {string} */ - var prop; + let options; if (!value) { options = {}; } else if (typeof value === 'string' || isBuffer(value)) { - // @ts-ignore Looks like a buffer. + // @ts-expect-error Looks like a buffer. options = {value}; + } else if (isUrl(value)) { + options = {path: value}; } else { - // @ts-ignore Looks like file or options. + // @ts-expect-error Looks like file or options. options = value; } @@ -26544,29 +26647,44 @@ class VFile { * @type {unknown} */ this.result; + + /** + * Sometimes files have a source map associated with them. + * This can be stored in the `map` field. + * This should be a `RawSourceMap` type from the `source-map` module. + * @type {unknown} + */ + this.map; /* eslint-enable no-unused-expressions */ // Set path related properties in the correct order. + let index = -1; + while (++index < order.length) { - prop = order[index]; + const prop = order[index]; // Note: we specifically use `in` instead of `hasOwnProperty` to accept // `vfile`s too. if (prop in options && options[prop] !== undefined) { - this[prop] = prop === 'history' ? options[prop].concat() : options[prop]; + // @ts-expect-error: TS is confused by the different types for `history`. + this[prop] = prop === 'history' ? [...options[prop]] : options[prop]; } } + /** @type {string} */ + let prop; + // Set non-path related properties. for (prop in options) { - if (!order.includes(prop)) { - this[prop] = options[prop]; - } + // @ts-expect-error: fine to set other things. + if (!order.includes(prop)) this[prop] = options[prop]; } } /** * Access full path (`~/index.min.js`). + * + * @returns {string} */ get path() { return this.history[this.history.length - 1] @@ -26575,8 +26693,14 @@ class VFile { /** * Set full path (`~/index.min.js`). * Cannot be nullified. + * + * @param {string|URL} path */ set path(path) { + if (isUrl(path)) { + path = fileURLToPath(path); + } + assertNonEmpty(path, 'path'); if (this.path !== path) { @@ -26596,7 +26720,7 @@ class VFile { * Cannot be set if there's no `path` yet. */ set dirname(dirname) { - assertPath(this.path, 'dirname'); + assertPath(this.basename, 'dirname'); this.path = path$b.join(dirname || '', this.basename); } @@ -26631,7 +26755,7 @@ class VFile { */ set extname(extname) { assertPart(extname, 'extname'); - assertPath(this.path, 'extname'); + assertPath(this.dirname, 'extname'); if (extname) { if (extname.charCodeAt(0) !== 46 /* `.` */) { @@ -26672,7 +26796,7 @@ class VFile { * @returns {string} */ toString(encoding) { - // @ts-ignore string’s don’t accept the parameter, but buffers do. + // @ts-expect-error string’s don’t accept the parameter, but buffers do. return (this.value || '').toString(encoding) } @@ -26685,7 +26809,7 @@ class VFile { * @returns {VFileMessage} */ message(reason, place, origin) { - var message = new VFileMessage(reason, place, origin); + const message = new VFileMessage(reason, place, origin); if (this.path) { message.name = this.path + ':' + message.name; @@ -26710,7 +26834,7 @@ class VFile { * @returns {VFileMessage} */ info(reason, place, origin) { - var message = this.message(reason, place, origin); + const message = this.message(reason, place, origin); message.fatal = null; @@ -26729,7 +26853,7 @@ class VFile { * @returns {never} */ fail(reason, place, origin) { - var message = this.message(reason, place, origin); + const message = this.message(reason, place, origin); message.fatal = true; @@ -26740,7 +26864,7 @@ class VFile { /** * Assert that `part` is not a path (as in, does not contain `path.sep`). * - * @param {string} part + * @param {string|undefined} part * @param {string} name * @returns {void} */ @@ -26755,9 +26879,9 @@ function assertPart(part, name) { /** * Assert that `part` is not empty. * - * @param {string} part + * @param {string|undefined} part * @param {string} name - * @returns {void} + * @returns {asserts part is string} */ function assertNonEmpty(part, name) { if (!part) { @@ -26768,9 +26892,9 @@ function assertNonEmpty(part, name) { /** * Assert `path` exists. * - * @param {string} path + * @param {string|undefined} path * @param {string} name - * @returns {void} + * @returns {asserts path is string} */ function assertPath(path, name) { if (!path) { @@ -26802,10 +26926,10 @@ function assertPath(path, name) { * @returns {VFile} */ function toVFile(options) { - if (typeof options === 'string' || isBuffer(options)) { + if (typeof options === 'string' || options instanceof URL$1) { + options = {path: options}; + } else if (isBuffer(options)) { options = {path: String(options)}; - } else if (options instanceof URL$1) { - options = {path: fileURLToPath(options)}; } return looksLikeAVFile$1(options) ? options : new VFile(options) @@ -26819,7 +26943,7 @@ function toVFile(options) { * @returns {VFile} */ function readSync(description, options) { - var file = toVFile(description); + const file = toVFile(description); file.value = require$$0$3.readFileSync(path$b.resolve(file.cwd, file.path), options); return file } @@ -26832,7 +26956,7 @@ function readSync(description, options) { * @returns {VFile} */ function writeSync(description, options) { - var file = toVFile(description); + const file = toVFile(description); require$$0$3.writeFileSync(path$b.resolve(file.cwd, file.path), file.value || '', options); return file } @@ -26854,7 +26978,7 @@ const read$2 = * @param {Callback} [callback] */ function (description, options, callback) { - var file = toVFile(description); + const file = toVFile(description); if (!callback && typeof options === 'function') { callback = options; @@ -26880,7 +27004,7 @@ const read$2 = */ function executor(resolve, reject) { /** @type {string} */ - var fp; + let fp; try { fp = path$b.resolve(file.cwd, file.path); @@ -26923,7 +27047,7 @@ const write = * @param {Callback} [callback] */ function (description, options, callback) { - var file = toVFile(description); + const file = toVFile(description); // Weird, right? Otherwise `fs` doesn’t accept it. if (!callback && typeof options === 'function') { @@ -26950,7 +27074,7 @@ const write = */ function executor(resolve, reject) { /** @type {string} */ - var fp; + let fp; try { fp = path$b.resolve(file.cwd, file.path); @@ -27155,7 +27279,11 @@ function search$1(input, options, next) { const part = base$1(file); - if (options.nested && (part.charAt(0) === '.' || part === 'node_modules')) { + if ( + options.nested && + part && + (part.charAt(0) === '.' || part === 'node_modules') + ) { return } @@ -27203,7 +27331,7 @@ function search$1(input, options, next) { !dir && options.nested && options.extensions.length > 0 && - !options.extensions.includes(ext) + (!ext || !options.extensions.includes(ext)) ) { return one(null, []) } @@ -27309,7 +27437,7 @@ function statAndIgnore(file, options, callback) { /** * @param {string|VFile} file - * @returns {string} + * @returns {string|undefined} */ function base$1(file) { return typeof file === 'string' ? path$c.basename(file) : file.basename @@ -29550,7 +29678,7 @@ const supportsColor = { function ansiRegex({onlyFirst = false} = {}) { const pattern = [ - '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', + '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))' ].join('|'); @@ -29650,75 +29778,6 @@ function stringWidth(string) { return width; } -/*! - * repeat-string - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -/** - * Results cache - */ - -var res = ''; -var cache; - -/** - * Expose `repeat` - */ - -var repeatString = repeat; - -/** - * Repeat the given `string` the specified `number` - * of times. - * - * **Example:** - * - * ```js - * var repeat = require('repeat-string'); - * repeat('A', 5); - * //=> AAAAA - * ``` - * - * @param {String} `string` The string to repeat - * @param {Number} `number` The number of times to repeat the string - * @return {String} Repeated string - * @api public - */ - -function repeat(str, num) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } - - // cover common, quick use cases - if (num === 1) return str; - if (num === 2) return str + str; - - var max = str.length * num; - if (cache !== str || typeof cache === 'undefined') { - cache = str; - res = ''; - } else if (res.length >= max) { - return res.substr(0, max); - } - - while (max > res.length && num > 1) { - if (num & 1) { - res += str; - } - - num >>= 1; - str += str; - } - - res += str; - res = res.substr(0, max); - return res; -} - /** * @typedef {import('vfile').VFile} VFile * @typedef {import('vfile-message').VFileMessage} VFileMessage @@ -29805,19 +29864,24 @@ function compare(a, b, property) { * @property {_Sizes} sizes */ -var own$8 = {}.hasOwnProperty; +const own$8 = {}.hasOwnProperty; -// @ts-ignore Types are incorrect. -var supported = supportsColor.stderr.hasBasic; +// @ts-expect-error Types are incorrect. +const supported = supportsColor.stderr.hasBasic; // `log-symbols` without chalk, ignored for Windows: /* c8 ignore next 4 */ -var chars = +const chars = process.platform === 'win32' ? {error: '×', warning: '‼'} : {error: '✖', warning: '⚠'}; -var labels = {true: 'error', false: 'warning', null: 'info', undefined: 'info'}; +const labels = { + true: 'error', + false: 'warning', + null: 'info', + undefined: 'info' +}; /** * Report a file’s messages. @@ -29827,8 +29891,8 @@ var labels = {true: 'error', false: 'warning', null: 'info', undefined: 'info'}; * @returns {string} */ function reporter$1(files, options = {}) { - /** @type {boolean} */ - var one; + /** @type {boolean|undefined} */ + let one; if (!files) { return '' @@ -29854,45 +29918,36 @@ function reporter$1(files, options = {}) { * @returns {_Info} */ function transform(files, options) { - var index = -1; /** @type {Array.<_FileRow|_Row>} */ - var rows = []; + const rows = []; /** @type {Array.} */ - var all = []; - /** @type {number} */ - var offset; + const all = []; /** @type {_Sizes} */ - var sizes = {}; - /** @type {Array.} */ - var messages; - /** @type {VFileMessage} */ - var message; - /** @type {_Row} */ - var row; - /** @type {Array.<_Row>} */ - var messageRows; - /** @type {string} */ - var key; + const sizes = {}; + let index = -1; while (++index < files.length) { - // @ts-ignore it works fine. - messages = sort({messages: [...files[index].messages]}).messages; - messageRows = []; - offset = -1; + // @ts-expect-error it works fine. + const messages = sort({messages: [...files[index].messages]}).messages; + /** @type {Array.<_Row>} */ + const messageRows = []; + let offset = -1; while (++offset < messages.length) { - message = messages[offset]; + const message = messages[offset]; if (!options.silent || message.fatal) { all.push(message); - row = { + const row = { place: stringifyPosition$1( - message.position.end.line && message.position.end.column - ? message.position - : message.position.start + message.position + ? message.position.end.line && message.position.end.column + ? message.position + : message.position.start + : undefined ), - label: labels[message.fatal], + label: labels[/** @type {keyof labels} */ (String(message.fatal))], reason: (message.stack || message.message) + (options.verbose && message.note ? '\n' + message.note : ''), @@ -29900,7 +29955,11 @@ function transform(files, options) { source: message.source || '' }; + /** @type {keyof row} */ + let key; + for (key in row) { + // eslint-disable-next-line max-depth if (own$8.call(row, key)) { sizes[key] = Math.max(size$1(row[key]), sizes[key] || 0); } @@ -29923,37 +29982,26 @@ function transform(files, options) { /** * @param {_Info} map - * @param {boolean} one + * @param {boolean|undefined} one * @param {Options} options */ +// eslint-disable-next-line complexity function format(map, one, options) { /** @type {boolean} */ - var enabled = + const enabled = options.color === undefined || options.color === null ? supported : options.color; /** @type {Array.} */ - var lines = []; - var index = -1; - /** @type {Statistics} */ - var stats; - /** @type {_FileRow|_Row} */ - var row; - /** @type {string} */ - var line; - /** @type {string} */ - var reason; - /** @type {string} */ - var rest; - /** @type {RegExpMatchArray} */ - var match; + const lines = []; + let index = -1; while (++index < map.rows.length) { - row = map.rows[index]; + const row = map.rows[index]; if ('type' in row) { - stats = row.stats; - line = row.file.history[0] || options.defaultName || ''; + const stats = row.stats; + let line = row.file.history[0] || options.defaultName || ''; line = one && !options.defaultName && !row.file.history[0] @@ -29990,8 +30038,10 @@ function format(map, one, options) { lines.push(line); } } else { - reason = row.reason; - match = /\r?\n|\r/.exec(reason); + let reason = row.reason; + const match = /\r?\n|\r/.exec(reason); + /** @type {string} */ + let rest; if (match) { rest = reason.slice(match.index); @@ -30003,7 +30053,7 @@ function format(map, one, options) { lines.push( ( ' ' + - repeatString(' ', map.sizes.place - size$1(row.place)) + + ' '.repeat(map.sizes.place - size$1(row.place)) + row.place + ' ' + (enabled @@ -30013,13 +30063,13 @@ function format(map, one, options) { row.label + '\u001B[39m' : row.label) + - repeatString(' ', map.sizes.label - size$1(row.label)) + + ' '.repeat(map.sizes.label - size$1(row.label)) + ' ' + reason + - repeatString(' ', map.sizes.reason - size$1(reason)) + + ' '.repeat(map.sizes.reason - size$1(reason)) + ' ' + row.ruleId + - repeatString(' ', map.sizes.ruleId - size$1(row.ruleId)) + + ' '.repeat(map.sizes.ruleId - size$1(row.ruleId)) + ' ' + (row.source || '') ).replace(/ +$/, '') + rest @@ -30027,10 +30077,10 @@ function format(map, one, options) { } } - stats = map.stats; + const stats = map.stats; if (stats.fatal || stats.warn) { - line = ''; + let line = ''; if (stats.fatal) { line = @@ -30072,7 +30122,7 @@ function format(map, one, options) { * @returns {number} */ function size$1(value) { - var match = /\r?\n|\r/.exec(value); + const match = /\r?\n|\r/.exec(value); return stringWidth(match ? value.slice(0, match.index) : value) } @@ -32581,7 +32631,7 @@ function options(flags, configuration) { silentlyIgnore: config.silentlyIgnore, detectIgnore: config.ignore, pluginPrefix: configuration.pluginPrefix, - plugins: plugins$2(/** @type {string} */ (config.use)), + plugins: plugins$1(/** @type {string} */ (config.use)), reporter: report[0], reporterOptions: report[1], color: config.color, @@ -32624,7 +32674,7 @@ function commaSeparated(value) { * @param {string[]|string|null|undefined} value * @returns {Record|undefined>} */ -function plugins$2(value) { +function plugins$1(value) { const normalized = normalize(value).map((d) => splitOptions(d)); let index = -1; /** @type {Record|undefined>} */ @@ -34402,8 +34452,54 @@ function initializeDocument(effects) { /** @type {State} */ function documentContinue(code) { - if (self.containerState._closeFlow) closeFlow(); - continued++; + continued++; // Note: this field is called `_closeFlow` but it also closes containers. + // Perhaps a good idea to rename it but it’s already used in the wild by + // extensions. + + if (self.containerState._closeFlow) { + self.containerState._closeFlow = undefined; + + if (childFlow) { + closeFlow(); + } // Note: this algorithm for moving events around is similar to the + // algorithm when dealing with lazy lines in `writeToChild`. + + const indexBeforeExits = self.events.length; + let indexBeforeFlow = indexBeforeExits; + /** @type {Point|undefined} */ + + let point; // Find the flow chunk. + + while (indexBeforeFlow--) { + if ( + self.events[indexBeforeFlow][0] === 'exit' && + self.events[indexBeforeFlow][1].type === 'chunkFlow' + ) { + point = self.events[indexBeforeFlow][1].end; + break + } + } + + exitContainers(continued); // Fix positions. + + let index = indexBeforeExits; + + while (index < self.events.length) { + self.events[index][1].end = Object.assign({}, point); + index++; + } // Inject the exits earlier (they’re still also at the end). + + splice( + self.events, + indexBeforeFlow + 1, + 0, + self.events.slice(indexBeforeExits) + ); // Discard the duplicate exits. + + self.events.length = index; + return checkNewContainers(code) + } + return start(code) } /** @type {State} */ @@ -34574,7 +34670,8 @@ function initializeDocument(effects) { // part of something. return } - } + } // Note: this algorithm for moving events around is similar to the + // algorithm when closing flow in `documentContinue`. const indexBeforeExits = self.events.length; let indexBeforeFlow = indexBeforeExits; @@ -34897,7 +34994,9 @@ function resolveAllAttention(events, context) { /** @type {Tokenizer} */ function tokenizeAttention(effects, ok) { - const before = classifyCharacter(this.previous); + const attentionMarkers = this.parser.constructs.attentionMarkers.null; + const previous = this.previous; + const before = classifyCharacter(previous); /** @type {NonNullable} */ let marker; @@ -34919,8 +35018,10 @@ function tokenizeAttention(effects, ok) { const token = effects.exit('attentionSequence'); const after = classifyCharacter(code); - const open = !after || (after === 2 && before); - const close = !before || (before === 2 && after); + const open = + !after || (after === 2 && before) || attentionMarkers.includes(code); + const close = + !before || (before === 2 && after) || attentionMarkers.includes(previous); token._open = Boolean(marker === 42 ? open : open && (before || !close)); token._close = Boolean(marker === 42 ? close : close && (after || !open)); return ok(code) @@ -42094,6 +42195,11 @@ const text$2 = { const insideSpan = { null: [attention, resolver] }; +/** @type {Extension['attentionMarkers']} */ + +const attentionMarkers = { + null: [42, 95] +}; /** @type {Extension['disable']} */ const disable = { @@ -42109,6 +42215,7 @@ var defaultConstructs = /*#__PURE__*/Object.freeze({ string: string, text: text$2, insideSpan: insideSpan, + attentionMarkers: attentionMarkers, disable: disable }); @@ -43573,23 +43680,34 @@ function configure(base, extension) { * @returns {string} */ function containerFlow(parent, context) { + const indexStack = context.indexStack; const children = parent.children || []; /** @type {Array.} */ const results = []; let index = -1; + indexStack.push(-1); + while (++index < children.length) { const child = children[index]; + indexStack[indexStack.length - 1] = index; + results.push( context.handle(child, parent, context, {before: '\n', after: '\n'}) ); + if (child.type !== 'list') { + context.bulletLastUsed = undefined; + } + if (index < children.length - 1) { results.push(between(child, children[index + 1])); } } + indexStack.pop(); + return results.join('') /** @@ -43599,11 +43717,9 @@ function containerFlow(parent, context) { */ function between(left, right) { let index = context.join.length; - /** @type {ReturnType} */ - let result; while (index--) { - result = context.join[index](left, right, parent, context); + const result = context.join[index](left, right, parent, context); if (result === true || result === 1) { break @@ -43930,11 +44046,15 @@ function safe(context, input, config) { // the next character, and the next character is definitly being escaped, // then skip this escape. if ( - position + 1 < end && - positions[index + 1] === position + 1 && - infos[position].after && - !infos[position + 1].before && - !infos[position + 1].after + (position + 1 < end && + positions[index + 1] === position + 1 && + infos[position].after && + !infos[position + 1].before && + !infos[position + 1].after) || + (positions[index - 1] === position - 1 && + infos[position].before && + !infos[position - 1].before && + !infos[position - 1].after) ) { continue } @@ -44233,17 +44353,22 @@ function checkEmphasis(context) { * @returns {string} */ function containerPhrasing(parent, context, safeOptions) { + const indexStack = context.indexStack; const children = parent.children || []; /** @type {Array.} */ const results = []; let index = -1; let before = safeOptions.before; + indexStack.push(-1); + while (++index < children.length) { const child = children[index]; /** @type {string} */ let after; + indexStack[indexStack.length - 1] = index; + if (index + 1 < children.length) { // @ts-expect-error: hush, it’s actually a `zwitch`. let handle = context.handle.handlers[children[index + 1].type]; @@ -44281,6 +44406,8 @@ function containerPhrasing(parent, context, safeOptions) { before = results[results.length - 1].slice(-1); } + indexStack.pop(); + return results.join('') } @@ -44319,226 +44446,601 @@ function emphasisPeek(_, _1, context) { } /** - * @typedef {import('mdast').Heading} Heading - * @typedef {import('../types.js').Context} Context + * @typedef {import('unist').Node} Node + * @typedef {import('unist').Parent} Parent + * + * @typedef {string} Type + * @typedef {Object} Props + * + * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.} Test */ -/** - * @param {Heading} node - * @param {Context} context - * @returns {boolean} - */ -function formatHeadingAsSetext(node, context) { - return Boolean( - context.options.setext && (!node.depth || node.depth < 3) && toString(node) - ) -} +const convert = + /** + * @type {( + * ((test: T['type']|Partial|TestFunctionPredicate) => AssertPredicate) & + * ((test?: Test) => AssertAnything) + * )} + */ + ( + /** + * Generate an assertion from a check. + * @param {Test} [test] + * When nullish, checks if `node` is a `Node`. + * When `string`, works like passing `function (node) {return node.type === test}`. + * When `function` checks if function passed the node is true. + * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values. + * When `array`, checks any one of the subtests pass. + * @returns {AssertAnything} + */ + function (test) { + if (test === undefined || test === null) { + return ok + } -/** - * @typedef {import('mdast').Heading} Heading - * @typedef {import('../types.js').Handle} Handle - * @typedef {import('../types.js').Exit} Exit - */ + if (typeof test === 'string') { + return typeFactory(test) + } + + if (typeof test === 'object') { + return Array.isArray(test) ? anyFactory(test) : propsFactory(test) + } + + if (typeof test === 'function') { + return castFactory(test) + } + throw new Error('Expected function, string, or object as test') + } + ); /** - * @type {Handle} - * @param {Heading} node + * @param {Array.} tests + * @returns {AssertAnything} */ -function heading(node, _, context) { - const rank = Math.max(Math.min(6, node.depth || 1), 1); - /** @type {Exit} */ - let exit; - /** @type {Exit} */ - let subexit; - /** @type {string} */ - let value; - - if (formatHeadingAsSetext(node, context)) { - exit = context.enter('headingSetext'); - subexit = context.enter('phrasing'); - value = containerPhrasing(node, context, {before: '\n', after: '\n'}); - subexit(); - exit(); +function anyFactory(tests) { + /** @type {Array.} */ + const checks = []; + let index = -1; - return ( - value + - '\n' + - (rank === 1 ? '=' : '-').repeat( - // The whole size… - value.length - - // Minus the position of the character after the last EOL (or - // 0 if there is none)… - (Math.max(value.lastIndexOf('\r'), value.lastIndexOf('\n')) + 1) - ) - ) + while (++index < tests.length) { + checks[index] = convert(tests[index]); } - const sequence = '#'.repeat(rank); - exit = context.enter('headingAtx'); - subexit = context.enter('phrasing'); - value = containerPhrasing(node, context, {before: '# ', after: '\n'}); - value = value ? sequence + ' ' + value : sequence; - if (context.options.closeAtx) { - value += ' ' + sequence; - } + return castFactory(any) - subexit(); - exit(); + /** + * @this {unknown} + * @param {unknown[]} parameters + * @returns {boolean} + */ + function any(...parameters) { + let index = -1; - return value + while (++index < checks.length) { + if (checks[index].call(this, ...parameters)) return true + } + + return false + } } /** - * @typedef {import('mdast').HTML} HTML - * @typedef {import('../types.js').Handle} Handle + * Utility to assert each property in `test` is represented in `node`, and each + * values are strictly equal. + * + * @param {Props} check + * @returns {AssertAnything} */ +function propsFactory(check) { + return castFactory(all) -html.peek = htmlPeek; + /** + * @param {Node} node + * @returns {boolean} + */ + function all(node) { + /** @type {string} */ + let key; -/** - * @type {Handle} - * @param {HTML} node - */ -function html(node) { - return node.value || '' -} + for (key in check) { + // @ts-expect-error: hush, it sure works as an index. + if (node[key] !== check[key]) return false + } -/** - * @type {Handle} - */ -function htmlPeek() { - return '<' + return true + } } /** - * @typedef {import('mdast').Image} Image - * @typedef {import('../types.js').Handle} Handle + * Utility to convert a string into a function which checks a given node’s type + * for said string. + * + * @param {Type} check + * @returns {AssertAnything} */ +function typeFactory(check) { + return castFactory(type) -image.peek = imagePeek; + /** + * @param {Node} node + */ + function type(node) { + return node && node.type === check + } +} /** - * @type {Handle} - * @param {Image} node + * Utility to convert a string into a function which checks a given node’s type + * for said string. + * @param {TestFunctionAnything} check + * @returns {AssertAnything} */ -function image(node, _, context) { - const quote = checkQuote(context); - const suffix = quote === '"' ? 'Quote' : 'Apostrophe'; - const exit = context.enter('image'); - let subexit = context.enter('label'); - let value = '![' + safe(context, node.alt, {before: '[', after: ']'}) + ']('; - - subexit(); - - if ( - // If there’s no url but there is a title… - (!node.url && node.title) || - // Or if there’s markdown whitespace or an eol, enclose. - /[ \t\r\n]/.test(node.url) - ) { - subexit = context.enter('destinationLiteral'); - value += '<' + safe(context, node.url, {before: '<', after: '>'}) + '>'; - } else { - // No whitespace, raw is prettier. - subexit = context.enter('destinationRaw'); - value += safe(context, node.url, { - before: '(', - after: node.title ? ' ' : ')' - }); - } - - subexit(); +function castFactory(check) { + return assertion - if (node.title) { - subexit = context.enter('title' + suffix); - value += - ' ' + - quote + - safe(context, node.title, {before: quote, after: quote}) + - quote; - subexit(); + /** + * @this {unknown} + * @param {Array.} parameters + * @returns {boolean} + */ + function assertion(...parameters) { + // @ts-expect-error: spreading is fine. + return Boolean(check.call(this, ...parameters)) } +} - value += ')'; - exit(); - - return value +// Utility to return true. +function ok() { + return true } /** - * @type {Handle} + * @param {string} d + * @returns {string} */ -function imagePeek() { - return '!' +function color$1(d) { + return '\u001B[33m' + d + '\u001B[39m' } /** - * @typedef {import('mdast').ImageReference} ImageReference - * @typedef {import('../types.js').Handle} Handle + * @typedef {import('unist').Node} Node + * @typedef {import('unist').Parent} Parent + * @typedef {import('unist-util-is').Test} Test */ -imageReference.peek = imageReferencePeek; - /** - * @type {Handle} - * @param {ImageReference} node + * Continue traversing as normal */ -function imageReference(node, _, context) { - const type = node.referenceType; - const exit = context.enter('imageReference'); - let subexit = context.enter('label'); - const alt = safe(context, node.alt, {before: '[', after: ']'}); - let value = '![' + alt + ']'; - - subexit(); - // Hide the fact that we’re in phrasing, because escapes don’t work. - const stack = context.stack; - context.stack = []; - subexit = context.enter('reference'); - const reference = safe(context, association(node), {before: '[', after: ']'}); - subexit(); - context.stack = stack; - exit(); - - if (type === 'full' || !alt || alt !== reference) { - value += '[' + reference + ']'; - } else if (type !== 'shortcut') { - value += '[]'; - } - - return value -} - +const CONTINUE$1 = true; /** - * @type {Handle} + * Do not traverse this node’s children */ -function imageReferencePeek() { - return '!' -} - +const SKIP$1 = 'skip'; /** - * @typedef {import('mdast').InlineCode} InlineCode - * @typedef {import('../types.js').Handle} Handle + * Stop traversing immediately */ - -inlineCode.peek = inlineCodePeek; +const EXIT$1 = false; /** - * @type {Handle} - * @param {InlineCode} node + * Visit children of tree which pass a test + * + * @param tree Abstract syntax tree to walk + * @param test Test node, optional + * @param visitor Function to run for each node + * @param reverse Visit the tree in reverse order, defaults to false */ -function inlineCode(node, _, context) { - let value = node.value || ''; - let sequence = '`'; - let index = -1; - - // If there is a single grave accent on its own in the code, use a fence of - // two. - // If there are two in a row, use one. - while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) { - sequence += '`'; - } - +const visitParents$1 = + /** + * @type {( + * ((tree: Tree, test: Check, visitor: Visitor, Check>>, reverse?: boolean) => void) & + * ((tree: Tree, visitor: Visitor>, reverse?: boolean) => void) + * )} + */ + ( + /** + * @param {Node} tree + * @param {Test} test + * @param {Visitor} visitor + * @param {boolean} [reverse] + */ + function (tree, test, visitor, reverse) { + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor; + // @ts-expect-error no visitor given, so `visitor` is test. + visitor = test; + test = null; + } + + const is = convert(test); + const step = reverse ? -1 : 1; + + factory(tree, null, [])(); + + /** + * @param {Node} node + * @param {number?} index + * @param {Array.} parents + */ + function factory(node, index, parents) { + /** @type {Object.} */ + // @ts-expect-error: hush + const value = typeof node === 'object' && node !== null ? node : {}; + /** @type {string|undefined} */ + let 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() { + /** @type {ActionTuple} */ + let result = []; + /** @type {ActionTuple} */ + let subresult; + /** @type {number} */ + let offset; + /** @type {Array.} */ + let grandparents; + + if (!test || is(node, index, parents[parents.length - 1] || null)) { + result = toResult$1(visitor(node, parents)); + + if (result[0] === EXIT$1) { + return result + } + } + + // @ts-expect-error looks like a parent. + if (node.children && result[0] !== SKIP$1) { + // @ts-expect-error looks like a parent. + offset = (reverse ? node.children.length : -1) + step; + // @ts-expect-error looks like a parent. + grandparents = parents.concat(node); + + // @ts-expect-error looks like a parent. + while (offset > -1 && offset < node.children.length) { + // @ts-expect-error looks like a parent. + subresult = factory(node.children[offset], offset, grandparents)(); + + if (subresult[0] === EXIT$1) { + return subresult + } + + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step; + } + } + + return result + } + } + } + ); + +/** + * @param {VisitorResult} value + * @returns {ActionTuple} + */ +function toResult$1(value) { + if (Array.isArray(value)) { + return value + } + + if (typeof value === 'number') { + return [CONTINUE$1, value] + } + + return [value] +} + +/** + * @typedef {import('unist').Node} Node + * @typedef {import('unist').Parent} Parent + * @typedef {import('unist-util-is').Test} Test + * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult + */ + +/** + * Visit children of tree which pass a test + * + * @param tree Abstract syntax tree to walk + * @param test Test, optional + * @param visitor Function to run for each node + * @param reverse Fisit the tree in reverse, defaults to false + */ +const visit$1 = + /** + * @type {( + * ((tree: Tree, test: Check, visitor: Visitor, Check>>, reverse?: boolean) => void) & + * ((tree: Tree, visitor: Visitor>, reverse?: boolean) => void) + * )} + */ + ( + /** + * @param {Node} tree + * @param {Test} test + * @param {Visitor} visitor + * @param {boolean} [reverse] + */ + function (tree, test, visitor, reverse) { + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor; + visitor = test; + test = null; + } + + visitParents$1(tree, test, overload, reverse); + + /** + * @param {Node} node + * @param {Array.} parents + */ + function overload(node, parents) { + const parent = parents[parents.length - 1]; + return visitor( + node, + parent ? parent.children.indexOf(node) : null, + parent + ) + } + } + ); + +/** + * @typedef {import('mdast').Heading} Heading + * @typedef {import('../types.js').Context} Context + */ + +/** + * @param {Heading} node + * @param {Context} context + * @returns {boolean} + */ +function formatHeadingAsSetext(node, context) { + let literalWithBreak = false; + + // Look for literals with a line break. + // Note that this also + visit$1(node, (node) => { + if ( + ('value' in node && /\r?\n|\r/.test(node.value)) || + node.type === 'break' + ) { + literalWithBreak = true; + return EXIT$1 + } + }); + + return Boolean( + (!node.depth || node.depth < 3) && + toString(node) && + (context.options.setext || literalWithBreak) + ) +} + +/** + * @typedef {import('mdast').Heading} Heading + * @typedef {import('../types.js').Handle} Handle + * @typedef {import('../types.js').Exit} Exit + */ + +/** + * @type {Handle} + * @param {Heading} node + */ +function heading(node, _, context) { + const rank = Math.max(Math.min(6, node.depth || 1), 1); + + if (formatHeadingAsSetext(node, context)) { + const exit = context.enter('headingSetext'); + const subexit = context.enter('phrasing'); + const value = containerPhrasing(node, context, {before: '\n', after: '\n'}); + subexit(); + exit(); + + return ( + value + + '\n' + + (rank === 1 ? '=' : '-').repeat( + // The whole size… + value.length - + // Minus the position of the character after the last EOL (or + // 0 if there is none)… + (Math.max(value.lastIndexOf('\r'), value.lastIndexOf('\n')) + 1) + ) + ) + } + + const sequence = '#'.repeat(rank); + const exit = context.enter('headingAtx'); + const subexit = context.enter('phrasing'); + let value = containerPhrasing(node, context, {before: '# ', after: '\n'}); + + if (/^[\t ]/.test(value)) { + value = + '&#x' + + value.charCodeAt(0).toString(16).toUpperCase() + + ';' + + value.slice(1); + } + + value = value ? sequence + ' ' + value : sequence; + + if (context.options.closeAtx) { + value += ' ' + sequence; + } + + subexit(); + exit(); + + return value +} + +/** + * @typedef {import('mdast').HTML} HTML + * @typedef {import('../types.js').Handle} Handle + */ + +html.peek = htmlPeek; + +/** + * @type {Handle} + * @param {HTML} node + */ +function html(node) { + return node.value || '' +} + +/** + * @type {Handle} + */ +function htmlPeek() { + return '<' +} + +/** + * @typedef {import('mdast').Image} Image + * @typedef {import('../types.js').Handle} Handle + */ + +image.peek = imagePeek; + +/** + * @type {Handle} + * @param {Image} node + */ +function image(node, _, context) { + const quote = checkQuote(context); + const suffix = quote === '"' ? 'Quote' : 'Apostrophe'; + const exit = context.enter('image'); + let subexit = context.enter('label'); + let value = '![' + safe(context, node.alt, {before: '[', after: ']'}) + ']('; + + subexit(); + + if ( + // If there’s no url but there is a title… + (!node.url && node.title) || + // Or if there’s markdown whitespace or an eol, enclose. + /[ \t\r\n]/.test(node.url) + ) { + subexit = context.enter('destinationLiteral'); + value += '<' + safe(context, node.url, {before: '<', after: '>'}) + '>'; + } else { + // No whitespace, raw is prettier. + subexit = context.enter('destinationRaw'); + value += safe(context, node.url, { + before: '(', + after: node.title ? ' ' : ')' + }); + } + + subexit(); + + if (node.title) { + subexit = context.enter('title' + suffix); + value += + ' ' + + quote + + safe(context, node.title, {before: quote, after: quote}) + + quote; + subexit(); + } + + value += ')'; + exit(); + + return value +} + +/** + * @type {Handle} + */ +function imagePeek() { + return '!' +} + +/** + * @typedef {import('mdast').ImageReference} ImageReference + * @typedef {import('../types.js').Handle} Handle + */ + +imageReference.peek = imageReferencePeek; + +/** + * @type {Handle} + * @param {ImageReference} node + */ +function imageReference(node, _, context) { + const type = node.referenceType; + const exit = context.enter('imageReference'); + let subexit = context.enter('label'); + const alt = safe(context, node.alt, {before: '[', after: ']'}); + let value = '![' + alt + ']'; + + subexit(); + // Hide the fact that we’re in phrasing, because escapes don’t work. + const stack = context.stack; + context.stack = []; + subexit = context.enter('reference'); + const reference = safe(context, association(node), {before: '[', after: ']'}); + subexit(); + context.stack = stack; + exit(); + + if (type === 'full' || !alt || alt !== reference) { + value += '[' + reference + ']'; + } else if (type !== 'shortcut') { + value += '[]'; + } + + return value +} + +/** + * @type {Handle} + */ +function imageReferencePeek() { + return '!' +} + +/** + * @typedef {import('mdast').InlineCode} InlineCode + * @typedef {import('../types.js').Handle} Handle + */ + +inlineCode.peek = inlineCodePeek; + +/** + * @type {Handle} + * @param {InlineCode} node + */ +function inlineCode(node, _, context) { + let value = node.value || ''; + let sequence = '`'; + let index = -1; + + // If there is a single grave accent on its own in the code, use a fence of + // two. + // If there are two in a row, use one. + while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) { + sequence += '`'; + } + // If this is not just spaces or eols (tabs don’t count), and either the // first or last character are a space, eol, or tick, then pad with spaces. if ( @@ -44751,22 +45253,6 @@ function linkReferencePeek() { return '[' } -/** - * @typedef {import('mdast').List} List - * @typedef {import('../types.js').Handle} Handle - */ - -/** - * @type {Handle} - * @param {List} node - */ -function list(node, _, context) { - const exit = context.enter('list'); - const value = containerFlow(node, context); - exit(); - return value -} - /** * @typedef {import('../types.js').Context} Context * @typedef {import('../types.js').Options} Options @@ -44797,110 +45283,336 @@ function checkBullet(context) { /** * @param {Context} context - * @returns {Exclude} + * @returns {Exclude} */ -function checkListItemIndent(context) { - const style = context.options.listItemIndent || 'tab'; +function checkBulletOther(context) { + const bullet = checkBullet(context); + const bulletOther = context.options.bulletOther; - // To do: remove in a major. - // @ts-expect-error: deprecated. - if (style === 1 || style === '1') { - return 'one' + if (!bulletOther) { + return bullet === '*' ? '-' : '*' } - if (style !== 'tab' && style !== 'one' && style !== 'mixed') { + if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') { throw new Error( 'Cannot serialize items with `' + - style + - '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`' + bulletOther + + '` for `options.bulletOther`, expected `*`, `+`, or `-`' ) } - return style + if (bulletOther === bullet) { + throw new Error( + 'Expected `bullet` (`' + + bullet + + '`) and `bulletOther` (`' + + bulletOther + + '`) to be different' + ) + } + + return bulletOther } /** - * @typedef {import('mdast').ListItem} ListItem - * @typedef {import('mdast').List} List - * @typedef {import('../util/indent-lines.js').Map} Map + * @typedef {import('../types.js').Context} Context * @typedef {import('../types.js').Options} Options - * @typedef {import('../types.js').Handle} Handle */ /** - * @type {Handle} - * @param {ListItem} node + * @param {Context} context + * @returns {Exclude} */ -function listItem(node, parent, context) { - const listItemIndent = checkListItemIndent(context); - /** @type {string} */ - let bullet = checkBullet(context); +function checkBulletOrdered(context) { + const marker = context.options.bulletOrdered || '.'; - if (parent && parent.type === 'list' && parent.ordered) { - bullet = - (typeof parent.start === 'number' && parent.start > -1 - ? parent.start - : 1) + - (context.options.incrementListMarker === false - ? 0 - : parent.children.indexOf(node)) + - '.'; + if (marker !== '.' && marker !== ')') { + throw new Error( + 'Cannot serialize items with `' + + marker + + '` for `options.bulletOrdered`, expected `.` or `)`' + ) } - let size = bullet.length + 1; + return marker +} - if ( - listItemIndent === 'tab' || - (listItemIndent === 'mixed' && - ((parent && 'spread' in parent && parent.spread) || node.spread)) - ) { - size = Math.ceil(size / 4) * 4; - } +/** + * @typedef {import('../types.js').Context} Context + * @typedef {import('../types.js').Options} Options + */ - const exit = context.enter('listItem'); - const value = indentLines(containerFlow(node, context), map); - exit(); +/** + * @param {Context} context + * @returns {Exclude} + */ +function checkBulletOrderedOther(context) { + const bulletOrdered = checkBulletOrdered(context); + const bulletOrderedOther = context.options.bulletOrderedOther; - return value + if (!bulletOrderedOther) { + return bulletOrdered === '.' ? ')' : '.' + } - /** @type {Map} */ - function map(line, index, blank) { - if (index) { - return (blank ? '' : ' '.repeat(size)) + line - } + if (bulletOrderedOther !== '.' && bulletOrderedOther !== ')') { + throw new Error( + 'Cannot serialize items with `' + + bulletOrderedOther + + '` for `options.bulletOrderedOther`, expected `*`, `+`, or `-`' + ) + } - return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line + if (bulletOrderedOther === bulletOrdered) { + throw new Error( + 'Expected `bulletOrdered` (`' + + bulletOrdered + + '`) and `bulletOrderedOther` (`' + + bulletOrderedOther + + '`) to be different' + ) } + + return bulletOrderedOther } /** - * @typedef {import('mdast').Paragraph} Paragraph - * @typedef {import('../types.js').Handle} Handle + * @typedef {import('../types.js').Context} Context + * @typedef {import('../types.js').Options} Options */ /** - * @type {Handle} - * @param {Paragraph} node + * @param {Context} context + * @returns {Exclude} */ -function paragraph(node, _, context) { - const exit = context.enter('paragraph'); - const subexit = context.enter('phrasing'); - const value = containerPhrasing(node, context, {before: '\n', after: '\n'}); - subexit(); - exit(); - return value +function checkRule(context) { + const marker = context.options.rule || '*'; + + if (marker !== '*' && marker !== '-' && marker !== '_') { + throw new Error( + 'Cannot serialize rules with `' + + marker + + '` for `options.rule`, expected `*`, `-`, or `_`' + ) + } + + return marker } /** - * @typedef {import('mdast').Root} Root + * @typedef {import('mdast').List} List * @typedef {import('../types.js').Handle} Handle */ /** * @type {Handle} - * @param {Root} node + * @param {List} node */ -function root(node, _, context) { +function list(node, parent, context) { + const exit = context.enter('list'); + const bulletCurrent = context.bulletCurrent; + /** @type {string} */ + let bullet = node.ordered ? checkBulletOrdered(context) : checkBullet(context); + /** @type {string} */ + const bulletOther = node.ordered + ? checkBulletOrderedOther(context) + : checkBulletOther(context); + const bulletLastUsed = context.bulletLastUsed; + let useDifferentMarker = false; + + if ( + parent && + // Explicit `other` set. + (node.ordered + ? context.options.bulletOrderedOther + : context.options.bulletOther) && + bulletLastUsed && + bullet === bulletLastUsed + ) { + useDifferentMarker = true; + } + + if (!node.ordered) { + const firstListItem = node.children ? node.children[0] : undefined; + + // If there’s an empty first list item directly in two list items, + // we have to use a different bullet: + // + // ```markdown + // * - * + // ``` + // + // …because otherwise it would become one big thematic break. + if ( + // Bullet could be used as a thematic break marker: + (bullet === '*' || bullet === '-') && + // Empty first list item: + firstListItem && + (!firstListItem.children || !firstListItem.children[0]) && + // Directly in two other list items: + context.stack[context.stack.length - 1] === 'list' && + context.stack[context.stack.length - 2] === 'listItem' && + context.stack[context.stack.length - 3] === 'list' && + context.stack[context.stack.length - 4] === 'listItem' && + // That are each the first child. + context.indexStack[context.indexStack.length - 1] === 0 && + context.indexStack[context.indexStack.length - 2] === 0 && + context.indexStack[context.indexStack.length - 3] === 0 && + context.indexStack[context.indexStack.length - 4] === 0 + ) { + useDifferentMarker = true; + } + + // If there’s a thematic break at the start of the first list item, + // we have to use a different bullet: + // + // ```markdown + // * --- + // ``` + // + // …because otherwise it would become one big thematic break. + if (checkRule(context) === bullet && firstListItem) { + let index = -1; + + while (++index < node.children.length) { + const item = node.children[index]; + + if ( + item && + item.type === 'listItem' && + item.children && + item.children[0] && + item.children[0].type === 'thematicBreak' + ) { + useDifferentMarker = true; + break + } + } + } + } + + if (useDifferentMarker) { + bullet = bulletOther; + } + + context.bulletCurrent = bullet; + const value = containerFlow(node, context); + context.bulletLastUsed = bullet; + context.bulletCurrent = bulletCurrent; + exit(); + return value +} + +/** + * @typedef {import('../types.js').Context} Context + * @typedef {import('../types.js').Options} Options + */ + +/** + * @param {Context} context + * @returns {Exclude} + */ +function checkListItemIndent(context) { + const style = context.options.listItemIndent || 'tab'; + + // To do: remove in a major. + // @ts-expect-error: deprecated. + if (style === 1 || style === '1') { + return 'one' + } + + if (style !== 'tab' && style !== 'one' && style !== 'mixed') { + throw new Error( + 'Cannot serialize items with `' + + style + + '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`' + ) + } + + return style +} + +/** + * @typedef {import('mdast').ListItem} ListItem + * @typedef {import('mdast').List} List + * @typedef {import('../util/indent-lines.js').Map} Map + * @typedef {import('../types.js').Options} Options + * @typedef {import('../types.js').Handle} Handle + */ + +/** + * @type {Handle} + * @param {ListItem} node + */ +function listItem(node, parent, context) { + const listItemIndent = checkListItemIndent(context); + let bullet = context.bulletCurrent || checkBullet(context); + + // Add the marker value for ordered lists. + if (parent && parent.type === 'list' && parent.ordered) { + bullet = + (typeof parent.start === 'number' && parent.start > -1 + ? parent.start + : 1) + + (context.options.incrementListMarker === false + ? 0 + : parent.children.indexOf(node)) + + bullet; + } + + let size = bullet.length + 1; + + if ( + listItemIndent === 'tab' || + (listItemIndent === 'mixed' && + ((parent && parent.type === 'list' && parent.spread) || node.spread)) + ) { + size = Math.ceil(size / 4) * 4; + } + + const exit = context.enter('listItem'); + const value = indentLines(containerFlow(node, context), map); + exit(); + + return value + + /** @type {Map} */ + function map(line, index, blank) { + if (index) { + return (blank ? '' : ' '.repeat(size)) + line + } + + return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line + } +} + +/** + * @typedef {import('mdast').Paragraph} Paragraph + * @typedef {import('../types.js').Handle} Handle + */ + +/** + * @type {Handle} + * @param {Paragraph} node + */ +function paragraph(node, _, context) { + const exit = context.enter('paragraph'); + const subexit = context.enter('phrasing'); + const value = containerPhrasing(node, context, {before: '\n', after: '\n'}); + subexit(); + exit(); + return value +} + +/** + * @typedef {import('mdast').Root} Root + * @typedef {import('../types.js').Handle} Handle + */ + +/** + * @type {Handle} + * @param {Root} node + */ +function root(node, _, context) { return containerFlow(node, context) } @@ -44997,29 +45709,6 @@ function checkRuleRepetition(context) { return repetition } -/** - * @typedef {import('../types.js').Context} Context - * @typedef {import('../types.js').Options} Options - */ - -/** - * @param {Context} context - * @returns {Exclude} - */ -function checkRule(context) { - const marker = context.options.rule || '*'; - - if (marker !== '*' && marker !== '-' && marker !== '_') { - throw new Error( - 'Cannot serialize rules with `' + - marker + - '` for `options.rule`, expected `*`, `-`, or `_`' - ) - } - - return marker -} - /** * @typedef {import('../types.js').Handle} Handle * @typedef {import('mdast').ThematicBreak} ThematicBreak @@ -45069,16 +45758,24 @@ const join = [joinDefaults]; /** @type {Join} */ function joinDefaults(left, right, parent, context) { + // Indented code after list or another indented code. if ( - // Two lists with the same marker. - (right.type === 'list' && - right.type === left.type && - Boolean(left.ordered) === Boolean(right.ordered)) || - // Indented code after list or another indented code. - (right.type === 'code' && - formatCodeAsIndented(right, context) && - (left.type === 'list' || - (left.type === right.type && formatCodeAsIndented(left, context)))) + right.type === 'code' && + formatCodeAsIndented(right, context) && + (left.type === 'list' || + (left.type === right.type && formatCodeAsIndented(left, context))) + ) { + return false + } + + // Two lists with the same marker. + if ( + left.type === 'list' && + left.type === right.type && + Boolean(left.ordered) === Boolean(right.ordered) && + !(left.ordered + ? context.options.bulletOrderedOther + : context.options.bulletOther) ) { return false } @@ -45107,6 +45804,8 @@ function joinDefaults(left, right, parent, context) { /** @type {Array.} */ const unsafe = [ + {character: '\t', after: '[\\r\\n]', inConstruct: 'phrasing'}, + {character: '\t', before: '[\\r\\n]', inConstruct: 'phrasing'}, { character: '\t', inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde'] @@ -45133,6 +45832,8 @@ const unsafe = [ 'headingAtx' ] }, + {character: ' ', after: '[\\r\\n]', inConstruct: 'phrasing'}, + {character: ' ', before: '[\\r\\n]', inConstruct: 'phrasing'}, { character: ' ', inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde'] @@ -45191,10 +45892,7 @@ const unsafe = [ // Note: typical escapes are handled in `safe`! {character: '\\', after: '[\\r\\n]', inConstruct: 'phrasing'}, // A right bracket can exit labels. - { - character: ']', - inConstruct: ['label', 'reference'] - }, + {character: ']', inConstruct: ['label', 'reference']}, // Caret is not used in markdown for constructs. // An underscore can start emphasis, strong, or a thematic break. {atBreak: true, character: '_'}, @@ -45240,7 +45938,8 @@ function toMarkdown(tree, options = {}) { unsafe: [], join: [], handlers: {}, - options: {} + options: {}, + indexStack: [] }; configure(context, {unsafe, join, handlers: handle}); @@ -45419,15 +46118,15 @@ const devDependencies = { "@rollup/plugin-commonjs": "^20.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.4", - rollup: "^2.52.7", + rollup: "^2.56.3", shx: "^0.3.3" }; const dependencies = { "markdown-extensions": "^1.1.1", - remark: "^14.0.0", + remark: "^14.0.1", "remark-gfm": "^2.0.0", - "remark-preset-lint-node": "^3.0.0", - "unified-args": "^9.0.0" + "remark-preset-lint-node": "^3.0.1", + "unified-args": "^9.0.2" }; const main = "dist/index.js"; const scripts = { @@ -45525,160 +46224,11 @@ function location(file) { } } -/** - * @typedef {import('unist').Node} Node - * @typedef {import('unist').Parent} Parent - * - * @typedef {string} Type - * @typedef {Object} Props - * - * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.} Test - */ - -const convert = - /** - * @type {( - * ((test: T['type']|Partial|TestFunctionPredicate) => AssertPredicate) & - * ((test?: Test) => AssertAnything) - * )} - */ - ( - /** - * Generate an assertion from a check. - * @param {Test} [test] - * When nullish, checks if `node` is a `Node`. - * When `string`, works like passing `function (node) {return node.type === test}`. - * When `function` checks if function passed the node is true. - * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values. - * When `array`, checks any one of the subtests pass. - * @returns {AssertAnything} - */ - function (test) { - if (test === undefined || test === null) { - return ok - } - - if (typeof test === 'string') { - return typeFactory(test) - } - - if (typeof test === 'object') { - return Array.isArray(test) ? anyFactory(test) : propsFactory(test) - } - - if (typeof test === 'function') { - return castFactory(test) - } - - throw new Error('Expected function, string, or object as test') - } - ); -/** - * @param {Array.} tests - * @returns {AssertAnything} - */ -function anyFactory(tests) { - /** @type {Array.} */ - const checks = []; - let index = -1; - - while (++index < tests.length) { - checks[index] = convert(tests[index]); - } - - return castFactory(any) - - /** - * @this {unknown} - * @param {unknown[]} parameters - * @returns {boolean} - */ - function any(...parameters) { - let index = -1; - - while (++index < checks.length) { - if (checks[index].call(this, ...parameters)) return true - } - - return false - } -} - -/** - * Utility to assert each property in `test` is represented in `node`, and each - * values are strictly equal. - * - * @param {Props} check - * @returns {AssertAnything} - */ -function propsFactory(check) { - return castFactory(all) - - /** - * @param {Node} node - * @returns {boolean} - */ - function all(node) { - /** @type {string} */ - let key; - - for (key in check) { - // @ts-expect-error: hush, it sure works as an index. - if (node[key] !== check[key]) return false - } - - return true - } -} - -/** - * Utility to convert a string into a function which checks a given node’s type - * for said string. - * - * @param {Type} check - * @returns {AssertAnything} - */ -function typeFactory(check) { - return castFactory(type) - - /** - * @param {Node} node - */ - function type(node) { - return node && node.type === check - } -} - -/** - * Utility to convert a string into a function which checks a given node’s type - * for said string. - * @param {TestFunctionAnything} check - * @returns {AssertAnything} - */ -function castFactory(check) { - return assertion - - /** - * @this {unknown} - * @param {Array.} parameters - * @returns {boolean} - */ - function assertion(...parameters) { - // @ts-expect-error: spreading is fine. - return Boolean(check.call(this, ...parameters)) - } -} - -// Utility to return true. -function ok() { - return true -} - /** * @param {string} d * @returns {string} */ -function color$2(d) { +function color(d) { return '\u001B[33m' + d + '\u001B[39m' } @@ -45691,17 +46241,17 @@ function color$2(d) { /** * Continue traversing as normal */ -const CONTINUE$2 = true; +const CONTINUE = true; /** * Do not traverse this node’s children */ -const SKIP$2 = 'skip'; +const SKIP = 'skip'; /** * Stop traversing immediately */ -const EXIT$2 = false; +const EXIT = false; -const visitParents$2 = +const visitParents = /** * @type {( * ((tree: Node, test: T['type']|Partial|import('unist-util-is').TestFunctionPredicate|Array.|import('unist-util-is').TestFunctionPredicate>, visitor: Visitor, reverse?: boolean) => void) & @@ -45753,7 +46303,7 @@ const visitParents$2 = Object.defineProperty(visit, 'name', { value: 'node (' + - color$2(value.type + (name ? '<' + name + '>' : '')) + + color(value.type + (name ? '<' + name + '>' : '')) + ')' }); } @@ -45771,14 +46321,14 @@ const visitParents$2 = var grandparents; if (!test || is(node, index, parents[parents.length - 1] || null)) { - result = toResult$2(visitor(node, parents)); + result = toResult(visitor(node, parents)); - if (result[0] === EXIT$2) { + if (result[0] === EXIT) { return result } } - if (node.children && result[0] !== SKIP$2) { + if (node.children && result[0] !== SKIP) { // @ts-ignore looks like a parent. offset = (reverse ? node.children.length : -1) + step; // @ts-ignore looks like a parent. @@ -45788,7 +46338,7 @@ const visitParents$2 = while (offset > -1 && offset < node.children.length) { subresult = factory(node.children[offset], offset, grandparents)(); - if (subresult[0] === EXIT$2) { + if (subresult[0] === EXIT) { return subresult } @@ -45807,13 +46357,13 @@ const visitParents$2 = * @param {VisitorResult} value * @returns {ActionTuple} */ -function toResult$2(value) { +function toResult(value) { if (Array.isArray(value)) { return value } if (typeof value === 'number') { - return [CONTINUE$2, value] + return [CONTINUE, value] } return [value] @@ -45826,7 +46376,7 @@ function toResult$2(value) { * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult */ -const visit$1 = +const visit = /** * @type {( * ((tree: Node, test: T['type']|Partial|import('unist-util-is').TestFunctionPredicate|Array.|import('unist-util-is').TestFunctionPredicate>, visitor: Visitor, reverse?: boolean) => void) & @@ -45850,7 +46400,7 @@ const visit$1 = test = null; } - visitParents$2(tree, test, overload, reverse); + visitParents(tree, test, overload, reverse); /** * @param {Node} node @@ -45982,7 +46532,7 @@ function messageControl(options) { /** @type {Mark[]} */ const globals = []; - visit$1(tree, options.test, visitor); + visit(tree, options.test, visitor); file.messages = file.messages.filter((m) => filter(m)); @@ -46217,7 +46767,7 @@ function detectGaps(tree, file) { let gap; // Find all gaps. - visit$1(tree, one); + visit(tree, one); // Get the end of the document. // This detects if the last node was the last node. @@ -46449,13 +46999,13 @@ function lintMessageControl() { * @returns {void} */ -const primitives$G = new Set(['string', 'number', 'boolean']); +const primitives = new Set(['string', 'number', 'boolean']); /** * @param {string} id * @param {Rule} rule */ -function lintRule$G(id, rule) { +function lintRule(id, rule) { const parts = id.split(':'); // Possibly useful if externalised later. /* c8 ignore next */ @@ -46468,7 +47018,7 @@ function lintRule$G(id, rule) { /** @type {import('unified').Plugin<[unknown]|void[]>} */ function plugin(raw) { - const [severity, options] = coerce$H(ruleId, raw); + const [severity, options] = coerce$1(ruleId, raw); if (!severity) return @@ -46507,7 +47057,7 @@ function lintRule$G(id, rule) { * @param {unknown} value * @returns {SeverityTuple} */ -function coerce$H(name, value) { +function coerce$1(name, value) { /** @type {unknown[]} */ let result; @@ -46519,7 +47069,7 @@ function coerce$H(name, value) { Array.isArray(value) && // `isArray(unknown)` is turned into `any[]`: // type-coverage:ignore-next-line - primitives$G.has(typeof value[0]) + primitives.has(typeof value[0]) ) { // `isArray(unknown)` is turned into `any[]`: // type-coverage:ignore-next-line @@ -46614,7 +47164,7 @@ function coerce$H(name, value) { * ``` */ -const remarkLintFinalNewline = lintRule$G( +const remarkLintFinalNewline = lintRule( 'remark-lint:final-newline', /** @type {import('unified-lint-rule').Rule} */ (_, file) => { @@ -46629,134 +47179,6 @@ const remarkLintFinalNewline = lintRule$G( var remarkLintFinalNewline$1 = remarkLintFinalNewline; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$F = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$F(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$G(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$G(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$F.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - var pluralize = {exports: {}}; /* global define */ @@ -47262,212 +47684,6 @@ var pluralize = {exports: {}}; var plural = pluralize.exports; -/** - * @param {string} d - * @returns {string} - */ -function color$1(d) { - return '\u001B[33m' + d + '\u001B[39m' -} - -/** - * @typedef {import('unist').Node} Node - * @typedef {import('unist').Parent} Parent - * @typedef {import('unist-util-is').Test} Test - */ - -/** - * Continue traversing as normal - */ -const CONTINUE$1 = true; -/** - * Do not traverse this node’s children - */ -const SKIP$1 = 'skip'; -/** - * Stop traversing immediately - */ -const EXIT$1 = false; - -/** - * Visit children of tree which pass a test - * - * @param tree Abstract syntax tree to walk - * @param test Test node, optional - * @param visitor Function to run for each node - * @param reverse Visit the tree in reverse order, defaults to false - */ -const visitParents$1 = - /** - * @type {( - * ((tree: Tree, test: Check, visitor: Visitor, Check>>, reverse?: boolean) => void) & - * ((tree: Tree, visitor: Visitor>, reverse?: boolean) => void) - * )} - */ - ( - /** - * @param {Node} tree - * @param {Test} test - * @param {Visitor} visitor - * @param {boolean} [reverse] - */ - function (tree, test, visitor, reverse) { - if (typeof test === 'function' && typeof visitor !== 'function') { - reverse = visitor; - // @ts-expect-error no visitor given, so `visitor` is test. - visitor = test; - test = null; - } - - const is = convert(test); - const step = reverse ? -1 : 1; - - factory(tree, null, [])(); - - /** - * @param {Node} node - * @param {number?} index - * @param {Array.} parents - */ - function factory(node, index, parents) { - /** @type {Object.} */ - // @ts-expect-error: hush - const value = typeof node === 'object' && node !== null ? node : {}; - /** @type {string|undefined} */ - let 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() { - /** @type {ActionTuple} */ - let result = []; - /** @type {ActionTuple} */ - let subresult; - /** @type {number} */ - let offset; - /** @type {Array.} */ - let grandparents; - - if (!test || is(node, index, parents[parents.length - 1] || null)) { - result = toResult$1(visitor(node, parents)); - - if (result[0] === EXIT$1) { - return result - } - } - - // @ts-expect-error looks like a parent. - if (node.children && result[0] !== SKIP$1) { - // @ts-expect-error looks like a parent. - offset = (reverse ? node.children.length : -1) + step; - // @ts-expect-error looks like a parent. - grandparents = parents.concat(node); - - // @ts-expect-error looks like a parent. - while (offset > -1 && offset < node.children.length) { - // @ts-expect-error looks like a parent. - subresult = factory(node.children[offset], offset, grandparents)(); - - if (subresult[0] === EXIT$1) { - return subresult - } - - offset = - typeof subresult[1] === 'number' ? subresult[1] : offset + step; - } - } - - return result - } - } - } - ); - -/** - * @param {VisitorResult} value - * @returns {ActionTuple} - */ -function toResult$1(value) { - if (Array.isArray(value)) { - return value - } - - if (typeof value === 'number') { - return [CONTINUE$1, value] - } - - return [value] -} - -/** - * @typedef {import('unist').Node} Node - * @typedef {import('unist').Parent} Parent - * @typedef {import('unist-util-is').Test} Test - * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult - */ - -/** - * Visit children of tree which pass a test - * - * @param tree Abstract syntax tree to walk - * @param test Test, optional - * @param visitor Function to run for each node - * @param reverse Fisit the tree in reverse, defaults to false - */ -const visit = - /** - * @type {( - * ((tree: Tree, test: Check, visitor: Visitor, Check>>, reverse?: boolean) => void) & - * ((tree: Tree, visitor: Visitor>, reverse?: boolean) => void) - * )} - */ - ( - /** - * @param {Node} tree - * @param {Test} test - * @param {Visitor} visitor - * @param {boolean} [reverse] - */ - function (tree, test, visitor, reverse) { - if (typeof test === 'function' && typeof visitor !== 'function') { - reverse = visitor; - visitor = test; - test = null; - } - - visitParents$1(tree, test, overload, reverse); - - /** - * @param {Node} node - * @param {Array.} parents - */ - function overload(node, parents) { - const parent = parents[parents.length - 1]; - return visitor( - node, - parent ? parent.children.indexOf(node) : null, - parent - ) - } - } - ); - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -47507,11 +47723,11 @@ const visit = * 4:2: Incorrect indentation before bullet: remove 1 space */ -const remarkLintListItemBulletIndent = lintRule$F( +const remarkLintListItemBulletIndent = lintRule( 'remark-lint:list-item-bullet-indent', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'list', (list, _, grandparent) => { + visit$1(tree, 'list', (list, _, grandparent) => { let index = -1; while (++index < list.children.length) { @@ -47545,134 +47761,6 @@ const remarkLintListItemBulletIndent = lintRule$F( var remarkLintListItemBulletIndent$1 = remarkLintListItemBulletIndent; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$E = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$E(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$F(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$F(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$E.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @typedef {import('unist').Position} Position * @typedef {import('unist').Point} Point @@ -47865,7 +47953,7 @@ function generated(node) { * 1:1: Incorrect list-item indent style `💩`: use either `'tab-size'`, `'space'`, or `'mixed'` */ -const remarkLintListItemIndent = lintRule$E( +const remarkLintListItemIndent = lintRule( 'remark-lint:list-item-indent', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 'tab-size') => { @@ -47879,7 +47967,7 @@ const remarkLintListItemIndent = lintRule$E( ); } - visit(tree, 'list', (node) => { + visit$1(tree, 'list', (node) => { if (generated(node)) return const spread = node.spread; @@ -47922,134 +48010,6 @@ const remarkLintListItemIndent = lintRule$E( var remarkLintListItemIndent$1 = remarkLintListItemIndent; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$D = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$D(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$E(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$E(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$D.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -48092,11 +48052,11 @@ function coerce$E(name, value) { // See: . const protocol = /^[a-z][a-z+.-]+:\/?/i; -const remarkLintNoAutoLinkWithoutProtocol = lintRule$D( +const remarkLintNoAutoLinkWithoutProtocol = lintRule( 'remark-lint:no-auto-link-without-protocol', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'link', (node) => { + visit$1(tree, 'link', (node) => { if ( !generated(node) && pointStart(node).column === pointStart(node.children[0]).column - 1 && @@ -48112,134 +48072,6 @@ const remarkLintNoAutoLinkWithoutProtocol = lintRule$D( var remarkLintNoAutoLinkWithoutProtocol$1 = remarkLintNoAutoLinkWithoutProtocol; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$C = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$C(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$D(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$D(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$C.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -48297,14 +48129,14 @@ function coerce$D(name, value) { * 3:1: Missing marker in block quote */ -const remarkLintNoBlockquoteWithoutMarker = lintRule$C( +const remarkLintNoBlockquoteWithoutMarker = lintRule( 'remark-lint:no-blockquote-without-marker', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { const value = String(file); const loc = location(file); - visit(tree, 'blockquote', (node) => { + visit$1(tree, 'blockquote', (node) => { let index = -1; while (++index < node.children.length) { @@ -48337,134 +48169,6 @@ const remarkLintNoBlockquoteWithoutMarker = lintRule$C( var remarkLintNoBlockquoteWithoutMarker$1 = remarkLintNoBlockquoteWithoutMarker; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$B = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$B(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$C(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$C(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$B.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -48501,11 +48205,11 @@ function coerce$C(name, value) { * 1:1-1:19: Don’t use literal URLs without angle brackets */ -const remarkLintNoLiteralUrls = lintRule$B( +const remarkLintNoLiteralUrls = lintRule( 'remark-lint:no-literal-urls', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'link', (node) => { + visit$1(tree, 'link', (node) => { const value = toString(node); if ( @@ -48524,142 +48228,14 @@ const remarkLintNoLiteralUrls = lintRule$B( var remarkLintNoLiteralUrls$1 = remarkLintNoLiteralUrls; /** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module ordered-list-marker-style + * @fileoverview + * Warn when the list item marker style of ordered lists violate a given style. * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$A = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$A(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$B(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$B(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$A.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - -/** - * @author Titus Wormer - * @copyright 2015 Titus Wormer - * @license MIT - * @module ordered-list-marker-style - * @fileoverview - * Warn when the list item marker style of ordered lists violate a given style. - * - * Options: `'consistent'`, `'.'`, or `')'`, default: `'consistent'`. + * Options: `'consistent'`, `'.'`, or `')'`, default: `'consistent'`. * * `'consistent'` detects the first used list style and warns when subsequent * lists use different styles. @@ -48708,7 +48284,7 @@ function coerce$B(name, value) { * 1:1: Incorrect ordered list item marker style `💩`: use either `'.'` or `')'` */ -const remarkLintOrderedListMarkerStyle = lintRule$A( +const remarkLintOrderedListMarkerStyle = lintRule( 'remark-lint:ordered-list-marker-style', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 'consistent') => { @@ -48722,7 +48298,7 @@ const remarkLintOrderedListMarkerStyle = lintRule$A( ); } - visit(tree, 'list', (node) => { + visit$1(tree, 'list', (node) => { let index = -1; if (!node.ordered) return @@ -48754,134 +48330,6 @@ const remarkLintOrderedListMarkerStyle = lintRule$A( var remarkLintOrderedListMarkerStyle$1 = remarkLintOrderedListMarkerStyle; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$z = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$z(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$A(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$A(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$z.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -48908,13 +48356,13 @@ function coerce$A(name, value) { * 1:12-2:1: Use two spaces for hard line breaks */ -const remarkLintHardBreakSpaces = lintRule$z( +const remarkLintHardBreakSpaces = lintRule( 'remark-lint:hard-break-spaces', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { const value = String(file); - visit(tree, 'break', (node) => { + visit$1(tree, 'break', (node) => { if (!generated(node)) { const slice = value .slice(pointStart(node).offset, pointEnd(node).offset) @@ -48931,134 +48379,6 @@ const remarkLintHardBreakSpaces = lintRule$z( var remarkLintHardBreakSpaces$1 = remarkLintHardBreakSpaces; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$y = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$y(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$z(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$z(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$y.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -49085,14 +48405,14 @@ function coerce$z(name, value) { * 2:1-2:11: Do not use definitions with the same identifier (1:1) */ -const remarkLintNoDuplicateDefinitions = lintRule$y( +const remarkLintNoDuplicateDefinitions = lintRule( 'remark-lint:no-duplicate-definitions', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { /** @type {Record} */ const map = Object.create(null); - visit(tree, (node) => { + visit$1(tree, (node) => { if ( (node.type === 'definition' || node.type === 'footnoteDefinition') && !generated(node) @@ -49117,134 +48437,6 @@ const remarkLintNoDuplicateDefinitions = lintRule$y( var remarkLintNoDuplicateDefinitions$1 = remarkLintNoDuplicateDefinitions; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$x = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$x(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$y(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$y(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$x.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @typedef {import('mdast').Heading} Heading * @typedef {'atx'|'atx-closed'|'setext'} Style @@ -49354,11 +48546,11 @@ function consolidate(depth, relative) { * #·· */ -const remarkLintNoHeadingContentIndent = lintRule$x( +const remarkLintNoHeadingContentIndent = lintRule( 'remark-lint:no-heading-content-indent', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'heading', (node) => { + visit$1(tree, 'heading', (node) => { if (generated(node)) { return } @@ -49411,143 +48603,15 @@ const remarkLintNoHeadingContentIndent = lintRule$x( var remarkLintNoHeadingContentIndent$1 = remarkLintNoHeadingContentIndent; /** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module no-inline-padding + * @fileoverview + * Warn when phrasing content is padded with spaces between their markers and + * content. * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$w = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$w(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$x(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$x(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$w.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - -/** - * @author Titus Wormer - * @copyright 2015 Titus Wormer - * @license MIT - * @module no-inline-padding - * @fileoverview - * Warn when phrasing content is padded with spaces between their markers and - * content. - * - * Warns for emphasis, strong, delete, image, and link. + * Warns for emphasis, strong, delete, image, and link. * * @example * {"name": "ok.md"} @@ -49565,13 +48629,13 @@ function coerce$x(name, value) { * 1:7-1:38: Don’t pad `link` with inner spaces */ -const remarkLintNoInlinePadding = lintRule$w( +const remarkLintNoInlinePadding = lintRule( 'remark-lint:no-inline-padding', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { // Note: `emphasis`, `strong`, `delete` (GFM) can’t have padding anymore // since CM. - visit(tree, (node) => { + visit$1(tree, (node) => { if ( (node.type === 'link' || node.type === 'linkReference') && !generated(node) @@ -49588,134 +48652,6 @@ const remarkLintNoInlinePadding = lintRule$w( var remarkLintNoInlinePadding$1 = remarkLintNoInlinePadding; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$v = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$v(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$w(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$w(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$v.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -49750,11 +48686,11 @@ function coerce$w(name, value) { * 1:1-1:7: Use the trailing [] on reference images */ -const remarkLintNoShortcutReferenceImage = lintRule$v( +const remarkLintNoShortcutReferenceImage = lintRule( 'remark-lint:no-shortcut-reference-image', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'imageReference', (node) => { + visit$1(tree, 'imageReference', (node) => { if (!generated(node) && node.referenceType === 'shortcut') { file.message('Use the trailing [] on reference images', node); } @@ -49764,134 +48700,6 @@ const remarkLintNoShortcutReferenceImage = lintRule$v( var remarkLintNoShortcutReferenceImage$1 = remarkLintNoShortcutReferenceImage; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$u = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$u(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$v(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$v(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$u.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -49926,11 +48734,11 @@ function coerce$v(name, value) { * 1:1-1:6: Use the trailing `[]` on reference links */ -const remarkLintNoShortcutReferenceLink = lintRule$u( +const remarkLintNoShortcutReferenceLink = lintRule( 'remark-lint:no-shortcut-reference-link', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'linkReference', (node) => { + visit$1(tree, 'linkReference', (node) => { if (!generated(node) && node.referenceType === 'shortcut') { file.message('Use the trailing `[]` on reference links', node); } @@ -49940,134 +48748,6 @@ const remarkLintNoShortcutReferenceLink = lintRule$u( var remarkLintNoShortcutReferenceLink$1 = remarkLintNoShortcutReferenceLink; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$t = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$t(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$u(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$u(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$t.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2016 Titus Wormer @@ -50136,7 +48816,7 @@ function coerce$u(name, value) { * 17:23-17:26: Found reference to undefined definition */ -const remarkLintNoUndefinedReferences = lintRule$t( +const remarkLintNoUndefinedReferences = lintRule( 'remark-lint:no-undefined-references', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = {}) => { @@ -50149,7 +48829,7 @@ const remarkLintNoUndefinedReferences = lintRule$t( /** @type {Record} */ const map = Object.create(null); - visit(tree, (node) => { + visit$1(tree, (node) => { if ( (node.type === 'definition' || node.type === 'footnoteDefinition') && !generated(node) @@ -50158,7 +48838,7 @@ const remarkLintNoUndefinedReferences = lintRule$t( } }); - visit(tree, (node) => { + visit$1(tree, (node) => { // CM specifiers that references only form when defined. // Still, they could be added by plugins, so let’s keep it. /* c8 ignore next 10 */ @@ -50185,7 +48865,7 @@ const remarkLintNoUndefinedReferences = lintRule$t( /** @type {Range[]} */ let ranges = []; - visit(node, (child) => { + visit$1(node, (child) => { // Ignore the node itself. if (child === node) return @@ -50337,143 +49017,15 @@ const remarkLintNoUndefinedReferences = lintRule$t( var remarkLintNoUndefinedReferences$1 = remarkLintNoUndefinedReferences; /** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile + * @author Titus Wormer + * @copyright 2016 Titus Wormer + * @license MIT + * @module no-unused-definitions + * @fileoverview + * Warn when unused definitions are found. * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$s = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$s(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$t(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$t(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$s.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - -/** - * @author Titus Wormer - * @copyright 2016 Titus Wormer - * @license MIT - * @module no-unused-definitions - * @fileoverview - * Warn when unused definitions are found. - * - * @example - * {"name": "ok.md"} + * @example + * {"name": "ok.md"} * * [foo][] * @@ -50492,14 +49044,14 @@ function coerce$t(name, value) { const own$1 = {}.hasOwnProperty; -const remarkLintNoUnusedDefinitions = lintRule$s( +const remarkLintNoUnusedDefinitions = lintRule( 'remark-lint:no-unused-definitions', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { /** @type {Record} */ const map = Object.create(null); - visit(tree, (node) => { + visit$1(tree, (node) => { if ( (node.type === 'definition' || node.type === 'footnoteDefinition') && !generated(node) @@ -50508,7 +49060,7 @@ const remarkLintNoUnusedDefinitions = lintRule$s( } }); - visit(tree, (node) => { + visit$1(tree, (node) => { if ( node.type === 'imageReference' || node.type === 'linkReference' || @@ -50545,161 +49097,34 @@ var remarkLintNoUnusedDefinitions$1 = remarkLintNoUnusedDefinitions; * mistakes or stuff that fails across vendors. */ -const plugins$1 = [ - remarkLint, - // Unix compatibility. - remarkLintFinalNewline$1, - // Rendering across vendors differs greatly if using other styles. - remarkLintListItemBulletIndent$1, - [remarkLintListItemIndent$1, 'tab-size'], - // Differs or unsupported across vendors. - remarkLintNoAutoLinkWithoutProtocol$1, - remarkLintNoBlockquoteWithoutMarker$1, - remarkLintNoLiteralUrls$1, - [remarkLintOrderedListMarkerStyle$1, '.'], - // Mistakes. - remarkLintHardBreakSpaces$1, - remarkLintNoDuplicateDefinitions$1, - remarkLintNoHeadingContentIndent$1, - remarkLintNoInlinePadding$1, - remarkLintNoShortcutReferenceImage$1, - remarkLintNoShortcutReferenceLink$1, - remarkLintNoUndefinedReferences$1, - remarkLintNoUnusedDefinitions$1 -]; - -const remarkPresetLintRecommended = {plugins: plugins$1}; +/** @type {Preset} */ +const remarkPresetLintRecommended = { + plugins: [ + remarkLint, + // Unix compatibility. + remarkLintFinalNewline$1, + // Rendering across vendors differs greatly if using other styles. + remarkLintListItemBulletIndent$1, + [remarkLintListItemIndent$1, 'tab-size'], + // Differs or unsupported across vendors. + remarkLintNoAutoLinkWithoutProtocol$1, + remarkLintNoBlockquoteWithoutMarker$1, + remarkLintNoLiteralUrls$1, + [remarkLintOrderedListMarkerStyle$1, '.'], + // Mistakes. + remarkLintHardBreakSpaces$1, + remarkLintNoDuplicateDefinitions$1, + remarkLintNoHeadingContentIndent$1, + remarkLintNoInlinePadding$1, + remarkLintNoShortcutReferenceImage$1, + remarkLintNoShortcutReferenceLink$1, + remarkLintNoUndefinedReferences$1, + remarkLintNoUnusedDefinitions$1 + ] +}; var remarkPresetLintRecommended$1 = remarkPresetLintRecommended; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$r = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$r(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$s(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$s(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$r.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -50750,11 +49175,11 @@ function coerce$s(name, value) { * 9:3: Add 1 space between block quote and content */ -const remarkLintBlockquoteIndentation = lintRule$r( +const remarkLintBlockquoteIndentation = lintRule( 'remark-lint:blockquote-indentation', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 'consistent') => { - visit(tree, 'blockquote', (node) => { + visit$1(tree, 'blockquote', (node) => { if (generated(node) || node.children.length === 0) { return } @@ -50792,134 +49217,6 @@ function check(node) { return pointStart(node.children[0]).column - pointStart(node).column } -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$q = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$q(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$r(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$r(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$q.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -50999,7 +49296,7 @@ function coerce$r(name, value) { * 1:1: Incorrect checked checkbox marker `💩`: use either `'x'`, or `'X'` */ -const remarkLintCheckboxCharacterStyle = lintRule$q( +const remarkLintCheckboxCharacterStyle = lintRule( 'remark-lint:checkbox-character-style', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 'consistent') => { @@ -51030,7 +49327,7 @@ const remarkLintCheckboxCharacterStyle = lintRule$q( ); } - visit(tree, 'listItem', (node) => { + visit$1(tree, 'listItem', (node) => { const head = node.children[0]; const point = pointStart(head); @@ -51082,134 +49379,6 @@ const remarkLintCheckboxCharacterStyle = lintRule$q( var remarkLintCheckboxCharacterStyle$1 = remarkLintCheckboxCharacterStyle; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$p = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$p(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$q(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$q(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$p.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -51242,14 +49411,14 @@ function coerce$q(name, value) { * 4:7-4:10: Checkboxes should be followed by a single character */ -const remarkLintCheckboxContentIndent = lintRule$p( +const remarkLintCheckboxContentIndent = lintRule( 'remark-lint:checkbox-content-indent', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { const value = String(file); const loc = location(file); - visit(tree, 'listItem', (node) => { + visit$1(tree, 'listItem', (node) => { const head = node.children[0]; const point = pointStart(head); @@ -51291,142 +49460,14 @@ const remarkLintCheckboxContentIndent = lintRule$p( var remarkLintCheckboxContentIndent$1 = remarkLintCheckboxContentIndent; /** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module code-block-style + * @fileoverview + * Warn when code blocks do not adhere to a given style. * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$o = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$o(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$p(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$p(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$o.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - -/** - * @author Titus Wormer - * @copyright 2015 Titus Wormer - * @license MIT - * @module code-block-style - * @fileoverview - * Warn when code blocks do not adhere to a given style. - * - * Options: `'consistent'`, `'fenced'`, or `'indented'`, default: `'consistent'`. + * Options: `'consistent'`, `'fenced'`, or `'indented'`, default: `'consistent'`. * * `'consistent'` detects the first used code block style and warns when * subsequent code blocks uses different styles. @@ -51521,7 +49562,7 @@ function coerce$p(name, value) { * 1:1: Incorrect code block style `💩`: use either `'consistent'`, `'fenced'`, or `'indented'` */ -const remarkLintCodeBlockStyle = lintRule$o( +const remarkLintCodeBlockStyle = lintRule( 'remark-lint:code-block-style', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 'consistent') => { @@ -51539,7 +49580,7 @@ const remarkLintCodeBlockStyle = lintRule$o( ); } - visit(tree, 'code', (node) => { + visit$1(tree, 'code', (node) => { if (generated(node)) { return } @@ -51563,134 +49604,6 @@ const remarkLintCodeBlockStyle = lintRule$o( var remarkLintCodeBlockStyle$1 = remarkLintCodeBlockStyle; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$n = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$n(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$o(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$o(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$n.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -51717,13 +49630,13 @@ function coerce$o(name, value) { const label = /^\s*\[((?:\\[\s\S]|[^[\]])+)]/; -const remarkLintDefinitionSpacing = lintRule$n( +const remarkLintDefinitionSpacing = lintRule( 'remark-lint:definition-spacing', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { const value = String(file); - visit(tree, (node) => { + visit$1(tree, (node) => { if (node.type === 'definition' || node.type === 'footnoteDefinition') { const start = pointStart(node).offset; const end = pointEnd(node).offset; @@ -51745,134 +49658,6 @@ const remarkLintDefinitionSpacing = lintRule$n( var remarkLintDefinitionSpacing$1 = remarkLintDefinitionSpacing; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$m = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$m(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$n(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$n(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$m.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -51957,7 +49742,7 @@ function coerce$n(name, value) { const fence = /^ {0,3}([~`])\1{2,}/; -const remarkLintFencedCodeFlag = lintRule$m( +const remarkLintFencedCodeFlag = lintRule( 'remark-lint:fenced-code-flag', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option) => { @@ -51978,7 +49763,7 @@ const remarkLintFencedCodeFlag = lintRule$m( } } - visit(tree, 'code', (node) => { + visit$1(tree, 'code', (node) => { if (!generated(node)) { if (node.lang) { if (allowed.length > 0 && !allowed.includes(node.lang)) { @@ -52001,134 +49786,6 @@ const remarkLintFencedCodeFlag = lintRule$m( var remarkLintFencedCodeFlag$1 = remarkLintFencedCodeFlag; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$l = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$l(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$m(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$m(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$l.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -52220,7 +49877,7 @@ function coerce$m(name, value) { * 1:1: Incorrect fenced code marker `💩`: use either `'consistent'`, `` '`' ``, or `'~'` */ -const remarkLintFencedCodeMarker = lintRule$l( +const remarkLintFencedCodeMarker = lintRule( 'remark-lint:fenced-code-marker', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 'consistent') => { @@ -52234,7 +49891,7 @@ const remarkLintFencedCodeMarker = lintRule$l( ); } - visit(tree, 'code', (node) => { + visit$1(tree, 'code', (node) => { const start = pointStart(node).offset; if (typeof start === 'number') { @@ -52264,162 +49921,34 @@ const remarkLintFencedCodeMarker = lintRule$l( var remarkLintFencedCodeMarker$1 = remarkLintFencedCodeMarker; /** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module file-extension + * @fileoverview + * Warn when the file extension differ from the preferred extension. * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple + * Does not warn when given documents have no file extensions (such as + * `AUTHORS` or `LICENSE`). * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} + * Options: `string`, default: `'md'` — Expected file extension. + * + * @example + * {"name": "readme.md"} + * + * @example + * {"name": "readme"} + * + * @example + * {"name": "readme.mkd", "label": "output", "positionless": true} + * + * 1:1: Incorrect extension: use `md` + * + * @example + * {"name": "readme.mkd", "setting": "mkd"} */ -const primitives$k = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$k(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$l(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$l(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$k.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - -/** - * @author Titus Wormer - * @copyright 2015 Titus Wormer - * @license MIT - * @module file-extension - * @fileoverview - * Warn when the file extension differ from the preferred extension. - * - * Does not warn when given documents have no file extensions (such as - * `AUTHORS` or `LICENSE`). - * - * Options: `string`, default: `'md'` — Expected file extension. - * - * @example - * {"name": "readme.md"} - * - * @example - * {"name": "readme"} - * - * @example - * {"name": "readme.mkd", "label": "output", "positionless": true} - * - * 1:1: Incorrect extension: use `md` - * - * @example - * {"name": "readme.mkd", "setting": "mkd"} - */ - -const remarkLintFileExtension = lintRule$k( +const remarkLintFileExtension = lintRule( 'remark-lint:file-extension', /** @type {import('unified-lint-rule').Rule} */ (_, file, option = 'md') => { @@ -52433,134 +49962,6 @@ const remarkLintFileExtension = lintRule$k( var remarkLintFileExtension$1 = remarkLintFileExtension; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$j = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$j(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$k(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$k(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$j.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -52603,13 +50004,13 @@ function coerce$k(name, value) { * [example-2]: http://example.com/two/ */ -const remarkLintFinalDefinition = lintRule$j( +const remarkLintFinalDefinition = lintRule( 'remark-lint:final-definition', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { let last = 0; - visit( + visit$1( tree, (node) => { // Ignore generated and HTML comment nodes. @@ -52643,134 +50044,6 @@ const remarkLintFinalDefinition = lintRule$j( var remarkLintFinalDefinition$1 = remarkLintFinalDefinition; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$i = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$i(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$j(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$j(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$i.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -52865,11 +50138,11 @@ function coerce$j(name, value) { const re = /} */ (tree, file, option = 1) => { - visit(tree, (node) => { + visit$1(tree, (node) => { if (!generated(node)) { /** @type {Depth|undefined} */ let rank; @@ -52904,134 +50177,6 @@ function infer(node) { return results ? Number(results[1]) : undefined } -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$h = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$h(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$i(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$i(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$h.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -53110,7 +50255,7 @@ function coerce$i(name, value) { * 1:1: Incorrect heading style type `💩`: use either `'consistent'`, `'atx'`, `'atx-closed'`, or `'setext'` */ -const remarkLintHeadingStyle = lintRule$h( +const remarkLintHeadingStyle = lintRule( 'remark-lint:heading-style', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 'consistent') => { @@ -53127,7 +50272,7 @@ const remarkLintHeadingStyle = lintRule$h( ); } - visit(tree, 'heading', (node) => { + visit$1(tree, 'heading', (node) => { if (!generated(node)) { if (option === 'consistent') { // Funky nodes perhaps cannot be detected. @@ -53144,140 +50289,12 @@ const remarkLintHeadingStyle = lintRule$h( var remarkLintHeadingStyle$1 = remarkLintHeadingStyle; /** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$g = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$g(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$h(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$h(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$g.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - -/** - * @author Titus Wormer - * @copyright 2015 Titus Wormer - * @license MIT - * @module maximum-line-length - * @fileoverview - * Warn when lines are too long. + * @author Titus Wormer + * @copyright 2015 Titus Wormer + * @license MIT + * @module maximum-line-length + * @fileoverview + * Warn when lines are too long. * * Options: `number`, default: `80`. * @@ -53369,14 +50386,14 @@ function coerce$h(name, value) { * 4:12: Line must be at most 10 characters */ -const remarkLintMaximumLineLength = lintRule$g( +const remarkLintMaximumLineLength = lintRule( 'remark-lint:maximum-line-length', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 80) => { const value = String(file); const lines = value.split(/\r?\n/); - visit(tree, (node) => { + visit$1(tree, (node) => { if ( (node.type === 'heading' || node.type === 'table' || @@ -53398,7 +50415,7 @@ const remarkLintMaximumLineLength = lintRule$g( // the wrap. // However, when they do, and there’s whitespace after it, they are not // allowed. - visit(tree, (node, pos, parent_) => { + visit$1(tree, (node, pos, parent_) => { const parent = /** @type {Parent} */ (parent_); if ( @@ -53462,134 +50479,6 @@ const remarkLintMaximumLineLength = lintRule$g( var remarkLintMaximumLineLength$1 = remarkLintMaximumLineLength; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$f = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$f(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$g(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$g(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$f.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -53636,11 +50525,11 @@ function coerce$g(name, value) { * 4:5: Remove 2 lines after node */ -const remarkLintNoConsecutiveBlankLines = lintRule$f( +const remarkLintNoConsecutiveBlankLines = lintRule( 'remark-lint:no-consecutive-blank-lines', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, (node) => { + visit$1(tree, (node) => { if (!generated(node) && 'children' in node) { const head = node.children[0]; @@ -53700,134 +50589,6 @@ const remarkLintNoConsecutiveBlankLines = lintRule$f( var remarkLintNoConsecutiveBlankLines$1 = remarkLintNoConsecutiveBlankLines; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$e = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$e(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$f(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$f(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$e.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -53860,7 +50621,7 @@ function coerce$f(name, value) { * 1:1: Do not start file names with `an` */ -const remarkLintNoFileNameArticles = lintRule$e( +const remarkLintNoFileNameArticles = lintRule( 'remark-lint:no-file-name-articles', /** @type {import('unified-lint-rule').Rule} */ (_, file) => { @@ -53874,134 +50635,6 @@ const remarkLintNoFileNameArticles = lintRule$e( var remarkLintNoFileNameArticles$1 = remarkLintNoFileNameArticles; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$d = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$d(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$e(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$e(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$d.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -54019,7 +50652,7 @@ function coerce$e(name, value) { * 1:1: Do not use consecutive dashes in a file name */ -const remarkLintNoFileNameConsecutiveDashes = lintRule$d( +const remarkLintNoFileNameConsecutiveDashes = lintRule( 'remark-lint:no-file-name-consecutive-dashes', /** @type {import('unified-lint-rule').Rule} */ (_, file) => { @@ -54031,134 +50664,6 @@ const remarkLintNoFileNameConsecutiveDashes = lintRule$d( var remarkLintNoFileNameConsecutiveDashes$1 = remarkLintNoFileNameConsecutiveDashes; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$c = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$c(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$d(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$d(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$c.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -54181,145 +50686,17 @@ function coerce$d(name, value) { * 1:1: Do not use initial or final dashes in a file name */ -const remarkLintNofileNameOuterDashes = lintRule$c( +const remarkLintNofileNameOuterDashes = lintRule( 'remark-lint:no-file-name-outer-dashes', /** @type {import('unified-lint-rule').Rule} */ (_, file) => { - if (file.stem && /^-|-$/.test(file.stem)) { - file.message('Do not use initial or final dashes in a file name'); - } - } -); - -var remarkLintNofileNameOuterDashes$1 = remarkLintNofileNameOuterDashes; - -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$b = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$b(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$c(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$c(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$b.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; + if (file.stem && /^-|-$/.test(file.stem)) { + file.message('Do not use initial or final dashes in a file name'); } } +); - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} +var remarkLintNofileNameOuterDashes$1 = remarkLintNofileNameOuterDashes; /** * @author Titus Wormer @@ -54372,11 +50749,11 @@ function coerce$c(name, value) { * 8:4: Remove 3 spaces before this heading */ -const remarkLintNoHeadingIndent = lintRule$b( +const remarkLintNoHeadingIndent = lintRule( 'remark-lint:no-heading-indent', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'heading', (node, _, parent) => { + visit$1(tree, 'heading', (node, _, parent) => { // Note: it’s rather complex to detect what the expected indent is in block // quotes and lists, so let’s only do directly in root for now. if (generated(node) || (parent && parent.type !== 'root')) { @@ -54401,134 +50778,6 @@ const remarkLintNoHeadingIndent = lintRule$b( var remarkLintNoHeadingIndent$1 = remarkLintNoHeadingIndent; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$a = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$a(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$b(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$b(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$a.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -54559,14 +50808,14 @@ function coerce$b(name, value) { * 3:1-3:6: Don’t use multiple top level headings (1:1) */ -const remarkLintNoMultipleToplevelHeadings = lintRule$a( +const remarkLintNoMultipleToplevelHeadings = lintRule( 'remark-lint:no-multiple-toplevel-headings', /** @type {import('unified-lint-rule').Rule} */ (tree, file, option = 1) => { /** @type {string|undefined} */ let duplicate; - visit(tree, 'heading', (node) => { + visit$1(tree, 'heading', (node) => { if (!generated(node) && node.depth === option) { if (duplicate) { file.message( @@ -54583,134 +50832,6 @@ const remarkLintNoMultipleToplevelHeadings = lintRule$a( var remarkLintNoMultipleToplevelHeadings$1 = remarkLintNoMultipleToplevelHeadings; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$9 = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$9(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$a(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$a(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$9.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -54785,11 +50906,11 @@ const flags = new Set([ 'zsh' ]); -const remarkLintNoShellDollars = lintRule$9( +const remarkLintNoShellDollars = lintRule( 'remark-lint:no-shell-dollars', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { - visit(tree, 'code', (node) => { + visit$1(tree, 'code', (node) => { // Check both known shell code and unknown code. if (!generated(node) && node.lang && flags.has(node.lang)) { const lines = node.value @@ -54817,134 +50938,6 @@ const remarkLintNoShellDollars = lintRule$9( var remarkLintNoShellDollars$1 = remarkLintNoShellDollars; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$8 = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$8(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$9(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$9(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$8.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -55011,14 +51004,14 @@ function coerce$9(name, value) { * 3:6: Do not indent table rows */ -const remarkLintNoTableIndentation = lintRule$8( +const remarkLintNoTableIndentation = lintRule( 'remark-lint:no-table-indentation', /** @type {import('unified-lint-rule').Rule} */ (tree, file) => { const value = String(file); const loc = location(value); - visit(tree, 'table', (node, _, parent) => { + visit$1(tree, 'table', (node, _, parent) => { const end = pointEnd(node).line; let line = pointStart(node).line; let column = 0; @@ -55072,134 +51065,6 @@ const remarkLintNoTableIndentation = lintRule$8( var remarkLintNoTableIndentation$1 = remarkLintNoTableIndentation; -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$7 = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$7(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$8(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$8(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$7.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - /** * @author Titus Wormer * @copyright 2015 Titus Wormer @@ -55255,7 +51120,7 @@ function coerce$8(name, value) { * 13:41: Use spaces instead of tabs */ -const remarkLintNoTabs = lintRule$7( +const remarkLintNoTabs = lintRule( 'remark-lint:no-tabs', /** @type {import('unified-lint-rule').Rule} */ (_, file) => { @@ -55732,7 +51597,7 @@ function factory(id, rule) { return attacher function attacher(raw) { - var config = coerce$7(ruleId, raw); + var config = coerce(ruleId, raw); var severity = config[0]; var options = config[1]; var fatal = severity === 2; @@ -55772,7 +51637,7 @@ function factory(id, rule) { } // Coerce a value to a severity--options tuple. -function coerce$7(name, value) { +function coerce(name, value) { var def = 1; var result; var level; @@ -55851,134 +51716,6 @@ function noTrailingSpaces(ast, file) { } } -/** - * @typedef {import('unist').Node} Node - * @typedef {import('vfile').VFile} VFile - * - * @typedef {0|1|2} Severity - * @typedef {'warn'|'on'|'off'|'error'} Label - * @typedef {[Severity, ...unknown[]]} SeverityTuple - * - * @callback Rule - * @param {Node} tree - * @param {VFile} file - * @param {unknown} options - * @returns {void} - */ - -const primitives$6 = new Set(['string', 'number', 'boolean']); - -/** - * @param {string} id - * @param {Rule} rule - */ -function lintRule$6(id, rule) { - const parts = id.split(':'); - // Possibly useful if externalised later. - /* c8 ignore next */ - const source = parts[1] ? parts[0] : undefined; - const ruleId = parts[1]; - - Object.defineProperty(plugin, 'name', {value: id}); - - return plugin - - /** @type {import('unified').Plugin<[unknown]|void[]>} */ - function plugin(raw) { - const [severity, options] = coerce$6(ruleId, raw); - - if (!severity) return - - const fatal = severity === 2; - - return (tree, file, next) => { - let index = file.messages.length - 1; - - wrap(rule, (error) => { - const messages = file.messages; - - // Add the error, if not already properly added. - // Only happens for incorrect plugins. - /* c8 ignore next 6 */ - // @ts-expect-error: errors could be `messages`. - if (error && !messages.includes(error)) { - try { - file.fail(error); - } catch {} - } - - while (++index < messages.length) { - Object.assign(messages[index], {ruleId, source, fatal}); - } - - next(); - })(tree, file, options); - } - } -} - -/** - * Coerce a value to a severity--options tuple. - * - * @param {string} name - * @param {unknown} value - * @returns {SeverityTuple} - */ -function coerce$6(name, value) { - /** @type {unknown[]} */ - let result; - - if (typeof value === 'boolean') { - result = [value]; - } else if (value === null || value === undefined) { - result = [1]; - } else if ( - Array.isArray(value) && - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - primitives$6.has(typeof value[0]) - ) { - // `isArray(unknown)` is turned into `any[]`: - // type-coverage:ignore-next-line - result = [...value]; - } else { - result = [1, value]; - } - - let level = result[0]; - - if (typeof level === 'boolean') { - level = level ? 1 : 0; - } else if (typeof level === 'string') { - if (level === 'off') { - level = 0; - } else if (level === 'on' || level === 'warn') { - level = 1; - } else if (level === 'error') { - level = 2; - } else { - level = 1; - result = [level, result]; - } - } - - if (typeof level !== 'number' || level < 0 || level > 2) { - throw new Error( - 'Incorrect severity `' + - level + - '` for `' + - name + - '`, ' + - 'expected 0, 1, or 2' - ) - } - - result[0] = level; - - // @ts-expect-error: it’s now a valid tuple. - return result -} - function* getLinksRecursively(node) { if (node.url) { yield node; @@ -56018,7 +51755,7 @@ function validateLinks(tree, vfile) { } } -const remarkLintNodejsLinks = lintRule$6( +const remarkLintNodejsLinks = lintRule( "remark-lint:nodejs-links", validateLinks ); @@ -56235,7 +51972,7 @@ function validateMeta(node, file, meta) { } function validateYAMLComments(tree, file) { - visit(tree, "html", function visitor(node) { + visit$1(tree, "html", function visitor(node) { if (node.value.startsWith("