From 82e8ca41f4021dc416ee918381e74fdd732f29c9 Mon Sep 17 00:00:00 2001 From: Nicolas MASSART Date: Thu, 24 Sep 2020 07:50:10 +0200 Subject: [PATCH] Update markdown lint and linkchecker (#521) * update CI and scripts Signed-off-by: Nicolas MASSART * fix MD and ignore log files Signed-off-by: Nicolas MASSART * remove previously commited logs Signed-off-by: Nicolas MASSART * fix package path Signed-off-by: Nicolas MASSART * update link checker conf Signed-off-by: Nicolas MASSART * restored some link exclusions probably ddos protection on etherescan and internal postman link is in an include making path wrong when checked separately Signed-off-by: Nicolas MASSART --- .circleci/config.yml | 26 +- .gitignore | 1 + CHANGELOG.md | 2 +- CI/linkchecker/link_check_conf.json | 18 +- CI/markdownlint/info_style.rb | 15 - CI/markdownlint/lint-base-style.yml | 23 + CI/markdownlint/lint-info-style.yml | 20 + CI/markdownlint/style.rb | 21 - CI/scripts/README.md | 2 +- CI/scripts/run_job.sh | 29 + CI/scripts/test_all.sh | 19 +- CI/scripts/test_build.sh | 3 +- CI/scripts/test_guidelines.sh | 3 +- CI/scripts/test_links.sh | 3 +- CI/scripts/test_lint.sh | 2 - CI/scripts/test_markdown_syntax.sh | 3 + SECURITY.md | 2 +- .../Consensus-Protocols/Comparing-PoA.md | 2 +- docs/Concepts/Mining.md | 2 +- docs/Concepts/Monitoring.md | 1 - docs/Concepts/Network-vs-Node.md | 2 +- docs/Concepts/Plugins.md | 2 +- docs/Concepts/Privacy/Private-Transactions.md | 1 - docs/Concepts/Protocol-Upgrades.md | 2 +- docs/Concepts/TLS.md | 2 +- docs/HowTo/Backup/Backup.md | 2 +- docs/HowTo/Configure/Configure-Mining.md | 2 +- docs/HowTo/Configure/Configure-TLS.md | 2 +- .../Configure/Consensus-Protocols/Clique.md | 2 +- .../Consensus-Protocols/QuorumIBFT.md | 2 +- docs/HowTo/Configure/Contracts-in-Genesis.md | 2 +- docs/HowTo/Configure/Passing-JVM-Options.md | 2 +- docs/HowTo/Deploy/Ansible.md | 2 +- docs/HowTo/Deploy/Bootnodes.md | 2 +- docs/HowTo/Deploy/Cloud.md | 2 +- docs/HowTo/Deploy/Validators.md | 2 +- docs/HowTo/Find-and-Connect/Bootnodes.md | 2 +- .../Find-and-Connect/Configuring-Ports.md | 2 +- docs/HowTo/Find-and-Connect/Managing-Peers.md | 1 - docs/HowTo/Find-and-Connect/Specifying-NAT.md | 2 +- docs/HowTo/Get-Started/Build-from-source.md | 2 +- .../System-Requirements-Private.md | 1 - docs/HowTo/Interact/APIs/API.md | 2 +- .../HowTo/Interact/APIs/Using-JSON-RPC-API.md | 1 - .../Filters/Accessing-Logs-Using-JSON-RPC.md | 1 - docs/HowTo/Monitor/Elastic-Stack.md | 2 +- .../Send-Transactions/Account-Management.md | 1 - .../Concurrent-Private-Transactions.md | 2 +- .../Creating-Sending-Private-Transactions.md | 2 +- docs/HowTo/Troubleshoot/Trace-Transactions.md | 2 +- docs/HowTo/Upgrade/Upgrade-Node.md | 2 - docs/HowTo/Upgrade/Upgrade-Protocol.md | 2 +- .../Create-Manage-Privacy-Groups.md | 2 +- docs/HowTo/Use-Privacy/EEA-Compliant.md | 1 - docs/HowTo/Use-Privacy/Privacy.md | 2 +- docs/HowTo/Use-Privacy/Use-OnChainPrivacy.md | 2 +- docs/Reference/API-Objects.md | 2 +- docs/Reference/Evm-Tool.md | 2 +- docs/Tutorials/Privacy/Configuring-Privacy.md | 1 - .../Privacy/web3js-eea-Multinode-example.md | 2 +- package-lock.json | 671 ++++++++++++++---- package.json | 13 +- 62 files changed, 684 insertions(+), 269 deletions(-) delete mode 100644 CI/markdownlint/info_style.rb create mode 100644 CI/markdownlint/lint-base-style.yml create mode 100644 CI/markdownlint/lint-info-style.yml delete mode 100644 CI/markdownlint/style.rb create mode 100755 CI/scripts/run_job.sh delete mode 100755 CI/scripts/test_lint.sh create mode 100755 CI/scripts/test_markdown_syntax.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index c3b5f9e8175..90cca191aa5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -10,9 +10,6 @@ executors: shell_executor: docker: - image: circleci/buildpack-deps:buster-scm - ruby_executor: - docker: - - image: circleci/ruby:2-stretch jobs: dco: @@ -50,7 +47,7 @@ jobs: command: | python3 -m venv venv . venv/bin/activate - pip install -r CI/requirements.txt + pip install -q -r CI/requirements.txt - save_cache: paths: - ./venv @@ -86,11 +83,11 @@ jobs: command: 'sudo npm install -g npm@latest' - restore_cache: keys: - - deps-{{ checksum "package.json" }} + - deps-{{ checksum "package-lock.json" }} - run: name: Install dependencies command: | - npm install + npm ci - run: name: Run markdown link checker command: | @@ -98,28 +95,35 @@ jobs: - save_cache: paths: - ./node_modules - key: deps-{{ checksum "package.json" }} + key: deps-{{ checksum "package-lock.json" }} - store_artifacts: path: ./linkchecker.out destination: linkchecker.out markdownlint: - executor: ruby_executor + executor: node_executor steps: - checkout + - restore_cache: + keys: + - deps-{{ checksum "package-lock.json" }} - run: name: Install dependencies command: | - gem install mdl + npm ci - run: shell: /bin/bash #this is a non breaking command so it will always return success name: Run Markdownlint info checks command: | - mdl --ignore-front-matter --style ./CI/markdownlint/info_style.rb . | tee ./markdownlint_info.out + npm run test:markdown:info - run: name: Run Markdownlint command: | - mdl --ignore-front-matter --style ./CI/markdownlint/style.rb . | tee ./markdownlint.out + npm run test:markdown + - save_cache: + paths: + - ./node_modules + key: deps-{{ checksum "package-lock.json" }} - store_artifacts: path: ./markdownlint.out destination: ./markdownlint.out diff --git a/.gitignore b/.gitignore index eedc491cf75..d9bde67bb0d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ env/ node_modules/ .circleci/process.yml .DS_Store +*.log diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f4b3e779b7..0b7ec913939 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,2 @@ For changes see the Hyperledger Besu -[CHANGELOG.md](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md) \ No newline at end of file +[CHANGELOG.md](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md) diff --git a/CI/linkchecker/link_check_conf.json b/CI/linkchecker/link_check_conf.json index 259bbc284c8..70c528810db 100644 --- a/CI/linkchecker/link_check_conf.json +++ b/CI/linkchecker/link_check_conf.json @@ -7,22 +7,12 @@ "pattern": "^http(s)?://127.0.0.1" }, { - "pattern": "^http(s)?://.+.etherscan.io/txs\\?block=" - }, - { - "pattern": "^http(s)?://.+.etherscan.io/tx/0x" - }, - { - "pattern": "^http(s)?://.+.etherscan.io/address/0x" - }, - { - "pattern": "^http(s)?://.+.blockscout.com/" + "pattern": "^http(s)?://.+.etherscan.io/" }, { "pattern": "/postman/.+.json" - }, - { - "pattern": "https://remix.ethereum.org/" } - ] + ], + "aliveStatusCodes":[200, 206], + "retryOn429":true } diff --git a/CI/markdownlint/info_style.rb b/CI/markdownlint/info_style.rb deleted file mode 100644 index f952969a56b..00000000000 --- a/CI/markdownlint/info_style.rb +++ /dev/null @@ -1,15 +0,0 @@ -# See https://github.com/markdownlint/markdownlint/blob/master/docs/creating_styles.md for doc -# on creating and modifying this style file -# rules are named by their aliases here for clarity, not their code. -# But for instance, line-length = MD013 - -rule 'line-length', :line_length=>100, :code_blocks=>false, :tables=> false - -# excluded rule for error as kramdown has a bug. -# see https://github.com/markdownlint/markdownlint/issues/294#issuecomment-600600407 -# these are now in this info style. -# to be put back in error style once bug fixed. -rule 'single-h1' -rule 'no-space-in-code' -rule "no-duplicate-header", :allow_different_nesting => true -rule 'first-line-h1' diff --git a/CI/markdownlint/lint-base-style.yml b/CI/markdownlint/lint-base-style.yml new file mode 100644 index 00000000000..806570d7ff0 --- /dev/null +++ b/CI/markdownlint/lint-base-style.yml @@ -0,0 +1,23 @@ +default: true +no-trailing-punctuation: + punctuation: '.,;:!' +ul-indent: + indent: 4 + +no-bare-urls: false +code-block-style: false +line-length: false + + # excluded rule for as kramdown has a bug. + # see https://github.com/markdownlint/markdownlint/issues/294#issuecomment-600600407 + # these are now in info style. + # to be put back in error style once bug fixed. +single-h1: false +no-space-in-code: false +no-duplicate-header: false +first-line-h1: false + + # Because I hate HTML but sometimes a table is hard to format in MD + # now in info style. +no-inline-html: false + diff --git a/CI/markdownlint/lint-info-style.yml b/CI/markdownlint/lint-info-style.yml new file mode 100644 index 00000000000..c326af8e850 --- /dev/null +++ b/CI/markdownlint/lint-info-style.yml @@ -0,0 +1,20 @@ +line-length: + line_length: 100 + code_blocks: false + tables: false + +no-bare-urls: false + + # excluded rule for error as kramdown has a bug. + # see https://github.com/markdownlint/markdownlint/issues/294#issuecomment-600600407 + # these are now in this info style. + # to be put back in error style once bug fixed. +single-h1: true +no-space-in-code: true +no-duplicate-header: + allow_different_nesting: true +first-line-h1: true + + # Because I hate HTML but sometimes a table is hard to format in MD +no-inline-html: true + diff --git a/CI/markdownlint/style.rb b/CI/markdownlint/style.rb deleted file mode 100644 index 1aca3b0a06a..00000000000 --- a/CI/markdownlint/style.rb +++ /dev/null @@ -1,21 +0,0 @@ -# See https://github.com/markdownlint/markdownlint/blob/master/docs/creating_styles.md for doc -# on creating and modifying this style file -# rules are named by their aliases here for clarity, not their code. -# But for instance, ul-indent = MD007 -all - -rule 'no-trailing-punctuation', :punctuation=>'.,;:!' -rule 'ul-indent', :indent=> 4 - -exclude_rule 'no-bare-urls' -exclude_rule 'code-block-style' -exclude_rule 'line-length' - -# excluded rule for as kramdown has a bug. -# see https://github.com/markdownlint/markdownlint/issues/294#issuecomment-600600407 -# these are now in info style. -# to be put back in error style once bug fixed. -exclude_rule 'single-h1' -exclude_rule 'no-space-in-code' -exclude_rule 'no-duplicate-header' -exclude_rule 'first-line-h1' diff --git a/CI/scripts/README.md b/CI/scripts/README.md index 3a9bd5bef5f..e823684f2b9 100755 --- a/CI/scripts/README.md +++ b/CI/scripts/README.md @@ -17,7 +17,7 @@ Go to the besu-doc project root directory and run one of the following scripts: * `CI/scripts/test_links.sh` tests the internal and external links in the doc. If a link is incorrect or the targeted web page is unavailable (for external sites), the test will fail and display the faulty link. -* `CI/scripts/test_lint.sh` tests the Markdown syntax for issues. Sometimes they are not visible +* `CI/scripts/test_markdown_syntax.sh` tests the Markdown syntax for issues. Sometimes they are not visible but making sure the markdown is correct helps to make it readable and bug free. * `CI/scripts/test_all.sh` runs all the tests in one pass. diff --git a/CI/scripts/run_job.sh b/CI/scripts/run_job.sh new file mode 100755 index 00000000000..956d5ac5106 --- /dev/null +++ b/CI/scripts/run_job.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -o pipefail + +if [ -z "$1" ] + then + echo "No job mame supplied. See .circleci/config.yml for job names." + exit 1 + else + JOB=$1 +fi + +exec < /dev/tty + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +LOGFILE=${DIR}/${JOB}.log + +echo -e "\rRunning ${JOB} test job, please wait.\r" + +circleci config process .circleci/config.yml > .circleci/process.yml && circleci local execute -c .circleci/process.yml --job $JOB > ${LOGFILE} 2>&1 + +if [ "$?" -eq "0" ] +then + echo -e "\r✓ ${JOB} test job succeeded\r" + exit 0 +else + echo -e "\r✖ ${JOB} test job failed. See ${LOGFILE}" + exit 1 +fi diff --git a/CI/scripts/test_all.sh b/CI/scripts/test_all.sh index 73f455cda0d..3ba76e75c45 100755 --- a/CI/scripts/test_all.sh +++ b/CI/scripts/test_all.sh @@ -1,5 +1,16 @@ #!/usr/bin/env bash -CI/scripts/test_build.sh -CI/scripts/test_guidelines.sh -CI/scripts/test_links.sh -CI/scripts/test_lint.sh + +echo -e "\r=================================" +echo -e "\rRunning all tests jobs, please wait." +echo -e "\r=================================" + +CI/scripts/run_job.sh build & buildPID=$! +CI/scripts/run_job.sh vale & guidelinesPID=$! +CI/scripts/run_job.sh linkchecker & linksPID=$! +CI/scripts/run_job.sh markdownlint & syntaxPID=$! + +wait $buildPID $linksPID $syntaxPID $guidelinesPID + +echo -e "\r=================================" +echo -e "\rAll tests jobs completed." +echo -e "\r=================================" diff --git a/CI/scripts/test_build.sh b/CI/scripts/test_build.sh index 949dfc90446..8b0965ebb8c 100755 --- a/CI/scripts/test_build.sh +++ b/CI/scripts/test_build.sh @@ -1,2 +1,3 @@ #!/usr/bin/env bash -circleci config process .circleci/config.yml > .circleci/process.yml && circleci local execute -c .circleci/process.yml --job build + +CI/scripts/run_job.sh build diff --git a/CI/scripts/test_guidelines.sh b/CI/scripts/test_guidelines.sh index 08b5c7b149e..f3b9cb866e4 100755 --- a/CI/scripts/test_guidelines.sh +++ b/CI/scripts/test_guidelines.sh @@ -1,2 +1,3 @@ #!/usr/bin/env bash -circleci config process .circleci/config.yml > .circleci/process.yml && circleci local execute -c .circleci/process.yml --job vale + +CI/scripts/run_job.sh vale diff --git a/CI/scripts/test_links.sh b/CI/scripts/test_links.sh index a1ddfb1ab1c..e27d998151d 100755 --- a/CI/scripts/test_links.sh +++ b/CI/scripts/test_links.sh @@ -1,2 +1,3 @@ #!/usr/bin/env bash -circleci config process .circleci/config.yml > .circleci/process.yml && circleci local execute -c .circleci/process.yml --job linkchecker + +CI/scripts/run_job.sh linkchecker diff --git a/CI/scripts/test_lint.sh b/CI/scripts/test_lint.sh deleted file mode 100755 index 5e506c131e5..00000000000 --- a/CI/scripts/test_lint.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -circleci config process .circleci/config.yml > .circleci/process.yml && circleci local execute -c .circleci/process.yml --job markdownlint diff --git a/CI/scripts/test_markdown_syntax.sh b/CI/scripts/test_markdown_syntax.sh new file mode 100755 index 00000000000..9daed61a450 --- /dev/null +++ b/CI/scripts/test_markdown_syntax.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +CI/scripts/run_job.sh markdownlint diff --git a/SECURITY.md b/SECURITY.md index 50a19da4869..8ecbb3682e5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -17,4 +17,4 @@ The other way is to file a confidential security bug in our The process by which the Hyperledger Security Team handles security bugs is documented further in our [Defect Response page](https://wiki.hyperledger.org/display/SEC/Defect+Response) on our -[wiki](https://wiki.hyperledger.org). \ No newline at end of file +[wiki](https://wiki.hyperledger.org). diff --git a/docs/Concepts/Consensus-Protocols/Comparing-PoA.md b/docs/Concepts/Consensus-Protocols/Comparing-PoA.md index fc0ff950dbb..fac123cc7f6 100644 --- a/docs/Concepts/Consensus-Protocols/Comparing-PoA.md +++ b/docs/Concepts/Consensus-Protocols/Comparing-PoA.md @@ -69,4 +69,4 @@ operating in adversarial environments. Reaching consensus and adding blocks is faster in Clique networks. For Clique, the probability of a fork increases as the number of validators increases. -For IBFT 2.0, the time to add new blocks increases as the number of validators increases. \ No newline at end of file +For IBFT 2.0, the time to add new blocks increases as the number of validators increases. diff --git a/docs/Concepts/Mining.md b/docs/Concepts/Mining.md index ddf504e35b6..caf60ad1d3f 100644 --- a/docs/Concepts/Mining.md +++ b/docs/Concepts/Mining.md @@ -14,4 +14,4 @@ Ethminer has been used with Hyperledger Besu to mine blocks on the [Ropsten test [ETC mainnet (uncle block only)](https://etc.tokenview.com/en/uncleblock/10555173) and Mordor ETC testnet. !!! note - Some mining software supports the `getwork` scheme as the `http` scheme. \ No newline at end of file + Some mining software supports the `getwork` scheme as the `http` scheme. diff --git a/docs/Concepts/Monitoring.md b/docs/Concepts/Monitoring.md index 1a624d812e4..470fb363f51 100644 --- a/docs/Concepts/Monitoring.md +++ b/docs/Concepts/Monitoring.md @@ -12,4 +12,3 @@ logging enables: For an overview of monitoring Hyperledger Besu, view [this recording](https://www.youtube.com/watch?v=7BuutRe0I28&feature=youtu.be). - diff --git a/docs/Concepts/Network-vs-Node.md b/docs/Concepts/Network-vs-Node.md index a805f067487..5f0d75b7114 100644 --- a/docs/Concepts/Network-vs-Node.md +++ b/docs/Concepts/Network-vs-Node.md @@ -13,4 +13,4 @@ include `evmStackSize` or specify the Specify node settings on the command line or in the [node configuration file](../HowTo/Configure/Using-Configuration-File.md). For example, enable [JSON-RPC API methods](../Reference/API-Methods.md) or specify the -[data directory](../Reference/CLI/CLI-Syntax.md#data-path) for the node. \ No newline at end of file +[data directory](../Reference/CLI/CLI-Syntax.md#data-path) for the node. diff --git a/docs/Concepts/Plugins.md b/docs/Concepts/Plugins.md index c3ba3b6e365..8e41d99022b 100644 --- a/docs/Concepts/Plugins.md +++ b/docs/Concepts/Plugins.md @@ -48,4 +48,4 @@ Each plugin in the directory has the following lifecycle events: !!! note - The order in which Besu calls plugins during lifecycle events is not guaranteed. \ No newline at end of file + The order in which Besu calls plugins during lifecycle events is not guaranteed. diff --git a/docs/Concepts/Privacy/Private-Transactions.md b/docs/Concepts/Privacy/Private-Transactions.md index f2999ae95ea..d377495b25d 100644 --- a/docs/Concepts/Privacy/Private-Transactions.md +++ b/docs/Concepts/Privacy/Private-Transactions.md @@ -82,4 +82,3 @@ for the private transaction with the incorrect nonce. [privacy marker transaction]: ../../Concepts/Privacy/Private-Transaction-Processing.md - diff --git a/docs/Concepts/Protocol-Upgrades.md b/docs/Concepts/Protocol-Upgrades.md index 46acc2d06ba..301c4a205d4 100644 --- a/docs/Concepts/Protocol-Upgrades.md +++ b/docs/Concepts/Protocol-Upgrades.md @@ -27,4 +27,4 @@ example, [Istanbul](https://eips.ethereum.org/EIPS/eip-1679). For compatibility with future protocol upgrades, do not hardcode any gas price assumptions. Implementing upgradeable contracts enables contracts to be upgraded if a protocol upgrade does - include breaking changes. \ No newline at end of file + include breaking changes. diff --git a/docs/Concepts/TLS.md b/docs/Concepts/TLS.md index 11886697657..28dba5ecbd0 100644 --- a/docs/Concepts/TLS.md +++ b/docs/Concepts/TLS.md @@ -12,4 +12,4 @@ or server ([Orion](https://docs.orion.pegasys.tech/en/latest/Concepts/TLS-Commun You must store private keys and certificates in password-protected PKCS #12 keystore files. -Use the command line options to [enable and configure](../HowTo/Configure/Configure-TLS.md) TLS. \ No newline at end of file +Use the command line options to [enable and configure](../HowTo/Configure/Configure-TLS.md) TLS. diff --git a/docs/HowTo/Backup/Backup.md b/docs/HowTo/Backup/Backup.md index 3c80eb31327..5d63b7a632d 100644 --- a/docs/HowTo/Backup/Backup.md +++ b/docs/HowTo/Backup/Backup.md @@ -52,4 +52,4 @@ The process for finding peers after restarting is the same as for [finding peers after upgrading and restarting]. -[finding peers after upgrading and restarting]: ../Upgrade/Upgrade-Node.md#finding-peers-on-restarting \ No newline at end of file +[finding peers after upgrading and restarting]: ../Upgrade/Upgrade-Node.md#finding-peers-on-restarting diff --git a/docs/HowTo/Configure/Configure-Mining.md b/docs/HowTo/Configure/Configure-Mining.md index b5c9c4efbc7..8cc66dc21d8 100644 --- a/docs/HowTo/Configure/Configure-Mining.md +++ b/docs/HowTo/Configure/Configure-Mining.md @@ -74,4 +74,4 @@ have been used to mine on public networks with Hyperledger Besu: * **Ropsten**: [`0x2f14582947E292a2eCd20C430B46f2d27CFE213c`](https://ropsten.etherscan.io/address/0x2f14582947E292a2eCd20C430B46f2d27CFE213c#mine) * **ETC**: [`0x3125309aa670f5e60493b50884a7e7abf9ebb701`](https://etc.tokenview.com/en/address/0x3125309aa670f5e60493b50884a7e7abf9ebb701) -* **Mordor**: `0x2f14582947E292a2eCd20C430B46f2d27CFE213c` \ No newline at end of file +* **Mordor**: `0x2f14582947E292a2eCd20C430B46f2d27CFE213c` diff --git a/docs/HowTo/Configure/Configure-TLS.md b/docs/HowTo/Configure/Configure-TLS.md index 56a32aa53eb..6e3b2e932ce 100644 --- a/docs/HowTo/Configure/Configure-TLS.md +++ b/docs/HowTo/Configure/Configure-TLS.md @@ -130,4 +130,4 @@ The command line: [Configure the client for TLS]: https://docs.ethsigner.pegasys.tech/en/latest/HowTo/Configure-TLS/#server-tls-connection -[Configure the server to allow TLS communication]: https://docs.orion.pegasys.tech/en/latest/Tutorials/TLS/ \ No newline at end of file +[Configure the server to allow TLS communication]: https://docs.orion.pegasys.tech/en/latest/Tutorials/TLS/ diff --git a/docs/HowTo/Configure/Consensus-Protocols/Clique.md b/docs/HowTo/Configure/Consensus-Protocols/Clique.md index 797501f57c1..dcb71bd8f05 100644 --- a/docs/HowTo/Configure/Consensus-Protocols/Clique.md +++ b/docs/HowTo/Configure/Consensus-Protocols/Clique.md @@ -159,4 +159,4 @@ Define the number of blocks between epoch transitions in the genesis file. -*[vanity data]: Signers can include anything they like as vanity data. \ No newline at end of file +*[vanity data]: Signers can include anything they like as vanity data. diff --git a/docs/HowTo/Configure/Consensus-Protocols/QuorumIBFT.md b/docs/HowTo/Configure/Consensus-Protocols/QuorumIBFT.md index f3cc360800f..6f9777fc733 100644 --- a/docs/HowTo/Configure/Consensus-Protocols/QuorumIBFT.md +++ b/docs/HowTo/Configure/Consensus-Protocols/QuorumIBFT.md @@ -21,4 +21,4 @@ To connect to a Quorum IBFT 1.0 network: ``` 1. When starting Besu, specify the IBFT 1.0 genesis file using the - [`--genesis-file`](../../../Reference/CLI/CLI-Syntax.md#genesis-file) option. \ No newline at end of file + [`--genesis-file`](../../../Reference/CLI/CLI-Syntax.md#genesis-file) option. diff --git a/docs/HowTo/Configure/Contracts-in-Genesis.md b/docs/HowTo/Configure/Contracts-in-Genesis.md index 352859adf10..72a43711b6b 100644 --- a/docs/HowTo/Configure/Contracts-in-Genesis.md +++ b/docs/HowTo/Configure/Contracts-in-Genesis.md @@ -30,4 +30,4 @@ The contract code in the genesis file defines the: * Address * Balance * Bytecode -* Key value pairs for contract storage. \ No newline at end of file +* Key value pairs for contract storage. diff --git a/docs/HowTo/Configure/Passing-JVM-Options.md b/docs/HowTo/Configure/Passing-JVM-Options.md index beb6c77e03f..a923a9bee27 100644 --- a/docs/HowTo/Configure/Passing-JVM-Options.md +++ b/docs/HowTo/Configure/Passing-JVM-Options.md @@ -18,4 +18,4 @@ setting it before starting Besu. ```bash BESU_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 \ besu --network=rinkeby - ``` \ No newline at end of file + ``` diff --git a/docs/HowTo/Deploy/Ansible.md b/docs/HowTo/Deploy/Ansible.md index 20733621a74..f50c748e987 100644 --- a/docs/HowTo/Deploy/Ansible.md +++ b/docs/HowTo/Deploy/Ansible.md @@ -14,4 +14,4 @@ For more information, see the !!! important We strongly recommend automating network creation. Automating makes updates easier and ensures - your configuration is synchronized across the network. \ No newline at end of file + your configuration is synchronized across the network. diff --git a/docs/HowTo/Deploy/Bootnodes.md b/docs/HowTo/Deploy/Bootnodes.md index 647c13d4593..3635091b44b 100644 --- a/docs/HowTo/Deploy/Bootnodes.md +++ b/docs/HowTo/Deploy/Bootnodes.md @@ -54,4 +54,4 @@ command line option for each node to include the new bootnodes. When adding bootnodes, you do not need to restart running nodes. By updating the [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option, the next time you restart the nodes (for example, when [upgrading](../Upgrade/Upgrade-Node.md)), the nodes connect to the new -bootnodes. \ No newline at end of file +bootnodes. diff --git a/docs/HowTo/Deploy/Cloud.md b/docs/HowTo/Deploy/Cloud.md index ecc274d4dcc..62f3f9d5ddc 100644 --- a/docs/HowTo/Deploy/Cloud.md +++ b/docs/HowTo/Deploy/Cloud.md @@ -9,4 +9,4 @@ When deploying Hyperledger Besu to the cloud: * Ensure you have enough spread across Availability Zones (AZs) and Regions, especially for bootnodes and validators. * If your network is a multi-region network, consider using VPC Peering to reduce latency. -* Where required, use VPNs to connect to your on premise systems, or single private chains. \ No newline at end of file +* Where required, use VPNs to connect to your on premise systems, or single private chains. diff --git a/docs/HowTo/Deploy/Validators.md b/docs/HowTo/Deploy/Validators.md index 2984be77633..c13cf006946 100644 --- a/docs/HowTo/Deploy/Validators.md +++ b/docs/HowTo/Deploy/Validators.md @@ -38,4 +38,4 @@ If you remove a validator that is also a bootnode, ensure there are enough remai the network. -[vote validators in or out of the validator pool]: ../Configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators \ No newline at end of file +[vote validators in or out of the validator pool]: ../Configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators diff --git a/docs/HowTo/Find-and-Connect/Bootnodes.md b/docs/HowTo/Find-and-Connect/Bootnodes.md index e325f928a99..63b12f61e86 100644 --- a/docs/HowTo/Find-and-Connect/Bootnodes.md +++ b/docs/HowTo/Find-and-Connect/Bootnodes.md @@ -47,4 +47,4 @@ specify a different host or port, use the By default, peer discovery listens on all available network interfaces. If the device Besu is running on must bind to a specific network interface, specify the interface using the -[`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) option. \ No newline at end of file +[`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) option. diff --git a/docs/HowTo/Find-and-Connect/Configuring-Ports.md b/docs/HowTo/Find-and-Connect/Configuring-Ports.md index 73e91b62ff6..225f26c3cea 100644 --- a/docs/HowTo/Find-and-Connect/Configuring-Ports.md +++ b/docs/HowTo/Find-and-Connect/Configuring-Ports.md @@ -58,4 +58,4 @@ the metrics port or metrics push port to Prometheus or the Prometheus push gatew Specify the ports for Prometheus and Prometheus push gateway using the [`--metrics-port`](../../Reference/CLI/CLI-Syntax.md#metrics-port) and [`--metrics-push-port`](../../Reference/CLI/CLI-Syntax.md#metrics-push-port) options. The defaults -are `9545` and `9001`. \ No newline at end of file +are `9545` and `9001`. diff --git a/docs/HowTo/Find-and-Connect/Managing-Peers.md b/docs/HowTo/Find-and-Connect/Managing-Peers.md index d45d8446235..409e0f821b6 100644 --- a/docs/HowTo/Find-and-Connect/Managing-Peers.md +++ b/docs/HowTo/Find-and-Connect/Managing-Peers.md @@ -51,4 +51,3 @@ the firewalls. In private networks with a level of trust between peers, enabling the [remote connection limits](../../Reference/CLI/CLI-Syntax.md#remote-connections-limit-enabled) is unnecessary and disabling might increase the speed at which nodes can join the network. - diff --git a/docs/HowTo/Find-and-Connect/Specifying-NAT.md b/docs/HowTo/Find-and-Connect/Specifying-NAT.md index 9b8b04391ef..23f6301a05b 100644 --- a/docs/HowTo/Find-and-Connect/Specifying-NAT.md +++ b/docs/HowTo/Find-and-Connect/Specifying-NAT.md @@ -88,4 +88,4 @@ Specify `NONE` to explicitly configure the external IP address and ports adverti * [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) for the P2P service. * [`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host) and [`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port) - for the JSON-RPC HTTP service. \ No newline at end of file + for the JSON-RPC HTTP service. diff --git a/docs/HowTo/Get-Started/Build-from-source.md b/docs/HowTo/Get-Started/Build-from-source.md index ce7cdcbad24..ea41c22da0a 100644 --- a/docs/HowTo/Get-Started/Build-from-source.md +++ b/docs/HowTo/Get-Started/Build-from-source.md @@ -13,4 +13,4 @@ View the [Hyperledger documentation] for instructions to install Hyperledger Bes [Hyperledger documentation]: https://wiki.hyperledger.org/display/BESU/Building+from+source [binary]: Install-Binaries.md -[Docker image]: Run-Docker-Image.md \ No newline at end of file +[Docker image]: Run-Docker-Image.md diff --git a/docs/HowTo/Get-Started/System-Requirements-Private.md b/docs/HowTo/Get-Started/System-Requirements-Private.md index e8268032c97..e0f9bca8077 100644 --- a/docs/HowTo/Get-Started/System-Requirements-Private.md +++ b/docs/HowTo/Get-Started/System-Requirements-Private.md @@ -47,4 +47,3 @@ We recommend you create a VM with the following attributes: [Oracle VirtualBox documentation]: https://www.virtualbox.org/manual/UserManual.html#sharedfolders - diff --git a/docs/HowTo/Interact/APIs/API.md b/docs/HowTo/Interact/APIs/API.md index 662d55da51d..3be4243c10b 100644 --- a/docs/HowTo/Interact/APIs/API.md +++ b/docs/HowTo/Interact/APIs/API.md @@ -85,4 +85,4 @@ For [account management](../../Send-Transactions/Account-Management.md), use thi ### Protocols -Besu does not support the Whisper and Swarm protocols. \ No newline at end of file +Besu does not support the Whisper and Swarm protocols. diff --git a/docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md b/docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md index df869c4c20a..9dcf2edf56f 100644 --- a/docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md +++ b/docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md @@ -153,4 +153,3 @@ The block parameter can have the following values: If [synchronizing in FAST mode](../../../Reference/CLI/CLI-Syntax.md#sync-mode), most historical world state data is unavailable. Any methods attempting to access unavailable world state data return `null`. - diff --git a/docs/HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md b/docs/HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md index a1e396ac007..b06dee8dfd4 100644 --- a/docs/HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md +++ b/docs/HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md @@ -219,4 +219,3 @@ for a private contract. The above example returns the same result as calling [eth_newFilter](#creating-a-filter) followed by [eth_getFilterLogs](#getting-all-logs-for-a-filter). - diff --git a/docs/HowTo/Monitor/Elastic-Stack.md b/docs/HowTo/Monitor/Elastic-Stack.md index a6ec30fcb76..8903a079107 100644 --- a/docs/HowTo/Monitor/Elastic-Stack.md +++ b/docs/HowTo/Monitor/Elastic-Stack.md @@ -35,4 +35,4 @@ To see the Besu Sample Networks logs in Kibana: [Filebeat]: https://github.com/PegaSysEng/besu-sample-networks/blob/master/filebeat/filebeat.yml [Metricbeat]: https://github.com/PegaSysEng/besu-sample-networks/blob/master/metricbeat/metricbeat.yml -[pipeline configuration]: https://github.com/PegaSysEng/besu-sample-networks/blob/master/logstash/pipeline/20_besu.conf \ No newline at end of file +[pipeline configuration]: https://github.com/PegaSysEng/besu-sample-networks/blob/master/logstash/pipeline/20_besu.conf diff --git a/docs/HowTo/Send-Transactions/Account-Management.md b/docs/HowTo/Send-Transactions/Account-Management.md index 53600bfb640..e7b186a0c06 100644 --- a/docs/HowTo/Send-Transactions/Account-Management.md +++ b/docs/HowTo/Send-Transactions/Account-Management.md @@ -25,4 +25,3 @@ In Besu, you can use the JSON-RPC methods: [EthSigner](http://docs.ethsigner.pegasys.tech/en/latest/) implements [`eth_sendTransaction`](http://docs.ethsigner.pegasys.tech/en/latest/Using-EthSigner/Using-EthSigner/#eth_sendtransaction) and [`eea_sendTransaction`](http://docs.ethsigner.pegasys.tech/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). - diff --git a/docs/HowTo/Send-Transactions/Concurrent-Private-Transactions.md b/docs/HowTo/Send-Transactions/Concurrent-Private-Transactions.md index 55700a7c6a2..5d2a72390dd 100644 --- a/docs/HowTo/Send-Transactions/Concurrent-Private-Transactions.md +++ b/docs/HowTo/Send-Transactions/Concurrent-Private-Transactions.md @@ -26,4 +26,4 @@ includes an example of how to send concurrent private transactions. [privacy marker transaction]: ../../Concepts/Privacy/Private-Transaction-Processing.md -[own nonce]: ../../Concepts/Privacy/Private-Transactions.md#nonces \ No newline at end of file +[own nonce]: ../../Concepts/Privacy/Private-Transactions.md#nonces diff --git a/docs/HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md b/docs/HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md index bfa465dbd99..4c7c3a5af10 100644 --- a/docs/HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md +++ b/docs/HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md @@ -170,4 +170,4 @@ private transactions to create a contract. [privacy marker transaction]: ../../Concepts/Privacy/Private-Transaction-Processing.md [EEA-compliant private transaction]: ../../Concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy -[Besu-extended private transaction]: ../../Concepts/Privacy/Privacy-Groups.md#besu-extended-privacy \ No newline at end of file +[Besu-extended private transaction]: ../../Concepts/Privacy/Privacy-Groups.md#besu-extended-privacy diff --git a/docs/HowTo/Troubleshoot/Trace-Transactions.md b/docs/HowTo/Troubleshoot/Trace-Transactions.md index 2a29da1376e..b248d78453a 100644 --- a/docs/HowTo/Troubleshoot/Trace-Transactions.md +++ b/docs/HowTo/Troubleshoot/Trace-Transactions.md @@ -26,4 +26,4 @@ requested block or transaction must be within the [the number of pruning blocks !!! important The `TRACE` API is an early access feature in v1.4. The return values might change between v1.4 - and v1.5. \ No newline at end of file + and v1.5. diff --git a/docs/HowTo/Upgrade/Upgrade-Node.md b/docs/HowTo/Upgrade/Upgrade-Node.md index 74b336fe8fb..ccaec691146 100644 --- a/docs/HowTo/Upgrade/Upgrade-Node.md +++ b/docs/HowTo/Upgrade/Upgrade-Node.md @@ -34,5 +34,3 @@ Before the node restarted, connected peers saved the node details in their peer can reconnect to the restarted node. The restarted node uses these peers, as well as the bootnodes, to discover more peers. To ensure that the restarted node successfully rejoins the network, ensure you specify at least one operational bootnode. - - diff --git a/docs/HowTo/Upgrade/Upgrade-Protocol.md b/docs/HowTo/Upgrade/Upgrade-Protocol.md index 16c242bce49..caaeb7d8dda 100644 --- a/docs/HowTo/Upgrade/Upgrade-Protocol.md +++ b/docs/HowTo/Upgrade/Upgrade-Protocol.md @@ -22,4 +22,4 @@ private network: !!! caution To avoid a forked network, all network participants must update their genesis file to include - the agreed on milestone block and restart their node before reaching the milestone block. \ No newline at end of file + the agreed on milestone block and restart their node before reaching the milestone block. diff --git a/docs/HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md b/docs/HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md index 437b2675046..71b5d4df06b 100644 --- a/docs/HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md +++ b/docs/HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md @@ -16,4 +16,4 @@ groups: You can find and delete [EEA-compliant privacy groups](../../Concepts/Privacy/Privacy-Groups.md) using [`priv_findPrivacyGroup`](../../Reference/API-Methods.md#priv_findprivacygroup) and - [`priv_deletePrivacyGroup`](../../Reference/API-Methods.md#priv_deleteprivacygroup). \ No newline at end of file + [`priv_deletePrivacyGroup`](../../Reference/API-Methods.md#priv_deleteprivacygroup). diff --git a/docs/HowTo/Use-Privacy/EEA-Compliant.md b/docs/HowTo/Use-Privacy/EEA-Compliant.md index d9f094e4afc..c59a3c33fbf 100644 --- a/docs/HowTo/Use-Privacy/EEA-Compliant.md +++ b/docs/HowTo/Use-Privacy/EEA-Compliant.md @@ -42,4 +42,3 @@ type when returned by ] } ``` - diff --git a/docs/HowTo/Use-Privacy/Privacy.md b/docs/HowTo/Use-Privacy/Privacy.md index bdca585d1fd..b59d312d249 100644 --- a/docs/HowTo/Use-Privacy/Privacy.md +++ b/docs/HowTo/Use-Privacy/Privacy.md @@ -45,4 +45,4 @@ have a `BESU` privacy group type when returned by } ] } - ``` \ No newline at end of file + ``` diff --git a/docs/HowTo/Use-Privacy/Use-OnChainPrivacy.md b/docs/HowTo/Use-Privacy/Use-OnChainPrivacy.md index ce7bbab8b74..7c39acf3e82 100644 --- a/docs/HowTo/Use-Privacy/Use-OnChainPrivacy.md +++ b/docs/HowTo/Use-Privacy/Use-OnChainPrivacy.md @@ -38,7 +38,7 @@ the [web3.js-eea library](https://github.com/PegaSysEng/web3js-eea): 1. Run: - ``` + ```bash node simpleOnChainPrivacy.js ``` diff --git a/docs/Reference/API-Objects.md b/docs/Reference/API-Objects.md index 65f29a2f896..987db8a09b5 100644 --- a/docs/Reference/API-Objects.md +++ b/docs/Reference/API-Objects.md @@ -246,4 +246,4 @@ Returned by [`priv_getTransactionReceipt`](API-Methods.md#priv_getTransactionRec | **privateFrom** | Data, 32 bytes | [Orion](https://docs.orion.pegasys.tech/en/stable/) public key of the sender. | | **privateFor** or **privacyGroupId** | Array or Data, 32 bytes | [Orion](https://docs.orion.pegasys.tech/en/stable/) public keys or privacy group ID of the recipients. | | **status** | Quantity | Either `0x1` (success) or `0x0` (failure). | -| **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | \ No newline at end of file +| **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | diff --git a/docs/Reference/Evm-Tool.md b/docs/Reference/Evm-Tool.md index 7777a6b9161..0cab5e07054 100644 --- a/docs/Reference/Evm-Tool.md +++ b/docs/Reference/Evm-Tool.md @@ -347,4 +347,4 @@ from standard input and executes that state test. ```bash evm --json state-test < stExample/add11.json - ``` \ No newline at end of file + ``` diff --git a/docs/Tutorials/Privacy/Configuring-Privacy.md b/docs/Tutorials/Privacy/Configuring-Privacy.md index 3bdb0146e95..2c07fcc1c96 100644 --- a/docs/Tutorials/Privacy/Configuring-Privacy.md +++ b/docs/Tutorials/Privacy/Configuring-Privacy.md @@ -215,4 +215,3 @@ Node-1 as the bootnode: The command line specifies the same options as for Node-1 with different ports and Orion node URL. The [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option specifies the enode URL for Node-1. - diff --git a/docs/Tutorials/Privacy/web3js-eea-Multinode-example.md b/docs/Tutorials/Privacy/web3js-eea-Multinode-example.md index fe4fa505b5d..f5e242d4209 100644 --- a/docs/Tutorials/Privacy/web3js-eea-Multinode-example.md +++ b/docs/Tutorials/Privacy/web3js-eea-Multinode-example.md @@ -35,7 +35,7 @@ To use the examples provided in the web3js-eea library with A private transaction receipt returns. - ``` + ```bash Transaction Hash 0x23b57ddc3ecf9c9a548e4401a411420ffc0002fd259a86d5656add7c6108beeb Waiting for transaction to be mined ... Private Transaction Receipt diff --git a/package-lock.json b/package-lock.json index ea92f6546b6..7b73efedce1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,32 +1,51 @@ { - "name": "doc.besu", + "name": "hyperledger-besu", "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", + "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { - "color-convert": "^1.9.0" + "sprintf-js": "~1.0.2" } }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -34,206 +53,328 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.1.0.tgz", + "integrity": "sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } }, + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "dev": true + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" } }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true }, "is-relative-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", - "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-3.0.0.tgz", + "integrity": "sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA==", + "dev": true, "requires": { - "is-absolute-url": "^2.0.0" + "is-absolute-url": "^3.0.0" } }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isemail": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "dev": true, "requires": { "punycode": "2.x.x" } @@ -241,32 +382,54 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonc-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", + "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", + "dev": true }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -275,101 +438,284 @@ } }, "link-check": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/link-check/-/link-check-4.4.5.tgz", - "integrity": "sha512-csF0k7MAQjyDLkrZfsAJNkTav/vvATMYkm9dAstzmu60vzNGlgvWd3SgBTFH9KLWOO1hUuVxgSEPuWv+fdyuaQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/link-check/-/link-check-4.5.1.tgz", + "integrity": "sha512-g0tu3Nkj/rpl1b6rQHRlaaSZ16iRqRDNP30jLUfRK0uNN98H56YVZlJXLjWcyjsj4f2+xZdxqeV398dx38MzfQ==", + "dev": true, "requires": { - "is-relative-url": "^2.0.0", + "is-relative-url": "^3.0.0", "isemail": "^3.2.0", - "ms": "^2.1.1", - "request": "^2.88.0" + "ms": "^2.1.2", + "request": "^2.88.2" + } + }, + "linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash.differencewith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz", + "integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "markdown-it": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.0.tgz", + "integrity": "sha512-+CvOnmbSubmQFSA9dKz1BRiaSMV7rhexl3sngKqFyXSagoA3fBdJQ8oZWtRy2knXdpDXaBw44euz37DeJQ9asg==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } }, "markdown-link-check": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/markdown-link-check/-/markdown-link-check-3.7.3.tgz", - "integrity": "sha512-X/HWomzeox5HtkKLupin4affBXHq22r7RNqiSKsxlgZQMSU9n+zpGY0sbzJr1IycB6FXpKUZet1VH3Rs1/8WQg==", - "requires": { - "async": "^2.6.1", - "chalk": "^2.4.2", - "commander": "^2.20.0", - "link-check": "^4.4.5", - "lodash": "^4.17.11", - "markdown-link-extractor": "^1.2.1", + "version": "github:tcort/markdown-link-check#9f50271d2b676caf7a70d5cae667d2fdeb4810a2", + "from": "github:tcort/markdown-link-check", + "dev": true, + "requires": { + "async": "^3.2.0", + "chalk": "^4.1.0", + "commander": "^6.1.0", + "link-check": "^4.5.1", + "lodash": "^4.17.20", + "markdown-link-extractor": "^1.2.6", "progress": "^2.0.3", - "request": "^2.88.0" + "request": "^2.88.2" } }, "markdown-link-extractor": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/markdown-link-extractor/-/markdown-link-extractor-1.2.1.tgz", - "integrity": "sha512-eo4hXLZC6/NrVimHqEu0X029ymIreg0VQjlWudGtOg1FiiZYPwU+Sh1CP3CQqP16woyCsDplVfqPD2Oi8JRpdw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/markdown-link-extractor/-/markdown-link-extractor-1.2.6.tgz", + "integrity": "sha512-WDiwWTzR/zk0n0As7q1KCB1Jd/T7nJ7IEr6E1QKZR1Agd/xRmB0FjM2IrtC7IZ1ZwxflBE0aLe4pkX8d+rzV8w==", + "dev": true, "requires": { - "marked": "^0.6.2" + "marked": "^1.1.1" } }, + "markdownlint": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.21.0.tgz", + "integrity": "sha512-rTxr0fbCFmS65oxXBD0HNy3/+PSukLS+b7Z6rGDWbjdRJp/e2dKj538r3KTn8oXrusx+ZtuYOozV2Knpnn0pkQ==", + "dev": true, + "requires": { + "markdown-it": "11.0.0" + } + }, + "markdownlint-cli": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.23.2.tgz", + "integrity": "sha512-OSl5OZ8xzGN6z355cqRkiq67zPi3reJimklaF72p0554q85Dng5ToOjjSB9tDKZebSt85jX8cp+ruoQlPqOsPA==", + "dev": true, + "requires": { + "commander": "~2.9.0", + "deep-extend": "~0.5.1", + "get-stdin": "~5.0.1", + "glob": "~7.1.2", + "ignore": "~5.1.4", + "js-yaml": "~3.13.1", + "jsonc-parser": "~2.2.0", + "lodash.differencewith": "~4.5.0", + "lodash.flatten": "~4.4.0", + "markdownlint": "~0.20.4", + "markdownlint-rule-helpers": "~0.11.0", + "minimatch": "~3.0.4", + "minimist": "~1.2.5", + "rc": "~1.2.7" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "markdownlint": { + "version": "0.20.4", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.20.4.tgz", + "integrity": "sha512-jpfaPgjT0OpeBbemjYNZbzGG3hCLcAIvrm/pEY3+q/szDScG6ZonDacqySVRJAv9glbo8y4wBPJ0wgW17+9GGA==", + "dev": true, + "requires": { + "markdown-it": "10.0.0" + } + } + } + }, + "markdownlint-rule-helpers": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.11.0.tgz", + "integrity": "sha512-PhGii9dOiDJDXxiRMpK8N0FM9powprvRPsXALgkjlSPTwLh6ymH+iF3iUe3nq8KGu26tclFBlLL5xAGy/zb7FA==", + "dev": true + }, "marked": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.3.tgz", - "integrity": "sha512-Fqa7eq+UaxfMriqzYLayfqAE40WN03jf+zHjT18/uXNuzjq3TY0XTbrAoPeqSJrAmPz11VuUA+kBPYOhHt9oOQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz", + "integrity": "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true }, "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true }, "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { - "mime-db": "1.40.0" + "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true }, "psl": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", - "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + } + } }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -378,7 +724,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -388,25 +734,34 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -419,34 +774,36 @@ "tweetnacl": "~0.14.0" } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -454,30 +811,46 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, "requires": { "punycode": "^2.1.0" } }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true } } } diff --git a/package.json b/package.json index 4ddc03df7b4..3750777aa2f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,12 @@ "test:links:display": "cat linkchecker.out", "test:links:verify": "! grep -n '[✖]\\|ERROR' ./linkchecker.out", "test:links": "npm run test:links:check && npm run test:links:display && npm run test:links:verify", - "test": "npm run test:links" + "test:markdown:error": "node ./node_modules/markdownlint-cli/markdownlint.js --ignore 'env' --ignore 'node_modules' --config CI/markdownlint/lint-base-style.yml '**/*.md' 2>&1 | tee ./markdownlint.out", + "test:markdown:info": "node ./node_modules/markdownlint-cli/markdownlint.js --ignore 'env' --ignore 'node_modules' --config CI/markdownlint/lint-info-style.yml '**/*.md' 2>&1 | tee ./markdownlint_info.out", + "test:markdown:verify": "! grep -nE 'MD[0-9]+/.+' ./markdownlint.out", + "test:markdown": "npm run test:markdown:error && npm run test:markdown:verify", + "fix:markdown": "node ./node_modules/markdownlint-cli/markdownlint.js --fix --config CI/markdownlint/lint-base-style.yml '**/*.md'", + "test": "npm run test:links && npm run test:markdown" }, "repository": { "type": "git", @@ -23,7 +28,9 @@ "url": "https://github.com/hyperledger/besu-docs/issues" }, "homepage": "https://github.com/hyperledger/besu-docs#readme", - "dependencies": { - "markdown-link-check": "3.7.3" + "devDependencies": { + "markdown-link-check": "github:tcort/markdown-link-check", + "markdownlint-cli": "0.23.2", + "markdownlint": "0.21.0" } }