diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..52031de --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.sol linguist-language=Solidity diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..6dab0e0 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ +### Description + + + +### Motivation + + + +### Related issues and PRs + + + +### How has this been tested + + + +- [ ] Step 1 + +### Checklist + + + +- [ ] I have reviewed the code changes myself +- [ ] My code meets all of the acceptance criteria of the issue it closes. +- [ ] I have made all necessary changes to the documentation. +- [ ] I have added tests to cover my changes. +- [ ] All new and existing tests passed. +- [ ] Any dependent changes have been merged and published. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..989610f --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,23 @@ +version: 2 + +updates: + # Enable version updates for npm + - package-ecosystem: "npm" + # Look for `package.json` and `lock` files in the `root` directory + directory: "/" + schedule: + interval: "weekly" + + # Enable version updates for Docker + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `root` directory + # Expand for subdirectories + directory: "/" + schedule: + interval: "weekly" + + # Enable version updates for GitHub-Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a4e9bd0 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,49 @@ +name: Release + +# Only if published event is triggered? +#on: +# release: +# types: [published] +on: + push: + branches: + - master + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@master + with: + token: ${{ secrets.GH_TOKEN }} + + - name: Setup node.js + uses: actions/setup-node@v1 + with: + node-version: 14.x + registry-url: http://registry.npmjs.org/ + + - name: Install dependencies + run: npm ci + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + # Classic Docker Hub login + #- name: Login to DockerHub + # env: + # DOCKER_USER: ${{secrets.DOCKER_USER}} + # DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} + # run: | + # docker login -u $DOCKER_USER -p $DOCKER_PASSWORD + + - name: Build images + run: npm run build + + - name: Push images to Docker Hub + run: npm run deploy diff --git a/.gitignore b/.gitignore index f8d6647..3a33859 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,8 @@ .DS_Store **/.DS_Store .idea/ -node_modules/ +.vscode/ + *.swp + +node_modules/ diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000..31354ec --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000..0bd658f --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit "$1" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index eada135..0000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -branches: - only: - - master - -language: node_js - -node_js: - - "lts/*" - -services: - - docker - -script: bash scripts/build.sh - -after_script: - - docker images - -before_deploy: -# - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -- echo "Images are currently not automatically deployed to Docker Hub, please build locally!" -deploy: - provider: script - skip_cleanup: true - script: bash scripts/deploy.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6f90438..ddce382 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,86 +6,57 @@ Please note we have a code of conduct, please follow it in all your interactions ## Pull Request Process -1. Ensure any install or build dependencies are removed before the end of the layer when doing a - build. -2. Update the README.md with details of changes to the interface, this includes new environment - variables, exposed ports, useful file locations and container parameters. -3. Increase the version numbers in any examples files and the README.md to the new version that this - Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). -4. You may merge the Pull Request in once you have the sign-off of another developer, or if you - do not have permission to do that, you may request the second reviewer to merge it for you. +1. Ensure any install or build dependencies are removed before the end of the layer when doing a build. +2. Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. +3. Increase the version numbers in any examples files and the README.md to the new version that this Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). +4. You may merge the Pull Request in once you have the sign-off of another developer, or if you do not have permission to do that, you may request the second reviewer to merge it for you. ## Code of Conduct ### Our Pledge -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ### Our Standards -Examples of behavior that contributes to creating a positive environment -include: +Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ### Our Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ### Scope -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. +Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ### Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at [MaibornWolff@users.noreply.github.com]. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [MaibornWolff@users.noreply.github.com]. +All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ### Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/4/ diff --git a/README.md b/README.md index 4a06453..de39aba 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,42 @@ # Ethereum Development Environment and Network (EDEN) -[![Build Status](https://travis-ci.com/MaibornWolff/eden.svg?branch=master)](https://travis-ci.com/MaibornWolff/eden) - **E**thereum **D**evelopment **E**nvironment and **N**etwork is a collection of tools and templates to enable app developers to create new prototypes fast and effectively. -**Contents:** +![Screenshot of the EDEN dashboard](/docs/images/dashboard.png) + +## Contents + +- Private PoA geth blockchain including bootnode, fullnode, miners, explorers and monitors + +- Private PoW geth blockchain including bootstrapping node, scalabe number of nodes, explorers and monitors + +- Private PoA parity blockchain including authorities, members, explorers and monitors -* Private “proof-of-work” Blockchain (2x Geth) + EthStats Dashboard + Ether Explorer v2 +- Toolbox with Truffle, Oyente, Smartcheck and Mythril as analyzer as well as other development utilities -* Private “proof-of-authority” Blockchain (6x Parity) + EthStats Dashboard + Ether Explorer v2 +- Single SKALE node environment -* “Toolbox” with Truffle, Oyente and some Utils +- Private IPFS network including IPFS peers and clusters -![Screenshot of the EDEN dashboard](/doc/img/eden_grafik.png) +- Open-Ethereum development chain including explorer, monitor and dashboard ## Getting Started -* Get a local copy of the repository, master branch is the latest version available: +- Get a local copy of the repository, master branch is the latest version available: ``` git clone https://github.com/MaibornWolff/eden.git ``` -* Install [NodeJS](https://nodejs.org) +- Install [NodeJS](https://nodejs.org) -* Install [Docker Desktop](https://www.docker.com/products/docker-desktop) +- Install [Docker Desktop](https://www.docker.com/products/docker-desktop) -* Install [EditorConfig](https://editorconfig.org/#download) plugin for your editor/IDE +- Install [EditorConfig](https://editorconfig.org/#download) plugin for your editor/IDE ### Installing -Refer to the README file of each blockchain. They are in the project subfolders. Have fun! :) +Refer to the README file of each blockchain. They are in the project subfolders. ## Contributing @@ -38,7 +44,7 @@ Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduc ## Versioning -We use [SemVer](http://semver.org) for versioning. For the versions available, see the [tags on this repository](tags). +We use [SemVer](http://semver.org) for versioning. ## Authors diff --git a/doc/img/eden_grafik.png b/docs/images/dashboard.png similarity index 100% rename from doc/img/eden_grafik.png rename to docs/images/dashboard.png diff --git a/geth-poa-docker/Makefile b/geth-poa-docker/Makefile new file mode 100644 index 0000000..c5c1342 --- /dev/null +++ b/geth-poa-docker/Makefile @@ -0,0 +1,27 @@ +.PHONY: build build-no-cache clean logs reset restart start start-attached stop + +build: + docker-compose build + +build-no-cache: + docker-compose build --no-cache + +clean: + docker-compose down --rmi all --volumes --remove-orphans + +logs: + docker-compose logs -f + +reset: stop clean + docker-compose up -d --build --force-recreate --remove-orphans + +restart: stop start + +start: + docker-compose up -d --remove-orphans + +start-attached: + docker-compose up --remove-orphans + +stop: + docker-compose down --volumes --remove-orphans diff --git a/geth-poa-docker/README.md b/geth-poa-docker/README.md index b19c02f..89f6bcd 100644 --- a/geth-poa-docker/README.md +++ b/geth-poa-docker/README.md @@ -1,41 +1,59 @@ -# Local Ethereum Network -A set of Docker images to create a local Ethereum network with three nodes and a monitor. This was built to understand how local Ethereum networks have to be set up and to provide a local test environment. **Never use this in a productive environment, as the docker-compose.yml contains hardcoded passwords and private keys for convenience** +# Local PoA Ethereum Network -The testnet consists out of multiple parts : -* 1 Bootnode - registers existing nodes on the network, discovery service. -* 2 Miners - Also called **sealers** with proof-of-authority. They validate the blocks. No RPC is exposed as they are required to be unlocked. -* 1 Node - This serves as **transaction relay** and is a fullnode that does not mine, is locked but has RPC exposed -* 2 Swarm nodes - These nodes make up the **peer-to-peer CDN** -* 1 Blockchain explorer - Lightweight web application to explore the blockchain through web application. +A set of Docker images to create a local PoA Ethereum network with one bootnode, two miners, one fullnode, two swarm bee nodes with clef as key management service, three explorers, a monitor and its corresponding dashboard. This was built to understand how local PoA Ethereum networks have to be set up and to provide a local test environment. **Never use this in a productive environment, as the `docker-compose.yml` contains hardcoded passwords and private keys for convenience.** -## Usage -Setting up this networks requires you to install Docker. Clone the repository, and run `docker-compose up` from the repository root. The network should start and synchronize without any further configuration. The networks always uses the latest available versions of Ethereum and Swarm, the network is set up for clique proof-of-authority similar to the Ethereum Rinkeby testnet. For more information on clique POA see https://github.com/ethereum/EIPs/issues/225 . +The testnet consists of several parts: -## The bootnode -The nodes in the network are connecting with the bootnode. This is a special ethereum node, designed to provide a register of the existing nodes in the network. The parameter `nodekeyhex`in the `docker-compose.yml` is needed to derive the `enodeID` which is later passed to the other nodes. The IP needs to be fixed, as the other nodes need to know where to find the bootnode, and DNS is not supported. The bootnode does not participate in synchronization of state or mining. +- 1 bootnode: registers existing nodes on the network, discovery service. +- 2 miners: also called **sealers** within proof-of-authority (PoA). They validate the blocks. +- 1 fullnode: this serves as **transaction relay** and is a fullnode that does not mine, is locked but has RPC exposed. +- 2 swarm bee nodes: these nodes make up the **peer-to-peer CDN**. +- 3 blockchain explorer: 2 lightweight web applications to explore the blockchain and 1 blockscout explorer. +- 1 monitor and its corresponding dashboard: the monitor collects data from the fullnode which is displayed through the dashboard. -## Miners / Geth Nodes -There are three nodes that participate in the network. The state is synchronized between them and they are trying to create blocks with mining. Initially they connect to the bootnode with the information derived from the fixed IP and the nodekeyhex. If you want to interact with the network, you need to connect via RPC. You can attach a geth instance, connect Remix IDE or connect your browser with web3 and build a ÐApp. +## Quick start -The RPC Ports of the nodes are mapped to your localhost, the addresses are: +Setting up this network requires you to install Docker and Docker Compose. Clone the repository, and run `docker-compose up` or use Makefile commands from this directory. + +``` +# Start the network +$ make start +# Restart the network +$ make restart +# Stop the network +$ make stop +``` + +The network should start and synchronize without any further configuration. The network always uses the latest available version of Ethereum (geth), the network is set up for clique proof-of-authority similar to the Ethereum Rinkeby testnet. + +## Topology + +### Bootnode -* geth-dev-miner-1 : No RPC exposed -* geth-dev-miner-2: No RPC exposed -* geth-dev-node: [http://localhost:8545](http://localhost:8545) +The nodes in the network are connecting with the bootnode. This is a special Ethereum node, designed to provide a register of the existing nodes in the network. The parameter `nodekeyhex` in the `docker-compose.yml` is needed to derive the `enodeId` which is later passed to the other nodes. The IP needs to be fixed, as the other nodes need to know where to find the bootnode, and DNS is not supported. The bootnode does not participate in synchronization of state or mining. -## Swarm (/BZZ:/) -Swarm is a distributed storage platform and content distribution service, a native base layer service of the ethereum web3 stack. The primary objective of Swarm is to provide a sufficiently decentralized and redundant store of Ethereum’s public record, in particular to store and distribute dapp code and data as well as blockchain data. From an economic point of view, it allows participants to efficiently pool their storage and bandwidth resources in order to provide these services to all participants of the network, all while being incentivised by Ethereum. Files on Swarm are represented by their KECCAK256 Checksum. +### Miners and fullnode + +There are three nodes that participate in the network. The state is synchronized between them and they are trying to create blocks with mining. Initially, they connect to the bootnode with the information derived from the fixed IP and the `nodekeyhex`. If you want to interact with the network, you need to connect via RPC. You can attach a geth instance, connect Remix IDE or connect your browser with web3 and build a dApp. The RPC Ports of the nodes are mapped to your localhost, the addresses are: -* [http://localhost:8500](http://localhost:8500) - geth-swarm-1 -* [http://localhost:8501](http://localhost:8501) - geth-swarm-2 +- geth-dev-miner-1: [http://localhost:8541](http://localhost:8541) +- geth-dev-miner-2: [http://localhost:8543](http://localhost:8543) +- geth-dev-node: [http://localhost:8545](http://localhost:8545) + +### Swarm bee / IPFS + +Work in progress + +### Blockchain explorer + +A blockchain explorer fetches the data from `geth-dev-node` through RPC calls. The blockchain explorers can be found at the addresses: -## Whisper (/SHH:/) -Coming soon ... +- geth-explorer: [http://localhost:8080](http://localhost:8080) +- lite-explorer: [http://localhost:8800](http://localhost:8800) +- blockscout-explorer: [http://localhost:8800](http://localhost:4000) -## Blockchain Explorer -The blockchain explorer is a simple node.js web application being provided by a seperate container: geth-explorer. The application uses the web3 javascript API to fetch the data from `geth-dev-node` through RPC calls. The blockchain explorer can be found at [http://localhost:8080](http://localhost:8080). +### Blockchain monitor and dashboard -## Blockchain Dashboard -The blockchain dashboard is a simple node.js web application being provided by two separate containers: monitor and dashboard. The monitor collects data from the geth nodes and is being displayed through the dashboard. The blockchain dashboard can be found at [http://localhost:8008](http://localhost:8008) +The blockchain dashboard is a simple node.js web application being provided by two separate containers: `monitor` and `dashboard`. The monitor collects data from `geth-dev-node` which is displayed through the dashboard. The blockchain dashboard can be found at [http://localhost:8008](http://localhost:8008). diff --git a/geth-poa-docker/blockscout/Dockerfile b/geth-poa-docker/blockscout/Dockerfile new file mode 100644 index 0000000..a43b06c --- /dev/null +++ b/geth-poa-docker/blockscout/Dockerfile @@ -0,0 +1,42 @@ +FROM bitwalker/alpine-elixir-phoenix:1.11.3 + +RUN apk --no-cache --update add alpine-sdk gmp-dev automake libtool inotify-tools autoconf python3 git + +# Get Rust +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + +ENV PATH="$HOME/.cargo/bin:${PATH}" +ENV RUSTFLAGS="-C target-feature=-crt-static" + +EXPOSE 4000 + +ENV PORT=4000 \ + MIX_ENV="prod" \ + SECRET_KEY_BASE="RMgI4C1HSkxsEjdhtGMfwAHfyT6CKWXOgzCboJflfSm4jeAlic52io05KB6mqzc5" + +RUN rm -rf /opt/blockscout +RUN git clone https://github.com/blockscout/blockscout.git /opt/blockscout +WORKDIR /opt/blockscout +# BlockScout v3.6.0-beta +RUN git checkout 7d75236 + +# Cache elixir deps +RUN mix do deps.get, local.rebar --force, deps.compile + +ARG COIN +RUN if [ "$COIN" != "" ]; then sed -i s/"POA"/"${COIN}"/g apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po; fi + +# Run forderground build and phoenix digest +RUN mix compile + +# Add blockscout npm deps +RUN cd apps/block_scout_web/assets/ && \ + npm install && \ + npm run deploy && \ + cd - + +RUN cd apps/explorer/ && \ + npm install && \ + apk update && apk del --force-broken-world alpine-sdk gmp-dev automake libtool inotify-tools autoconf python3 + +RUN mix phx.digest diff --git a/geth-poa-docker/bootnode/Dockerfile b/geth-poa-docker/bootnode/Dockerfile index 3637836..6166ed9 100644 --- a/geth-poa-docker/bootnode/Dockerfile +++ b/geth-poa-docker/bootnode/Dockerfile @@ -4,7 +4,7 @@ RUN apt-get update \ && apt-get install -y wget software-properties-common \ && rm -rf /var/lib/apt/lists/* -WORKDIR "/root" +WORKDIR /root RUN add-apt-repository -y ppa:ethereum/ethereum @@ -13,7 +13,7 @@ RUN apt-get update \ && apt-get install -y ethereum ENV nodekeyhex="" -CMD exec bootnode -nodekeyhex $nodekeyhex +CMD exec bootnode -nodekeyhex $nodekeyhex -addr $bootnodeIp:30301 -verbosity 4 EXPOSE 30301/udp EXPOSE 30303/udp diff --git a/geth-poa-docker/docker-compose.yml b/geth-poa-docker/docker-compose.yml index 72a0eb5..225cb6b 100644 --- a/geth-poa-docker/docker-compose.yml +++ b/geth-poa-docker/docker-compose.yml @@ -1,13 +1,18 @@ version: "3" + services: geth-bootnode: hostname: geth-bootnode environment: - nodekeyhex=08f0e1dee5c1b4645f3331a566009e41a4514b6cd28656d63d0449ecf812812b #Needs to be fix, so that the miners know the resulting enode id + - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c # enodeId + - bootnodeIp=172.25.0.101 build: ./bootnode image: maibornwolff/eden:geth-bootnode + container_name: geth-bootnode ports: - 30301:30301/udp + - 30303:30303/udp networks: chainnet: ipv4_address: 172.25.0.101 # The miners need to know the IP address later on @@ -20,13 +25,23 @@ services: - address=0x8cc5a1a0802db41db826c2fcb72423744338dcb0 #derived from the private key which is passed in the args - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c #derived from the nodekeyhex of the bootnode - bootnodeIp=172.25.0.101 + - nodekeyhex=8eb666d3e8a42bfc7d9e829af60b6d9142d65bef1ecb5897622b4c3ef93377e2 + - minerId= 2ed7d9205ff27bf8fda964e2f11775498844ba300402f5d582fb04e8abdd2266fe0e33b112d53ed1f237713acbe162e6a68949b04344e4cd9f7939b8cb1e8c3e # enodeId build: context: ./miner args: privatekey: df504d175ae63abf209bad9dda965310d99559620550e74521a6798a41215f46 # Please don't do something like this in production, okay? password: pass image: maibornwolff/eden:geth-dev-miner-1 - container_name: geth-miner-1 + container_name: geth-dev-miner-1 + ports: + - 8541:8545 + - 8542:8546 + healthcheck: + test: wget http://localhost:8545 + interval: 2s + timeout: 5s + retries: 30 volumes: - eth-data-1:/root/.ethash networks: @@ -41,13 +56,23 @@ services: - address=0x3590aca93338b0721966a8d0c96ebf2c4c87c544 #derived from the private key which is passed in the args - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c #derived from the nodekeyhex of the bootnode - bootnodeIp=172.25.0.101 + - nodekeyhex=8861389742e9ee2669855a4928a712cec0f275241a359647772df689840c3c6c + - minerId=166ed53a196caeaf96d78625bfe1ec557ea21d379e77f8e8d177c9851e7a6869e141f65f49a3dd05752a285df01e150154cff056571f339c9967ccbc7d0c7f0a # enodeId build: context: ./miner args: privatekey: bc5b578e0dcb2dbf98dd6e5fe62cb5a28b84a55e15fc112d4ca88e1f62bd7c35 password: word image: maibornwolff/eden:geth-dev-miner-2 - container_name: geth-miner-2 + container_name: geth-dev-miner-2 + ports: + - 8543:8545 + - 8544:8546 + healthcheck: + test: wget http://localhost:8545 + interval: 2s + timeout: 5s + retries: 30 volumes: - eth-data-2:/root/.ethash networks: @@ -68,9 +93,10 @@ services: privatekey: bc5b578e0dcb2dbf98dd6e5fe62cb5a28b84a55e15fc112d4ca88e1f62bd7c35 password: word image: maibornwolff/eden:geth-dev-node - container_name: geth-node + container_name: geth-dev-node ports: - 8545:8545 + - 8546:8546 healthcheck: test: wget http://localhost:8545 interval: 2s @@ -82,78 +108,240 @@ services: chainnet: ipv4_address: 172.25.0.110 - geth-dev-swarm-1: - hostname: geth-dev-swarm-1 - depends_on: - - geth-dev-node + clef-1: + hostname: clef-1 + container_name: clef-1 + image: ethersphere/clef:0.4.9 + restart: unless-stopped environment: - - address=8cc5a1a0802db41db826c2fcb72423744338dcb0 #derived from the private key which is passed in the args - - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c #derived from the nodekeyhex of the bootnode - - bootnodeIp=172.25.0.101 - build: - context: ./swarm - args: - privatekey: df504d175ae63abf209bad9dda965310d99559620550e74521a6798a41215f46 - password: pass - image: maibornwolff/eden:geth-dev-swarm-1 - container_name: geth-swarm-1 + - CLEF_CHAINID=6660001 ports: - - 8500:8500 - - 30399:30399/udp + - 8550:8550 volumes: - - eth-data-4:/root/.ethash + - clef-1:/app/data + command: full networks: chainnet: ipv4_address: 172.25.0.111 - geth-dev-swarm-2: - hostname: geth-dev-miner-3 + bee-1: + hostname: bee-1 + container_name: bee-1 + image: ethersphere/bee:0.5.3 + restart: unless-stopped + environment: + - BEE_API_ADDR=:1633 + - BEE_BOOTNODE= + - BEE_BOOTNODE_MODE=true + - BEE_CLEF_SIGNER_ENABLE=true + - BEE_CLEF_SIGNER_ENDPOINT=http://clef-1:8550 + - BEE_CONFIG + - BEE_CORS_ALLOWED_ORIGINS + - BEE_DATA_DIR + - BEE_DB_CAPACITY + - BEE_DB_OPEN_FILES_LIMIT + - BEE_DB_BLOCK_CACHE_CAPACITY + - BEE_DB_WRITE_BUFFER_SIZE + - BEE_DB_DISABLE_SEEKS_COMPACTION + - BEE_DEBUG_API_ADDR=:1635 + - BEE_DEBUG_API_ENABLE=true + - BEE_GATEWAY_MODE + - BEE_GLOBAL_PINNING_ENABLE + - BEE_NAT_ADDR + - BEE_NETWORK_ID=6660002 + - BEE_P2P_ADDR=:1634 + - BEE_P2P_QUIC_ENABLE + - BEE_P2P_WS_ENABLE + - BEE_PASSWORD=pass + - BEE_PASSWORD_FILE + - BEE_PAYMENT_EARLY + - BEE_PAYMENT_THRESHOLD + - BEE_PAYMENT_TOLERANCE + - BEE_RESOLVER_OPTIONS + - BEE_STANDALONE + - BEE_SWAP_ENABLE + - BEE_SWAP_ENDPOINT=http://localhost:8545 + - BEE_SWAP_FACTORY_ADDRESS + - BEE_SWAP_INITIAL_DEPOSIT + - BEE_TRACING_ENABLE + - BEE_TRACING_ENDPOINT + - BEE_TRACING_SERVICE_NAME + - BEE_VERBOSITY=trace + - BEE_WELCOME_MESSAGE= + ports: + - "${API_ADDR:-1633}${BEE_API_ADDR:-:1633}" + - "${P2P_ADDR:-1634}${BEE_P2P_ADDR:-:1634}" + - "${DEBUG_API_ADDR:-127.0.0.1:1635}${BEE_DEBUG_API_ADDR:-:1635}" + volumes: + - bee-1:/home/bee/.bee + command: start depends_on: + - clef-1 - geth-dev-node + networks: + chainnet: + ipv4_address: 172.25.0.112 + + clef-2: + hostname: clef-2 + container_name: clef-2 + image: ethersphere/clef:0.4.9 + restart: unless-stopped environment: - - address=3590aca93338b0721966a8d0c96ebf2c4c87c544 #derived from the private key which is passed in the args - - bootnodeId=76a8171707eca17647a47ca99ffd348927dfa60102792ea349a25d5192e61855be83b786e376276a306afcceea4ffd1c9c77e4370b417efc39f328a0d068004c #derived from the nodekeyhex of the bootnode - - bootnodeIp=172.25.0.101 - build: - context: ./swarm - args: - privatekey: bc5b578e0dcb2dbf98dd6e5fe62cb5a28b84a55e15fc112d4ca88e1f62bd7c35 - password: pass - image: maibornwolff/eden:geth-dev-swarm-2 - container_name: geth-swarm-2 + - CLEF_CHAINID=6660001 ports: - - 8501:8500 - - 30340:30399/udp + - 9550:8550 volumes: - - eth-data-5:/root/.ethash + - clef-2:/app/data + command: full networks: chainnet: - ipv4_address: 172.25.0.112 + ipv4_address: 172.25.0.113 + + bee-2: + hostname: bee-2 + container_name: bee-2 + image: ethersphere/bee:0.5.3 + restart: unless-stopped + environment: + - BEE_API_ADDR=:2633 + - BEE_BOOTNODE=http://localhost:1633 # or 1634 for p2p? + - BEE_BOOTNODE_MODE=false + - BEE_CLEF_SIGNER_ENABLE=true + - BEE_CLEF_SIGNER_ENDPOINT=http://clef-2:9550 + - BEE_CONFIG + - BEE_CORS_ALLOWED_ORIGINS + - BEE_DATA_DIR + - BEE_DB_CAPACITY + - BEE_DB_OPEN_FILES_LIMIT + - BEE_DB_BLOCK_CACHE_CAPACITY + - BEE_DB_WRITE_BUFFER_SIZE + - BEE_DB_DISABLE_SEEKS_COMPACTION + - BEE_DEBUG_API_ADDR=:2635 + - BEE_DEBUG_API_ENABLE=true + - BEE_GATEWAY_MODE + - BEE_GLOBAL_PINNING_ENABLE + - BEE_NAT_ADDR + - BEE_NETWORK_ID=6660002 + - BEE_P2P_ADDR=:2634 + - BEE_P2P_QUIC_ENABLE + - BEE_P2P_WS_ENABLE + - BEE_PASSWORD=word + - BEE_PASSWORD_FILE + - BEE_PAYMENT_EARLY + - BEE_PAYMENT_THRESHOLD + - BEE_PAYMENT_TOLERANCE + - BEE_RESOLVER_OPTIONS + - BEE_STANDALONE + - BEE_SWAP_ENABLE + - BEE_SWAP_ENDPOINT=http://localhost:8545 + - BEE_SWAP_FACTORY_ADDRESS + - BEE_SWAP_INITIAL_DEPOSIT + - BEE_TRACING_ENABLE + - BEE_TRACING_ENDPOINT + - BEE_TRACING_SERVICE_NAME + - BEE_VERBOSITY=trace + - BEE_WELCOME_MESSAGE + ports: + - 2633:1633 + - 2634:1634 + - 2635:1635 + volumes: + - bee-2:/home/bee/.bee + command: start + depends_on: + - clef-2 + - geth-dev-node + - bee-1 + networks: + chainnet: + ipv4_address: 172.25.0.114 geth-explorer: hostname: geth-explorer depends_on: - geth-dev-node - ports: - - 8080:8080 build: ./explorer image: maibornwolff/eden:geth-explorer container_name: geth-explorer + ports: + - 8080:8080 networks: chainnet: ipv4_address: 172.25.0.125 + lite-explorer: + hostname: lite-explorer + depends_on: + - geth-dev-node + image: alethio/ethereum-lite-explorer + container_name: lite-explorer + environment: + - APP_NODE_URL=http://localhost:8545 + ports: + - 8800:80 + networks: + chainnet: + ipv4_address: 172.25.0.126 + + blockscout-explorer: + hostname: blockscout-explorer + depends_on: + - geth-dev-node + - blockscout-postgres + build: + context: ./blockscout + args: + COIN: ETH + restart: on-failure + command: /bin/bash -c "mix do ecto.create, ecto.migrate && mix phx.server" + image: maibornwolff/eden:blockscout-explorer + container_name: blockscout-explorer + environment: + - ETHEREUM_JSONRPC_VARIANT=geth + - ETHEREUM_JSONRPC_HTTP_URL=http://172.25.0.110:8545 + - DATABASE_URL=postgresql://postgres:@172.25.0.128:5432/explorer?ssl=false + - MIX_ENV=prod + ports: + - 4000:4000 + networks: + chainnet: + ipv4_address: 172.25.0.127 + + blockscout-postgres: + hostname: blockscout-postgres + container_name: blockscout-postgres + image: postgres:12.5 + restart: on-failure + environment: + - POSTGRES_HOST_AUTH_METHOD=trust + - POSTGRES_PASSWORD='' # default for authentication method trust + - POSTGRES_USER=postgres # default superuser and owner + ports: + - 5432:5432 + networks: + chainnet: + ipv4_address: 172.25.0.128 + monitor: + hostname: monitor + depends_on: + - geth-dev-node image: buythewhale/ethstats_monitor + container_name: monitor volumes: - ./monitor/app.json:/home/ethnetintel/eth-net-intelligence-api/app.json:ro networks: chainnet: ipv4_address: 172.25.0.135 - dashboard: + hostname: dashboard + depends_on: + - geth-dev-node + - monitor image: buythewhale/ethstats + container_name: dashboard volumes: - ./dashboard/ws_secret.json:/eth-netstats/ws_secret.json:ro ports: @@ -167,12 +355,13 @@ networks: driver: bridge ipam: config: - - subnet: 172.25.0.0/24 + - subnet: 172.25.0.0/24 volumes: eth-data-1: eth-data-2: eth-data-3: - eth-data-4: - eth-data-5: - eth-data-6: + clef-1: + bee-1: + clef-2: + bee-2: diff --git a/geth-poa-docker/miner/Dockerfile b/geth-poa-docker/miner/Dockerfile index 32ee5b9..dd8db8e 100644 --- a/geth-poa-docker/miner/Dockerfile +++ b/geth-poa-docker/miner/Dockerfile @@ -4,7 +4,7 @@ RUN apt-get update \ && apt-get install -y wget software-properties-common \ && rm -rf /var/lib/apt/lists/* -WORKDIR "/root" +WORKDIR /root RUN add-apt-repository -y ppa:ethereum/ethereum @@ -24,4 +24,8 @@ ENV address="" ENV bootnodeId="" ENV bootnodeIp="" -CMD exec geth --bootnodes "enode://$bootnodeId@$bootnodeIp:30301" --networkid "6660001" --verbosity=4 --syncmode=full --mine --gasprice "0" --etherbase $address --unlock $address --password ~/.accountpassword --rpc --rpcaddr "0.0.0.0" --rpcapi "eth,web3,net,admin,debug,db" --rpccorsdomain "*" +CMD exec geth --bootnodes "enode://$bootnodeId@$bootnodeIp:30301" --nodekeyhex $nodekeyhex --networkid "6660001" --verbosity 4 --http --http.addr "0.0.0.0" --http.port 8545 --http.api "eth,web3,net,admin,debug,miner,personal" --http.corsdomain "*" --ws --ws.addr "0.0.0.0" --ws.port 8546 --ws.api "eth,web3,net,admin,debug,miner,personal" --ws.origins "*" --syncmode full --mine --miner.gasprice 0 --miner.etherbase $address --unlock $address --password ~/.accountpassword --allow-insecure-unlock + +EXPOSE 8545 +EXPOSE 8546 +EXPOSE 30303 diff --git a/geth-poa-docker/miner/genesis.json b/geth-poa-docker/miner/genesis.json index 0377dd8..c15d504 100644 --- a/geth-poa-docker/miner/genesis.json +++ b/geth-poa-docker/miner/genesis.json @@ -7,6 +7,10 @@ "eip155Block": 3, "eip158Block": 3, "byzantiumBlock": 4, + "constantinopleBlock": 5, + "petersburgBlock": 6, + "istanbulBlock": 7, + "berlinBlock": 8, "clique": { "period": 5, "epoch": 30000 @@ -20,10 +24,10 @@ "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x0000000000000000000000000000000000000000", "alloc": { - "3590aca93338b0721966a8d0c96ebf2c4c87c544": { + "0x3590aca93338b0721966a8d0c96ebf2c4c87c544": { "balance": "0x200000000000000000000000000000000000000000000000000000000000000" }, - "8cc5a1a0802db41db826c2fcb72423744338dcb0": { + "0x8cc5a1a0802db41db826c2fcb72423744338dcb0": { "balance": "0x200000000000000000000000000000000000000000000000000000000000000" } }, diff --git a/geth-poa-docker/monitor/app.json b/geth-poa-docker/monitor/app.json index ec4e15f..976985d 100644 --- a/geth-poa-docker/monitor/app.json +++ b/geth-poa-docker/monitor/app.json @@ -1,24 +1,4 @@ [ - { - "name": "bootnode", - "script": "app.js", - "log_date_format": "YYYY-MM-DD HH:mm Z", - "merge_logs": false, - "watch": true, - "max_restarts": 10, - "exec_interpreter": "node", - "exec_mode": "fork_mode", - "env": { - "NODE_ENV": "production", - "RPC_HOST": "172.25.0.101", - "RPC_PORT": "8545", - "LISTENING_PORT": "30303", - "INSTANCE_NAME": "bootnode", - "WS_SERVER": "ws://172.25.0.136:3000", - "WS_SECRET": "123", - "VERBOSITY": 3 - } - }, { "name": "geth-dev-miner-1", "script": "app.js", diff --git a/geth-poa-docker/node/Dockerfile b/geth-poa-docker/node/Dockerfile index 9cae8ca..3306a36 100644 --- a/geth-poa-docker/node/Dockerfile +++ b/geth-poa-docker/node/Dockerfile @@ -4,7 +4,7 @@ RUN apt-get update \ && apt-get install -y wget software-properties-common \ && rm -rf /var/lib/apt/lists/* -WORKDIR "/root" +WORKDIR /root RUN add-apt-repository -y ppa:ethereum/ethereum @@ -24,7 +24,8 @@ ENV address="" ENV bootnodeId="" ENV bootnodeIp="" -CMD exec geth --bootnodes "enode://$bootnodeId@$bootnodeIp:30301" --networkid "6660001" --verbosity=4 --rpc --rpcaddr "0.0.0.0" --rpcapi "eth,web3,net,admin,debug,db" --rpccorsdomain "*" --syncmode="full" +CMD exec geth --bootnodes "enode://$bootnodeId@$bootnodeIp:30301" --networkid "6660001" --verbosity 4 --http --http.addr "0.0.0.0" --http.port 8545 --http.api "eth,web3,net,admin,debug,miner,personal" --http.corsdomain "*" --ws --ws.addr "0.0.0.0" --ws.port 8546 --ws.api "eth,web3,net,admin,debug,miner,personal" --ws.origins "*" --syncmode full --gcmode archive EXPOSE 8545 +EXPOSE 8546 EXPOSE 30303 diff --git a/geth-poa-docker/node/genesis.json b/geth-poa-docker/node/genesis.json index 0377dd8..c15d504 100644 --- a/geth-poa-docker/node/genesis.json +++ b/geth-poa-docker/node/genesis.json @@ -7,6 +7,10 @@ "eip155Block": 3, "eip158Block": 3, "byzantiumBlock": 4, + "constantinopleBlock": 5, + "petersburgBlock": 6, + "istanbulBlock": 7, + "berlinBlock": 8, "clique": { "period": 5, "epoch": 30000 @@ -20,10 +24,10 @@ "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x0000000000000000000000000000000000000000", "alloc": { - "3590aca93338b0721966a8d0c96ebf2c4c87c544": { + "0x3590aca93338b0721966a8d0c96ebf2c4c87c544": { "balance": "0x200000000000000000000000000000000000000000000000000000000000000" }, - "8cc5a1a0802db41db826c2fcb72423744338dcb0": { + "0x8cc5a1a0802db41db826c2fcb72423744338dcb0": { "balance": "0x200000000000000000000000000000000000000000000000000000000000000" } }, diff --git a/geth-poa-docker/swarm/Dockerfile b/geth-poa-docker/swarm/Dockerfile deleted file mode 100644 index 9194295..0000000 --- a/geth-poa-docker/swarm/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:xenial - -RUN apt-get update \ - && apt-get install -y wget software-properties-common \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR "/root" - -RUN add-apt-repository -y ppa:ethereum/ethereum - -ARG binary -RUN apt-get update \ - && apt-get install -y geth ethereum-swarm - -ARG password -ARG privatekey -RUN echo $password > ~/.accountpassword -RUN echo $privatekey > ~/.privatekey -RUN geth account import --password ~/.accountpassword ~/.privatekey - -ENV address="" -ENV bootnodeId="" -ENV bootnodeIp="" - -CMD exec swarm --bootnodes "enode://$bootnodeId@$bootnodeIp:30399" --password ~/.accountpassword --bzzaccount $address --datadir .ethereum --keystore .ethereum/keystore --bzzapi "0.0.0.0" -corsdomain "*" -httpaddr "0.0.0.0" - -EXPOSE 8500 -EXPOSE 33099 diff --git a/geth-pow-docker/Makefile b/geth-pow-docker/Makefile new file mode 100644 index 0000000..9f2eaa5 --- /dev/null +++ b/geth-pow-docker/Makefile @@ -0,0 +1,27 @@ +.PHONY: build clean logs reset restart start start-attached stop + +build: + docker-compose build + +build-no-cache: + docker-compose build --no-cache + +clean: + docker-compose down --rmi all --volumes --remove-orphans + +logs: + docker-compose logs -f + +reset: stop clean + docker-compose up -d --build --force-recreate --remove-orphans + +restart: stop start + +start: + docker-compose up -d --remove-orphans + +start-attached: + docker-compose up --remove-orphans + +stop: + docker-compose down --volumes --remove-orphans diff --git a/geth-pow-docker/README.md b/geth-pow-docker/README.md deleted file mode 120000 index 32d46ee..0000000 --- a/geth-pow-docker/README.md +++ /dev/null @@ -1 +0,0 @@ -../README.md \ No newline at end of file diff --git a/geth-pow-docker/README.md b/geth-pow-docker/README.md new file mode 100644 index 0000000..5c71140 --- /dev/null +++ b/geth-pow-docker/README.md @@ -0,0 +1,28 @@ +# Local PoW Ethereum Network + +A set of Docker images to create a local PoW Ethereum network with one mining node which is also used for bootstrapping, a scalable number of fullnodes, an explorer, a monitor and its corresponding dashboard. This was built to understand how local PoW Ethereum networks have to be set up and to provide a local test environment. Never use this in a productive environment, as the repository contains hardcoded passwords and private keys for convenience. + +The testnet consists of several parts: + +- 1 miner: also used for bootstrapping. +- n fullnodes: default number of fullnodes is 1. +- 1 blockchain explorer +- 1 monitor and its corresponding dashboard + +## Quick start + +Setting up this network requires you to install Docker and Docker Compose. Clone the repository, and run `docker-compose up` or use Makefile commands from this directory. + +``` +# Start the network +$ make start +# Restart the network +$ make restart +# Stop the network +$ make stop + +# Scale the number of fullnodes with the following command, where n is the number of nodes to create +$ docker-compose up -d --scale geth-node=n +``` + +The network should start and synchronize without any further configuration. The network always uses the latest available stable version of Ethereum (geth), the network is set up for PoW. diff --git a/geth-pow-docker/bootstrap-mining/.accountpassword b/geth-pow-docker/bootstrap-mining/.accountpassword new file mode 100644 index 0000000..4f5b278 --- /dev/null +++ b/geth-pow-docker/bootstrap-mining/.accountpassword @@ -0,0 +1 @@ +word diff --git a/geth-pow-docker/bootstrap-mining/.privatekey b/geth-pow-docker/bootstrap-mining/.privatekey new file mode 100644 index 0000000..053caff --- /dev/null +++ b/geth-pow-docker/bootstrap-mining/.privatekey @@ -0,0 +1 @@ +bc5b578e0dcb2dbf98dd6e5fe62cb5a28b84a55e15fc112d4ca88e1f62bd7c35 diff --git a/geth-pow-docker/bootstrap-mining/Dockerfile b/geth-pow-docker/bootstrap-mining/Dockerfile new file mode 100644 index 0000000..809d249 --- /dev/null +++ b/geth-pow-docker/bootstrap-mining/Dockerfile @@ -0,0 +1,9 @@ +FROM ethereum/client-go:stable + +WORKDIR /root + +COPY ./genesis.json ./start.sh ./.accountpassword ./.privatekey . + +RUN chmod +x ./start.sh + +ENTRYPOINT ./start.sh diff --git a/geth-pow-docker/files/genesis.json b/geth-pow-docker/bootstrap-mining/genesis.json similarity index 77% rename from geth-pow-docker/files/genesis.json rename to geth-pow-docker/bootstrap-mining/genesis.json index ce37cba..bbeb0c9 100644 --- a/geth-pow-docker/files/genesis.json +++ b/geth-pow-docker/bootstrap-mining/genesis.json @@ -1,9 +1,16 @@ { "config": { "chainId": 456719, - "homesteadBlock": 0, - "eip155Block": 0, - "eip158Block": 0 + "homesteadBlock": 1, + "eip150Block": 2, + "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "eip155Block": 3, + "eip158Block": 3, + "byzantiumBlock": 4, + "constantinopleBlock": 5, + "petersburgBlock": 6, + "istanbulBlock": 7, + "berlinBlock": 8 }, "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -14,6 +21,9 @@ "extraData": "0x", "gasLimit": "0x8000000", "alloc": { + "0x3590aca93338b0721966a8d0c96ebf2c4c87c544": { + "balance": "20000000000000000000" + }, "0x007ccffb7916f37f7aeef05e8096ecfbe55afc2f": { "balance": "20000000000000000000" }, diff --git a/geth-pow-docker/bootstrap-mining/start.sh b/geth-pow-docker/bootstrap-mining/start.sh new file mode 100644 index 0000000..38d4416 --- /dev/null +++ b/geth-pow-docker/bootstrap-mining/start.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e + +geth init /root/genesis.json +geth account import --password ./.accountpassword ./.privatekey + +sleep 3 +# Get IP of bootstrap node +BOOTSTRAP_IP=`getent hosts bootstrap-mining | cut -d" " -f1` +# Replace XXX for IP of bootstrap node +GETH_OPTS=${@/XXX/$BOOTSTRAP_IP} +geth $GETH_OPTS diff --git a/geth-pow-docker/dashboard/ws_secret.json b/geth-pow-docker/dashboard/ws_secret.json new file mode 100644 index 0000000..cfa6d1a --- /dev/null +++ b/geth-pow-docker/dashboard/ws_secret.json @@ -0,0 +1 @@ +["123"] diff --git a/geth-pow-docker/docker-compose.yml b/geth-pow-docker/docker-compose.yml index 6c58c57..14147a3 100644 --- a/geth-pow-docker/docker-compose.yml +++ b/geth-pow-docker/docker-compose.yml @@ -1,54 +1,64 @@ version: "3" + services: - geth_mining: - build: monitored-geth-client - image: maibornwolff/eden:geth_mining + bootstrap-mining: + image: maibornwolff/eden:bootstrap-mining + build: + context: ./bootstrap-mining restart: on-failure - container_name: geth_mining - entrypoint: /root/start.sh - command: '--datadir=~/.ethereum/devchain --nodekeyhex=091bd6067cb4612df85d9c1ff85cc47f259ced4d4cd99816b14f35650f59c322 --rpcapi "db,personal,eth,net,web3,swarm" --rpccorsdomain="*" --rpcvhosts="*" --networkid=456719 --rpc --rpcaddr="0.0.0.0" --mine' - volumes: - - ./files/password:/root/files/password:ro - - ./files/genesis.json:/root/files/genesis.json:ro - - ./files/keystore:/root/.ethereum/devchain/keystore:rw - - # cannot use localtime atm, open docker issue: https://github.com/docker/for-mac/issues/2396 - #- /etc/localtime:/etc/localtime:ro - - # ensutils are available on geth_mining - - ./files/ensutils.js:/root/files/ensutils.js:ro + container_name: bootstrap-mining + hostname: bootstrap-mining + entrypoint: ./start.sh + command: '--networkid 456719 --verbosity 4 --nodekeyhex=091bd6067cb4612df85d9c1ff85cc47f259ced4d4cd99816b14f35650f59c322 --http --http.addr "0.0.0.0" --http.port 8545 --http.api "eth,web3,net,admin,debug,miner,personal" --http.corsdomain="*" --ws --ws.addr "0.0.0.0" --ws.port 8546 --ws.api "eth,web3,net,admin,debug,miner,personal" --ws.origins="*" --syncmode full --mine --miner.etherbase 0x3590aca93338b0721966a8d0c96ebf2c4c87c544 --unlock 0x3590aca93338b0721966a8d0c96ebf2c4c87c544 --password /root/.accountpassword --allow-insecure-unlock' ports: - - "30303:30303" - - "30303:30303/udp" - - "8545:8545" + - 30303:30303 + - 30303:30303/udp + - 8545:8545 + - 8546:8546 + healthcheck: + test: wget http://localhost:8545 + interval: 2s + timeout: 5s + retries: 30 - geth: - build: monitored-geth-client - image: maibornwolff/eden:geth + geth-node: + image: maibornwolff/eden:geth-node + build: + context: ./geth-node restart: on-failure - container_name: geth - entrypoint: /root/start.sh - volumes: - - ./files/password:/root/files/password:ro - - ./files/genesis.json:/root/files/genesis.json:ro - - ./files/keystore:/root/.ethereum/devchain/keystore:rw - command: '--datadir=~/.ethereum/devchain --rpccorsdomain="*" --networkid=456719 --rpc --bootnodes="enode://288b97262895b1c7ec61cf314c2e2004407d0a5dc77566877aad1f2a36659c8b698f4b56fd06c4a0c0bf007b4cfb3e7122d907da3b005fa90e724441902eb19e@127.0.0.1:30303"' + depends_on: + - bootstrap-mining + entrypoint: ./start.sh + command: '--networkid 456719 --verbosity 4 --bootnodes "enode://288b97262895b1c7ec61cf314c2e2004407d0a5dc77566877aad1f2a36659c8b698f4b56fd06c4a0c0bf007b4cfb3e7122d907da3b005fa90e724441902eb19e@XXX:30303" --http --http.corsdomain="*" --syncmode full' + + lite-explorer: + hostname: lite-explorer + depends_on: + - bootstrap-mining + image: alethio/ethereum-lite-explorer + container_name: lite-explorer + environment: + - APP_NODE_URL=http://localhost:8545 + ports: + - 8800:80 monitor: + hostname: monitor + depends_on: + - bootstrap-mining image: buythewhale/ethstats_monitor + container_name: monitor volumes: - - ./monitored-geth-client/app.json:/home/ethnetintel/eth-net-intelligence-api/app.json:ro + - ./monitor/app.json:/home/ethnetintel/eth-net-intelligence-api/app.json:ro dashboard: + hostname: dashboard + depends_on: + - bootstrap-mining + - monitor image: buythewhale/ethstats + container_name: dashboard volumes: - - ./monitored-geth-client/ws_secret.json:/eth-netstats/ws_secret.json:ro - ports: - - "3000:3000" - - explorer: - build: explorer - image: maibornwolff/eden:explorer - restart: always + - ./dashboard/ws_secret.json:/eth-netstats/ws_secret.json:ro ports: - - 3002:3000 + - 8008:3000 diff --git a/geth-pow-docker/explorer/Dockerfile b/geth-pow-docker/explorer/Dockerfile deleted file mode 100644 index 144dd9a..0000000 --- a/geth-pow-docker/explorer/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM node:8-alpine - -WORKDIR /app - -RUN apk add --update git python make g++ -RUN git clone --depth=1 https://github.com/gobitfly/etherchain-light --recursive . - -RUN npm install -COPY config.js . - -EXPOSE 3000 - -CMD [ "npm", "start" ] diff --git a/geth-pow-docker/explorer/config.js b/geth-pow-docker/explorer/config.js deleted file mode 100644 index 33dd22a..0000000 --- a/geth-pow-docker/explorer/config.js +++ /dev/null @@ -1,10 +0,0 @@ -const web3 = require('web3'); - -const config = function () { - this.logFormat = "dev"; - this.provider = new web3.providers.HttpProvider('http://geth_mining:8545'); - this.bootstrapUrl = "https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/yeti/bootstrap.min.css"; - this.names = {}; -} - -module.exports = config; diff --git a/geth-pow-docker/files/ensutils.js b/geth-pow-docker/files/ensutils.js deleted file mode 100644 index 5104ca1..0000000 --- a/geth-pow-docker/files/ensutils.js +++ /dev/null @@ -1,1427 +0,0 @@ -function namehash(name) { - var node = '0x0000000000000000000000000000000000000000000000000000000000000000'; - if (name != '') { - var labels = name.split("."); - for(var i = labels.length - 1; i >= 0; i--) { - node = web3.sha3(node + web3.sha3(labels[i]).slice(2), {encoding: 'hex'}); - } - } - return node.toString(); -} - -var ensContract = web3.eth.contract([ - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "name": "resolver", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "label", - "type": "bytes32" - }, - { - "name": "owner", - "type": "address" - } - ], - "name": "setSubnodeOwner", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "ttl", - "type": "uint64" - } - ], - "name": "setTTL", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "name": "ttl", - "outputs": [ - { - "name": "", - "type": "uint64" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "resolver", - "type": "address" - } - ], - "name": "setResolver", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "owner", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "name": "owner", - "type": "address" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": true, - "name": "label", - "type": "bytes32" - }, - { - "indexed": false, - "name": "owner", - "type": "address" - } - ], - "name": "NewOwner", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "name": "resolver", - "type": "address" - } - ], - "name": "NewResolver", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "name": "ttl", - "type": "uint64" - } - ], - "name": "NewTTL", - "type": "event" - } -]); -var ens = ensContract.at('0x52db67a188a2ddad8433a80c494cbbb15002d125'); - -var auctionRegistrarContract = web3.eth.contract([ - { - "constant": false, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - } - ], - "name": "releaseDeed", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - } - ], - "name": "getAllowedTime", - "outputs": [ - { - "name": "timestamp", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "unhashedName", - "type": "string" - } - ], - "name": "invalidateName", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "hash", - "type": "bytes32" - }, - { - "name": "owner", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "salt", - "type": "bytes32" - } - ], - "name": "shaBid", - "outputs": [ - { - "name": "sealedBid", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "bidder", - "type": "address" - }, - { - "name": "seal", - "type": "bytes32" - } - ], - "name": "cancelBid", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - } - ], - "name": "entries", - "outputs": [ - { - "name": "", - "type": "uint8" - }, - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ens", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - }, - { - "name": "_value", - "type": "uint256" - }, - { - "name": "_salt", - "type": "bytes32" - } - ], - "name": "unsealBid", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - } - ], - "name": "transferRegistrars", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "bytes32" - } - ], - "name": "sealedBids", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - } - ], - "name": "state", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - }, - { - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "isAllowed", - "outputs": [ - { - "name": "allowed", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - } - ], - "name": "finalizeAuction", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "registryStarted", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "launchLength", - "outputs": [ - { - "name": "", - "type": "uint32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "sealedBid", - "type": "bytes32" - } - ], - "name": "newBid", - "outputs": [], - "payable": true, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "labels", - "type": "bytes32[]" - } - ], - "name": "eraseNode", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_hashes", - "type": "bytes32[]" - } - ], - "name": "startAuctions", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "hash", - "type": "bytes32" - }, - { - "name": "deed", - "type": "address" - }, - { - "name": "registrationDate", - "type": "uint256" - } - ], - "name": "acceptRegistrarTransfer", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_hash", - "type": "bytes32" - } - ], - "name": "startAuction", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "rootNode", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "hashes", - "type": "bytes32[]" - }, - { - "name": "sealedBid", - "type": "bytes32" - } - ], - "name": "startAuctionsAndBid", - "outputs": [], - "payable": true, - "type": "function" - }, - { - "inputs": [ - { - "name": "_ens", - "type": "address" - }, - { - "name": "_rootNode", - "type": "bytes32" - }, - { - "name": "_startDate", - "type": "uint256" - } - ], - "payable": false, - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "hash", - "type": "bytes32" - }, - { - "indexed": false, - "name": "registrationDate", - "type": "uint256" - } - ], - "name": "AuctionStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "hash", - "type": "bytes32" - }, - { - "indexed": true, - "name": "bidder", - "type": "address" - }, - { - "indexed": false, - "name": "deposit", - "type": "uint256" - } - ], - "name": "NewBid", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "hash", - "type": "bytes32" - }, - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "status", - "type": "uint8" - } - ], - "name": "BidRevealed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "hash", - "type": "bytes32" - }, - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "registrationDate", - "type": "uint256" - } - ], - "name": "HashRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "hash", - "type": "bytes32" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "HashReleased", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "hash", - "type": "bytes32" - }, - { - "indexed": true, - "name": "name", - "type": "string" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "name": "registrationDate", - "type": "uint256" - } - ], - "name": "HashInvalidated", - "type": "event" - } -]); -var ethRegistrar = auctionRegistrarContract.at(ens.owner(namehash('eth'))); - -var deedContract = web3.eth.contract([ - { - "constant": true, - "inputs": [], - "name": "creationDate", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "destroyDeed", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "registrar", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "refundRatio", - "type": "uint256" - } - ], - "name": "closeDeed", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newRegistrar", - "type": "address" - } - ], - "name": "setRegistrar", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newValue", - "type": "uint256" - } - ], - "name": "setBalance", - "outputs": [], - "payable": true, - "type": "function" - }, - { - "inputs": [], - "type": "constructor" - }, - { - "payable": true, - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "DeedClosed", - "type": "event" - } -]); - -var fifsRegistrarContract = web3.eth.contract([ - { - "constant": true, - "inputs": [], - "name": "ens", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "expiryTimes", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "subnode", - "type": "bytes32" - }, - { - "name": "owner", - "type": "address" - } - ], - "name": "register", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "rootNode", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "inputs": [ - { - "name": "ensAddr", - "type": "address" - }, - { - "name": "node", - "type": "bytes32" - } - ], - "type": "constructor" - } -]); -var myRegistrar = fifsRegistrarContract.at('0x90dd5486a271235be9508f62acebfd275d6e6404'); - -var resolverContract = web3.eth.contract([ - { - "constant": true, - "inputs": [ - { - "name": "interfaceID", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "contentTypes", - "type": "uint256" - } - ], - "name": "ABI", - "outputs": [ - { - "name": "contentType", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "x", - "type": "bytes32" - }, - { - "name": "y", - "type": "bytes32" - } - ], - "name": "setPubkey", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "name": "content", - "outputs": [ - { - "name": "ret", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "name": "addr", - "outputs": [ - { - "name": "ret", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "contentType", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "setABI", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "name": "name", - "outputs": [ - { - "name": "ret", - "type": "string" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "name", - "type": "string" - } - ], - "name": "setName", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "hash", - "type": "bytes32" - } - ], - "name": "setContent", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "name": "pubkey", - "outputs": [ - { - "name": "x", - "type": "bytes32" - }, - { - "name": "y", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "node", - "type": "bytes32" - }, - { - "name": "addr", - "type": "address" - } - ], - "name": "setAddr", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "inputs": [ - { - "name": "ensAddr", - "type": "address" - } - ], - "payable": false, - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "name": "a", - "type": "address" - } - ], - "name": "AddrChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "name": "hash", - "type": "bytes32" - } - ], - "name": "ContentChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "name": "name", - "type": "string" - } - ], - "name": "NameChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": true, - "name": "contentType", - "type": "uint256" - } - ], - "name": "ABIChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "name": "x", - "type": "bytes32" - }, - { - "indexed": false, - "name": "y", - "type": "bytes32" - } - ], - "name": "PubkeyChanged", - "type": "event" - } -]); - -function getAddr(name) { - var node = namehash(name) - var resolverAddress = ens.resolver(node); - if (resolverAddress === '0x0000000000000000000000000000000000000000') { - return resolverAddress; - } - return resolverContract.at(resolverAddress).addr(node); -} - -var publicResolver = resolverContract.at(getAddr('resolver.eth')); - -var reverseRegistrarContract = web3.eth.contract([ - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "resolver", - "type": "address" - } - ], - "name": "claimWithResolver", - "outputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "claim", - "outputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ens", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "defaultResolver", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "addr", - "type": "address" - } - ], - "name": "node", - "outputs": [ - { - "name": "ret", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "name", - "type": "string" - } - ], - "name": "setName", - "outputs": [ - { - "name": "node", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "inputs": [ - { - "name": "ensAddr", - "type": "address" - }, - { - "name": "resolverAddr", - "type": "address" - } - ], - "payable": false, - "type": "constructor" - } -]); -var reverseRegistrar = reverseRegistrarContract.at(ens.owner(namehash('addr.reverse'))); - -function getContent(name) { - var node = namehash(name) - var resolverAddress = ens.resolver(node); - if (resolverAddress === '0x0000000000000000000000000000000000000000') { - return "0x0000000000000000000000000000000000000000000000000000000000000000"; - } - return resolverContract.at(resolverAddress).content(node); -} diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-44.914646739Z--99429f64cf4d5837620dcc293c1a537d58729b68 b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-44.914646739Z--99429f64cf4d5837620dcc293c1a537d58729b68 deleted file mode 100644 index 5ac9dcb..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-44.914646739Z--99429f64cf4d5837620dcc293c1a537d58729b68 +++ /dev/null @@ -1 +0,0 @@ -{"address":"99429f64cf4d5837620dcc293c1a537d58729b68","Crypto":{"cipher":"aes-128-ctr","ciphertext":"335f5ae16a995fa6ee77a0c6b0543fad332860c6711abac8fd539ddc18ac0eb6","cipherparams":{"iv":"ed7e663329ca8ec06992a6a946124a21"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"bf03fa013f3a5129441d70a8b8329f86aa5f24f36b97f684067c14a5d16d2843"},"mac":"c71ad21fdb9947be1169cf50a04c6ac9a3c8e49d617d0f1f99c42371f1d739c3"},"id":"1e6f5cfb-998b-4a89-85ac-e7b17359657e","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-46.400585045Z--ca247d7425a29c6645fa991f9151f994a830882d b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-46.400585045Z--ca247d7425a29c6645fa991f9151f994a830882d deleted file mode 100644 index ed45054..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-46.400585045Z--ca247d7425a29c6645fa991f9151f994a830882d +++ /dev/null @@ -1 +0,0 @@ -{"address":"ca247d7425a29c6645fa991f9151f994a830882d","Crypto":{"cipher":"aes-128-ctr","ciphertext":"507d95f8c71bac82e38ac3eadaae8a75a1047a006a3b86b01e11fd86ddb8868b","cipherparams":{"iv":"33a8a75337bc5f0a82773bca39288d70"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"3610909466cb668444af20e063a6dc466c18a215884666cbe49fc13f7145a44b"},"mac":"46803c752ad92155a2660aa018e2d7ebb979ae94f7b5c59afb5baca2abfc5594"},"id":"4ee27016-eb9e-46a5-86a5-8689b2855b14","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-47.838345060Z--794f74c8916310d6a0009bb8a43a5acab59a58ad b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-47.838345060Z--794f74c8916310d6a0009bb8a43a5acab59a58ad deleted file mode 100644 index b40c083..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-47.838345060Z--794f74c8916310d6a0009bb8a43a5acab59a58ad +++ /dev/null @@ -1 +0,0 @@ -{"address":"794f74c8916310d6a0009bb8a43a5acab59a58ad","Crypto":{"cipher":"aes-128-ctr","ciphertext":"38eb242cc1146829ca1857d21b9490a49e872223b8b6242fe111ad6a23cc1859","cipherparams":{"iv":"aef1cf480b73714d6dc2050df5c29a55"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"21c6dd11c2196cd6ad18f9dfc3d65e4621fb59ae4ac17905f3e0541d84dbc9c5"},"mac":"ea633193668c12df21e18f99ea1f6a015c07614d98950fd8c0f083e8e1d82a0a"},"id":"113165af-bf7b-45b3-b467-fd7eab5a5224","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-49.151752132Z--276ecb88715a503b00d1f15af4c17dc051991667 b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-49.151752132Z--276ecb88715a503b00d1f15af4c17dc051991667 deleted file mode 100644 index 2dd1ac4..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-49.151752132Z--276ecb88715a503b00d1f15af4c17dc051991667 +++ /dev/null @@ -1 +0,0 @@ -{"address":"276ecb88715a503b00d1f15af4c17dc051991667","Crypto":{"cipher":"aes-128-ctr","ciphertext":"ad828d3ded808a62e523b2b487173474c6d73e1b6b9a47727bbff1848eebcc21","cipherparams":{"iv":"86e30a073376d28535eedab7cd5b7526"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"48e65dd40a9c763a8d6591f0c62765112e27f81ffbbd2cd95312bf7350463f73"},"mac":"4a437326562841c859de122979004577afd5fbeb59c0c7cf5f26e2b768f7db33"},"id":"ee231f16-afef-4406-b0a3-0371449c5a73","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-50.513483270Z--83042c0147acce98e35ed9ef52e6dfc5c67ef92e b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-50.513483270Z--83042c0147acce98e35ed9ef52e6dfc5c67ef92e deleted file mode 100644 index c61fafd..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-50.513483270Z--83042c0147acce98e35ed9ef52e6dfc5c67ef92e +++ /dev/null @@ -1 +0,0 @@ -{"address":"83042c0147acce98e35ed9ef52e6dfc5c67ef92e","Crypto":{"cipher":"aes-128-ctr","ciphertext":"ae386ac1c250971ecdf1108a616b04fd0d7d773a35480fc6813b8718764827e8","cipherparams":{"iv":"aa36db6e050c18676bac99431b3693ee"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"af4b3c0480a35a062e3097b7efe081cffac8353fc0666a3df3c79a3c3aa70330"},"mac":"56509728b085aa52e3a693eddaa4c620f959687103e312120d7f651aceb12426"},"id":"3e9936cc-0fe4-4774-9d67-e278ae445cab","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-51.693207415Z--8ab7114ba0f7ca706af69f799588766c8426aa24 b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-51.693207415Z--8ab7114ba0f7ca706af69f799588766c8426aa24 deleted file mode 100644 index b068132..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-51.693207415Z--8ab7114ba0f7ca706af69f799588766c8426aa24 +++ /dev/null @@ -1 +0,0 @@ -{"address":"8ab7114ba0f7ca706af69f799588766c8426aa24","Crypto":{"cipher":"aes-128-ctr","ciphertext":"c098e1e374eb0c96af66a2394b6e401a34bd1883f39c5d38547e5c06e014dfab","cipherparams":{"iv":"e4c4a7948d9c819de97c077b9485f969"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"e4d9cdd321e91d12f247b1effada3c8e41a44c1d62cf320d8cacec3dcd1b7792"},"mac":"188fc24a8102b8accf65c05990d14b5f3bd587870ff018ec0284b06d921f7878"},"id":"3e2c44e9-3477-4da6-a856-66b55c155df5","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-53.093803426Z--932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-53.093803426Z--932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f deleted file mode 100644 index b23f430..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-53.093803426Z--932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f +++ /dev/null @@ -1 +0,0 @@ -{"address":"932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f","Crypto":{"cipher":"aes-128-ctr","ciphertext":"dea16b63ebc5fc2813292b46e6b1c204bfda384d0096a3ece9fe17f82e30e4aa","cipherparams":{"iv":"6b27678367f0760cc33046f445b3e9df"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"781667c20eb364ac5f253f9c8484ad8626b0c4a5b42958907142e0944a9f0b70"},"mac":"1a1cb0ae6d3c38255eeef22d7cf0c7b4667fa3ef282f95160c814f9efe17cc86"},"id":"50f7c038-d9f3-42e6-bf52-24ea8ef1b550","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-54.549724060Z--893c3f80d2a0375b3f00f856cf8a6775e4efc26a b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-54.549724060Z--893c3f80d2a0375b3f00f856cf8a6775e4efc26a deleted file mode 100644 index 11cb027..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-54.549724060Z--893c3f80d2a0375b3f00f856cf8a6775e4efc26a +++ /dev/null @@ -1 +0,0 @@ -{"address":"893c3f80d2a0375b3f00f856cf8a6775e4efc26a","Crypto":{"cipher":"aes-128-ctr","ciphertext":"e822c7d65188a4a34b33a6b39ad929543131255584f7a967229d85f5bda05973","cipherparams":{"iv":"0604cbe66fe8a06107f8c2058ba56f9a"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"48982da8b602d6d8606150e5d8de7526b46658dafce1c034281da3b477e9519d"},"mac":"4d79541dcaffd88b058ac53c0142dd464b9b62af86e9efa4779289a42d6b7ca6"},"id":"2cb29581-8f6a-4cbb-b7c8-5046dc4327d4","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-55.760047216Z--b1d3073bcc45462a3b0dfe69902cdd12971efec9 b/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-55.760047216Z--b1d3073bcc45462a3b0dfe69902cdd12971efec9 deleted file mode 100644 index ed308d0..0000000 --- a/geth-pow-docker/files/keystore/UTC--2016-02-29T14-52-55.760047216Z--b1d3073bcc45462a3b0dfe69902cdd12971efec9 +++ /dev/null @@ -1 +0,0 @@ -{"address":"b1d3073bcc45462a3b0dfe69902cdd12971efec9","Crypto":{"cipher":"aes-128-ctr","ciphertext":"82877be41ac5baf6e85a666930aaf16fb4c5c854c637c5137cc5b908b2892f01","cipherparams":{"iv":"0ad236df3b198635b3c629c43c75844d"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"6d3394dd4bb8070ccd19273aee2ed258f876abf9c01b37b911f05c831b313c95"},"mac":"eb216974a40298cfca4d2c677364068a81a94c7f62fc44c29e5fc2200c3c3f3f"},"id":"885fd57f-3a07-42e0-8f05-85da3c46664d","version":3} \ No newline at end of file diff --git a/geth-pow-docker/files/password/password.txt b/geth-pow-docker/files/password/password.txt deleted file mode 100644 index 16f1929..0000000 --- a/geth-pow-docker/files/password/password.txt +++ /dev/null @@ -1 +0,0 @@ -hubalubadubu \ No newline at end of file diff --git a/geth-pow-docker/geth-node/Dockerfile b/geth-pow-docker/geth-node/Dockerfile new file mode 100644 index 0000000..6372f78 --- /dev/null +++ b/geth-pow-docker/geth-node/Dockerfile @@ -0,0 +1,10 @@ +FROM ethereum/client-go:stable + +WORKDIR /root + +COPY ./start.sh . +RUN chmod +x ./start.sh + +COPY ./genesis.json . + +ENTRYPOINT ./start.sh diff --git a/geth-pow-docker/geth-node/genesis.json b/geth-pow-docker/geth-node/genesis.json new file mode 100644 index 0000000..bbeb0c9 --- /dev/null +++ b/geth-pow-docker/geth-node/genesis.json @@ -0,0 +1,58 @@ +{ + "config": { + "chainId": 456719, + "homesteadBlock": 1, + "eip150Block": 2, + "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "eip155Block": 3, + "eip158Block": 3, + "byzantiumBlock": 4, + "constantinopleBlock": 5, + "petersburgBlock": 6, + "istanbulBlock": 7, + "berlinBlock": 8 + }, + "nonce": "0x0000000000000042", + "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x400", + "coinbase": "0x3333333333333333333333333333333333333333", + "timestamp": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x", + "gasLimit": "0x8000000", + "alloc": { + "0x3590aca93338b0721966a8d0c96ebf2c4c87c544": { + "balance": "20000000000000000000" + }, + "0x007ccffb7916f37f7aeef05e8096ecfbe55afc2f": { + "balance": "20000000000000000000" + }, + "0x99429f64cf4d5837620dcc293c1a537d58729b68": { + "balance": "20000000000000000000" + }, + "0xca247d7425a29c6645fa991f9151f994a830882d": { + "balance": "20000000000000000000" + }, + "0x794f74c8916310d6a0009bb8a43a5acab59a58ad": { + "balance": "20000000000000000000" + }, + "0x276ecb88715a503b00d1f15af4c17dc051991667": { + "balance": "20000000000000000000" + }, + "0x83042c0147acce98e35ed9ef52e6dfc5c67ef92e": { + "balance": "20000000000000000000" + }, + "0x8ab7114ba0f7ca706af69f799588766c8426aa24": { + "balance": "20000000000000000000" + }, + "0x932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f": { + "balance": "20000000000000000000" + }, + "0x893c3f80d2a0375b3f00f856cf8a6775e4efc26a": { + "balance": "20000000000000000000" + }, + "0xb1d3073bcc45462a3b0dfe69902cdd12971efec9": { + "balance": "20000000000000000000" + } + } +} diff --git a/geth-pow-docker/geth-node/start.sh b/geth-pow-docker/geth-node/start.sh new file mode 100644 index 0000000..9cb921a --- /dev/null +++ b/geth-pow-docker/geth-node/start.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +geth init /root/genesis.json + +sleep 3 +# Get IP of bootstrap node +BOOTSTRAP_IP=`getent hosts bootstrap-mining | cut -d" " -f1` +# Replace XXX for IP of bootstrap node +GETH_OPTS=${@/XXX/$BOOTSTRAP_IP} +geth $GETH_OPTS diff --git a/geth-pow-docker/monitor/app.json b/geth-pow-docker/monitor/app.json new file mode 100644 index 0000000..f5a852a --- /dev/null +++ b/geth-pow-docker/monitor/app.json @@ -0,0 +1,22 @@ +[ + { + "name": "node-app", + "script": "app.js", + "log_date_format": "YYYY-MM-DD HH:mm Z", + "merge_logs": false, + "watch": true, + "max_restarts": 10, + "exec_interpreter": "node", + "exec_mode": "fork_mode", + "env": { + "NODE_ENV": "production", + "RPC_HOST": "bootstrap-mining", + "RPC_PORT": "8545", + "LISTENING_PORT": "30303", + "INSTANCE_NAME": "XXX", + "WS_SERVER": "ws://dashboard:3000", + "WS_SECRET": "123", + "VERBOSITY": 3 + } + } +] diff --git a/geth-pow-docker/monitored-geth-client/Dockerfile b/geth-pow-docker/monitored-geth-client/Dockerfile deleted file mode 100644 index 6faad17..0000000 --- a/geth-pow-docker/monitored-geth-client/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM alpine:latest - -RUN apk add --update git go make gcc musl-dev linux-headers bash pwgen -RUN git clone --depth=1 https://github.com/ethereum/go-ethereum.git - -RUN \ - (cd go-ethereum && make geth && make swarm) && \ - cp go-ethereum/build/bin/geth /usr/local/bin/ && \ - cp go-ethereum/build/bin/swarm /usr/local/bin/ && \ - apk del git go make gcc musl-dev linux-headers && \ - rm -rf /go-ethereum && rm -rf /var/cache/apk/* - -RUN apk update &&\ - apk add git nodejs-npm bash perl - -RUN cd /root &&\ - git clone --depth=1 https://github.com/cubedro/eth-net-intelligence-api &&\ - cd eth-net-intelligence-api &&\ - npm install &&\ - npm install -g pm2 - -COPY start.sh /root/start.sh -COPY app.json /root/eth-net-intelligence-api/app.json -RUN chmod +x /root/start.sh - -# copy existing BC state to the nodes, so swarm ENS address is always the same -COPY devchain /root/.ethereum/devchain diff --git a/geth-pow-docker/monitored-geth-client/app.json b/geth-pow-docker/monitored-geth-client/app.json deleted file mode 100644 index b4a8fe5..0000000 --- a/geth-pow-docker/monitored-geth-client/app.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "name" : "XXX", - "script" : "app.js", - "log_date_format" : "YYYY-MM-DD HH:mm Z", - "merge_logs" : false, - "watch" : true, - "max_restarts" : 10, - "exec_interpreter" : "node", - "exec_mode" : "fork_mode", - "env": { - "NODE_ENV" : "production", - "RPC_HOST" : "geth_mining", - "RPC_PORT" : "8545", - "LISTENING_PORT" : "30303", - "INSTANCE_NAME" : "XXX", - "WS_SERVER" : "ws://dashboard:3000", - "WS_SECRET" : "eth-net-stats-secret", - "VERBOSITY" : 3 - } - } -] diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/LOCK b/geth-pow-docker/monitored-geth-client/devchain/geth/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/000002.ldb b/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/000002.ldb deleted file mode 100644 index c17d275..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/000002.ldb and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/000003.log b/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/000003.log deleted file mode 100644 index 0ca9bb1..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/000003.log and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/CURRENT b/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/CURRENT deleted file mode 100644 index cacca75..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000004 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/LOCK b/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/LOG b/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/LOG deleted file mode 100644 index 1d9e88d..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/LOG +++ /dev/null @@ -1,16 +0,0 @@ -=============== Oct 4, 2017 (UTC) =============== -11:09:16.465866 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed -11:09:16.473626 db@open opening -11:09:16.474313 version@stat F·[] S·0B[] Sc·[] -11:09:16.475405 db@janitor F·2 G·0 -11:09:16.475425 db@open done T·1.780209ms -=============== Oct 4, 2017 (UTC) =============== -11:09:19.535511 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed -11:09:19.535634 version@stat F·[] S·0B[] Sc·[] -11:09:19.535673 db@open opening -11:09:19.535713 journal@recovery F·1 -11:09:19.536573 journal@recovery recovering @1 -11:09:19.544378 memdb@flush created L0@2 N·31 S·1KiB "\x11\xaf\xe6..\x1f\x00\xe9,v12":"\xe5\xfc\xfe..\x93\xb2\xed,v14" -11:09:19.545196 version@stat F·[1] S·1KiB[1KiB] Sc·[0.25] -11:09:19.547360 db@janitor F·3 G·0 -11:09:19.547390 db@open done T·11.709205ms diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/MANIFEST-000004 b/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/MANIFEST-000004 deleted file mode 100644 index d604ad1..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/chaindata/MANIFEST-000004 and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/000001.log b/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/000001.log deleted file mode 100644 index 4b59762..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/000001.log and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/CURRENT b/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/CURRENT deleted file mode 100644 index feda7d6..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000000 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/LOCK b/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/LOG b/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/LOG deleted file mode 100644 index b1dfaa9..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/LOG +++ /dev/null @@ -1,6 +0,0 @@ -=============== Oct 4, 2017 (UTC) =============== -11:09:16.476233 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed -11:09:16.478040 db@open opening -11:09:16.479450 version@stat F·[] S·0B[] Sc·[] -11:09:16.480420 db@janitor F·2 G·0 -11:09:16.480437 db@open done T·2.387376ms diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/MANIFEST-000000 b/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/MANIFEST-000000 deleted file mode 100644 index 9d54f67..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/lightchaindata/MANIFEST-000000 and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/000002.log b/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/000002.log deleted file mode 100644 index a68f013..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/000002.log and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/000003.ldb b/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/000003.ldb deleted file mode 100644 index af229d1..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/000003.ldb and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/CURRENT b/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/CURRENT deleted file mode 100644 index feda7d6..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000000 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/LOCK b/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/LOG b/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/LOG deleted file mode 100644 index d9e860c..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/LOG +++ /dev/null @@ -1,11 +0,0 @@ -=============== Oct 4, 2017 (UTC) =============== -11:09:21.653731 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed -11:09:21.661882 db@open opening -11:09:21.665246 version@stat F·[] S·0B[] Sc·[] -11:09:21.666446 db@janitor F·2 G·0 -11:09:21.666490 db@open done T·4.594136ms -11:23:25.859298 memdb@flush N·42139 S·3MiB -11:23:25.899226 memdb@flush created L0@3 N·42139 S·1MiB "n:\x00..ver,v26036":"version,v1" -11:23:25.900274 version@stat F·[1] S·1MiB[1MiB] Sc·[0.25] -11:23:25.902607 memdb@flush committed F·1 T·42.137663ms -11:23:25.903014 journal@remove removed @1 diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/MANIFEST-000000 b/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/MANIFEST-000000 deleted file mode 100644 index 1ab5aaf..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/nodes/MANIFEST-000000 and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth/transactions.rlp b/geth-pow-docker/monitored-geth-client/devchain/geth/transactions.rlp deleted file mode 100755 index 0b3ccae..0000000 Binary files a/geth-pow-docker/monitored-geth-client/devchain/geth/transactions.rlp and /dev/null differ diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-44.914646739Z--99429f64cf4d5837620dcc293c1a537d58729b68 b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-44.914646739Z--99429f64cf4d5837620dcc293c1a537d58729b68 deleted file mode 100644 index 5ac9dcb..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-44.914646739Z--99429f64cf4d5837620dcc293c1a537d58729b68 +++ /dev/null @@ -1 +0,0 @@ -{"address":"99429f64cf4d5837620dcc293c1a537d58729b68","Crypto":{"cipher":"aes-128-ctr","ciphertext":"335f5ae16a995fa6ee77a0c6b0543fad332860c6711abac8fd539ddc18ac0eb6","cipherparams":{"iv":"ed7e663329ca8ec06992a6a946124a21"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"bf03fa013f3a5129441d70a8b8329f86aa5f24f36b97f684067c14a5d16d2843"},"mac":"c71ad21fdb9947be1169cf50a04c6ac9a3c8e49d617d0f1f99c42371f1d739c3"},"id":"1e6f5cfb-998b-4a89-85ac-e7b17359657e","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-46.400585045Z--ca247d7425a29c6645fa991f9151f994a830882d b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-46.400585045Z--ca247d7425a29c6645fa991f9151f994a830882d deleted file mode 100644 index ed45054..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-46.400585045Z--ca247d7425a29c6645fa991f9151f994a830882d +++ /dev/null @@ -1 +0,0 @@ -{"address":"ca247d7425a29c6645fa991f9151f994a830882d","Crypto":{"cipher":"aes-128-ctr","ciphertext":"507d95f8c71bac82e38ac3eadaae8a75a1047a006a3b86b01e11fd86ddb8868b","cipherparams":{"iv":"33a8a75337bc5f0a82773bca39288d70"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"3610909466cb668444af20e063a6dc466c18a215884666cbe49fc13f7145a44b"},"mac":"46803c752ad92155a2660aa018e2d7ebb979ae94f7b5c59afb5baca2abfc5594"},"id":"4ee27016-eb9e-46a5-86a5-8689b2855b14","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-47.838345060Z--794f74c8916310d6a0009bb8a43a5acab59a58ad b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-47.838345060Z--794f74c8916310d6a0009bb8a43a5acab59a58ad deleted file mode 100644 index b40c083..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-47.838345060Z--794f74c8916310d6a0009bb8a43a5acab59a58ad +++ /dev/null @@ -1 +0,0 @@ -{"address":"794f74c8916310d6a0009bb8a43a5acab59a58ad","Crypto":{"cipher":"aes-128-ctr","ciphertext":"38eb242cc1146829ca1857d21b9490a49e872223b8b6242fe111ad6a23cc1859","cipherparams":{"iv":"aef1cf480b73714d6dc2050df5c29a55"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"21c6dd11c2196cd6ad18f9dfc3d65e4621fb59ae4ac17905f3e0541d84dbc9c5"},"mac":"ea633193668c12df21e18f99ea1f6a015c07614d98950fd8c0f083e8e1d82a0a"},"id":"113165af-bf7b-45b3-b467-fd7eab5a5224","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-49.151752132Z--276ecb88715a503b00d1f15af4c17dc051991667 b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-49.151752132Z--276ecb88715a503b00d1f15af4c17dc051991667 deleted file mode 100644 index 2dd1ac4..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-49.151752132Z--276ecb88715a503b00d1f15af4c17dc051991667 +++ /dev/null @@ -1 +0,0 @@ -{"address":"276ecb88715a503b00d1f15af4c17dc051991667","Crypto":{"cipher":"aes-128-ctr","ciphertext":"ad828d3ded808a62e523b2b487173474c6d73e1b6b9a47727bbff1848eebcc21","cipherparams":{"iv":"86e30a073376d28535eedab7cd5b7526"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"48e65dd40a9c763a8d6591f0c62765112e27f81ffbbd2cd95312bf7350463f73"},"mac":"4a437326562841c859de122979004577afd5fbeb59c0c7cf5f26e2b768f7db33"},"id":"ee231f16-afef-4406-b0a3-0371449c5a73","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-50.513483270Z--83042c0147acce98e35ed9ef52e6dfc5c67ef92e b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-50.513483270Z--83042c0147acce98e35ed9ef52e6dfc5c67ef92e deleted file mode 100644 index c61fafd..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-50.513483270Z--83042c0147acce98e35ed9ef52e6dfc5c67ef92e +++ /dev/null @@ -1 +0,0 @@ -{"address":"83042c0147acce98e35ed9ef52e6dfc5c67ef92e","Crypto":{"cipher":"aes-128-ctr","ciphertext":"ae386ac1c250971ecdf1108a616b04fd0d7d773a35480fc6813b8718764827e8","cipherparams":{"iv":"aa36db6e050c18676bac99431b3693ee"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"af4b3c0480a35a062e3097b7efe081cffac8353fc0666a3df3c79a3c3aa70330"},"mac":"56509728b085aa52e3a693eddaa4c620f959687103e312120d7f651aceb12426"},"id":"3e9936cc-0fe4-4774-9d67-e278ae445cab","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-51.693207415Z--8ab7114ba0f7ca706af69f799588766c8426aa24 b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-51.693207415Z--8ab7114ba0f7ca706af69f799588766c8426aa24 deleted file mode 100644 index b068132..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-51.693207415Z--8ab7114ba0f7ca706af69f799588766c8426aa24 +++ /dev/null @@ -1 +0,0 @@ -{"address":"8ab7114ba0f7ca706af69f799588766c8426aa24","Crypto":{"cipher":"aes-128-ctr","ciphertext":"c098e1e374eb0c96af66a2394b6e401a34bd1883f39c5d38547e5c06e014dfab","cipherparams":{"iv":"e4c4a7948d9c819de97c077b9485f969"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"e4d9cdd321e91d12f247b1effada3c8e41a44c1d62cf320d8cacec3dcd1b7792"},"mac":"188fc24a8102b8accf65c05990d14b5f3bd587870ff018ec0284b06d921f7878"},"id":"3e2c44e9-3477-4da6-a856-66b55c155df5","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-53.093803426Z--932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-53.093803426Z--932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f deleted file mode 100644 index b23f430..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-53.093803426Z--932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f +++ /dev/null @@ -1 +0,0 @@ -{"address":"932d9e95e5d2cac02eebbe6763ab2c7b0a9d6a2f","Crypto":{"cipher":"aes-128-ctr","ciphertext":"dea16b63ebc5fc2813292b46e6b1c204bfda384d0096a3ece9fe17f82e30e4aa","cipherparams":{"iv":"6b27678367f0760cc33046f445b3e9df"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"781667c20eb364ac5f253f9c8484ad8626b0c4a5b42958907142e0944a9f0b70"},"mac":"1a1cb0ae6d3c38255eeef22d7cf0c7b4667fa3ef282f95160c814f9efe17cc86"},"id":"50f7c038-d9f3-42e6-bf52-24ea8ef1b550","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-54.549724060Z--893c3f80d2a0375b3f00f856cf8a6775e4efc26a b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-54.549724060Z--893c3f80d2a0375b3f00f856cf8a6775e4efc26a deleted file mode 100644 index 11cb027..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-54.549724060Z--893c3f80d2a0375b3f00f856cf8a6775e4efc26a +++ /dev/null @@ -1 +0,0 @@ -{"address":"893c3f80d2a0375b3f00f856cf8a6775e4efc26a","Crypto":{"cipher":"aes-128-ctr","ciphertext":"e822c7d65188a4a34b33a6b39ad929543131255584f7a967229d85f5bda05973","cipherparams":{"iv":"0604cbe66fe8a06107f8c2058ba56f9a"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"48982da8b602d6d8606150e5d8de7526b46658dafce1c034281da3b477e9519d"},"mac":"4d79541dcaffd88b058ac53c0142dd464b9b62af86e9efa4779289a42d6b7ca6"},"id":"2cb29581-8f6a-4cbb-b7c8-5046dc4327d4","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-55.760047216Z--b1d3073bcc45462a3b0dfe69902cdd12971efec9 b/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-55.760047216Z--b1d3073bcc45462a3b0dfe69902cdd12971efec9 deleted file mode 100644 index ed308d0..0000000 --- a/geth-pow-docker/monitored-geth-client/devchain/keystore/UTC--2016-02-29T14-52-55.760047216Z--b1d3073bcc45462a3b0dfe69902cdd12971efec9 +++ /dev/null @@ -1 +0,0 @@ -{"address":"b1d3073bcc45462a3b0dfe69902cdd12971efec9","Crypto":{"cipher":"aes-128-ctr","ciphertext":"82877be41ac5baf6e85a666930aaf16fb4c5c854c637c5137cc5b908b2892f01","cipherparams":{"iv":"0ad236df3b198635b3c629c43c75844d"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"6d3394dd4bb8070ccd19273aee2ed258f876abf9c01b37b911f05c831b313c95"},"mac":"eb216974a40298cfca4d2c677364068a81a94c7f62fc44c29e5fc2200c3c3f3f"},"id":"885fd57f-3a07-42e0-8f05-85da3c46664d","version":3} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/start.sh b/geth-pow-docker/monitored-geth-client/start.sh deleted file mode 100644 index be0679a..0000000 --- a/geth-pow-docker/monitored-geth-client/start.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -set -e -cd /root/eth-net-intelligence-api - -perl -pi -e "s/XXX/$(hostname)/g" app.json - -/usr/bin/pm2 start ./app.json - -sleep 3 - -# geth --datadir=~/.ethereum/devchain init "/root/files/genesis.json" - -# sleep 3 - -BOOTSTRAP_IP=`getent hosts bootstrap | cut -d" " -f1` -GETH_OPTS=${@/XXX/$BOOTSTRAP_IP} - -nohup geth $GETH_OPTS - -sleep 3 - -echo "GETH started" - -DATADIR="/root/.ethereum/devchain" -KEYS=`geth account list --datadir $DATADIR | sed "s/.*{\(.*\)}.*/\1/1"` -BZZKEY=$(echo $KEYS| cut -d' ' -f 1) - -sleep 3 - -swarm --bzzaccount $BZZKEY \ - --datadir $DATADIR \ - --bzznetworkid 456719 \ - --keystore $DATADIR/keystore \ - --ens-api $DATADIR/geth.ipc \ - --httpaddr "0.0.0.0" \ - --bootnodes "enode://288b97262895b1c7ec61cf314c2e2004407d0a5dc77566877aad1f2a36659c8b698f4b56fd06c4a0c0bf007b4cfb3e7122d907da3b005fa90e724441902eb19e@$BOOTSTRAP_IP:30303" \ - < <(echo "") diff --git a/geth-pow-docker/monitored-geth-client/ws_secret.json b/geth-pow-docker/monitored-geth-client/ws_secret.json deleted file mode 100644 index 5613bd8..0000000 --- a/geth-pow-docker/monitored-geth-client/ws_secret.json +++ /dev/null @@ -1 +0,0 @@ -["eth-net-stats-secret"] diff --git a/ipfs-docker/.env.example b/ipfs-docker/.env.example new file mode 100644 index 0000000..e3275f5 --- /dev/null +++ b/ipfs-docker/.env.example @@ -0,0 +1,2 @@ +CLUSTER_SECRET=217587c646681ad0bf0f7406f928cac734724441ab32b45224857f4f3524c47d +# Copy this file to .env or export cluster secret via `export CLUSTER_SECRET=$(od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n')` diff --git a/ipfs-docker/.gitignore b/ipfs-docker/.gitignore new file mode 100644 index 0000000..3af0ccb --- /dev/null +++ b/ipfs-docker/.gitignore @@ -0,0 +1 @@ +/data diff --git a/ipfs-docker/Makefile b/ipfs-docker/Makefile new file mode 100644 index 0000000..0cb402d --- /dev/null +++ b/ipfs-docker/Makefile @@ -0,0 +1,30 @@ +.PHONY: build build-no-cache clean clean-data logs reset restart start start-attached stop + +build: + docker-compose build + +build-no-cache: + docker-compose build --no-cache + +clean: clean-data + docker-compose down --rmi all --volumes --remove-orphans + +clean-data: + rm -rf ./data + +logs: + docker-compose logs -f + +reset: stop clean + docker-compose up -d --build --force-recreate --remove-orphans + +restart: stop start + +start: + docker-compose up -d --remove-orphans + +start-attached: + docker-compose up --remove-orphans + +stop: + docker-compose down --volumes --remove-orphans diff --git a/ipfs-docker/README.md b/ipfs-docker/README.md new file mode 100644 index 0000000..d822b44 --- /dev/null +++ b/ipfs-docker/README.md @@ -0,0 +1,49 @@ +# Local IPFS network + +A set of Docker images to create a local dockerized IPFS network including three IPFS peers and three corresponding IPFS clusters. + +The testnet consists of the following parts: + +- 3 IPFS peers +- 3 IPFS clusters + +By default, IPFS and IPFS cluster have the following ports: + +**IPFS:** + +- 4001: ipfs swarm +- 5001: ipfs api +- 8080: ipfs gateway + +**IPFS cluster:** + +- 9094: http api endpoint +- 9095: ipfs cluster proxy endpoint +- 9096: cluster swarm + +**peer0** and **cluster0** have just mentioned ports exposed. E.g. list cluster nodes via `curl http://localhost:9094/peers`. Otherwise use **ipfs-cluster-ctl** to access cluster REST API. + +Cluster REST API specification can be found [here](https://cluster.ipfs.io/documentation/reference/api/) + +## Quick start + +Setting up this network requires you to install Docker and Docker Compose. Clone the repository, and use Makefile commands from this directory. + +``` +# Set up cluster secret +cp ./.env.example ./.env +# Or +export CLUSTER_SECRET=$(od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n') + +# Start the network +$ make start +# Stop the network +$ make stop +# Clean environments +$ make clean +``` + +## References + +- https://labs.eleks.com/2019/03/ipfs-network-data-replication.html +- https://medium.com/rahasak/ipfs-cluster-with-docker-db2ec20a6cc1 diff --git a/ipfs-docker/docker-compose.yml b/ipfs-docker/docker-compose.yml new file mode 100644 index 0000000..7dd84dc --- /dev/null +++ b/ipfs-docker/docker-compose.yml @@ -0,0 +1,103 @@ +# This is an example docker-compose file to quickly test an IPFS Cluster +# with multiple peers on a contained environment. + +# It runs 3 cluster peers (cluster0, cluster1...) attached to go-ipfs daemons +# (ipfs0, ipfs1...) using the CRDT consensus component. Cluster peers +# autodiscover themselves using mDNS on the docker internal network. +# +# To interact with the cluster use "ipfs-cluster-ctl" (the cluster0 API port is +# exposed to the locahost. You can also "docker exec -ti cluster0 sh" and run +# it from the container. "ipfs-cluster-ctl peers ls" should show all 3 peers a few +# seconds after start. +# +# For persistance, a "data" folder is created and used to store configurations +# and states. This can be used to edit configurations in subsequent runs. It looks +# as follows: +# +# data/ +# |-- cluster0 +# |-- cluster1 +# |-- ... +# |-- ipfs0 +# |-- ipfs1 +# |-- ... +# +# During the first start, default configurations are created for all peers. +version: "3" + +services: + # cluster peer0 + ipfs0: + container_name: ipfs0 + image: ipfs/go-ipfs:latest + ports: + - "4001:4001" # ipfs swarm - communication with other nodes - expose if needed/wanted + - "5001:5001" # ipfs api - api server - expose if needed/wanted + - "8080:8080" # ipfs gateway - gateway server - expose if needed/wanted + volumes: + - ./data/ipfs0:/data/ipfs + + cluster0: + container_name: cluster0 + image: ipfs/ipfs-cluster:latest + depends_on: + - ipfs0 + environment: + CLUSTER_PEERNAME: cluster0 + CLUSTER_SECRET: ${CLUSTER_SECRET} # From shell variable if set, export CLUSTER_SECRET=$(od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n') + CLUSTER_IPFSHTTP_NODEMULTIADDRESS: /dns4/ipfs0/tcp/5001 + CLUSTER_CRDT_TRUSTEDPEERS: "*" # Trust all peers in Cluster + CLUSTER_RESTAPI_HTTPLISTENMULTIADDRESS: /ip4/0.0.0.0/tcp/9094 # Expose API + CLUSTER_MONITORPINGINTERVAL: 2s # Speed up peer discovery + ports: + # Open API port - http api endpoint - allows usage of ipfs-cluster-ctl or direct access to ipfs cluster exposed rest api + - "127.0.0.1:9094:9094" + # - "9095:9095" # ipfs proxy endpoint + # The cluster swarm port would need to be exposed if this container + # was to connect to cluster peers on other hosts. + # But this is just a testing cluster. + # - "9096:9096" # cluster swarm endpoint used for communication between cluster nodes + volumes: + - ./data/cluster0:/data/ipfs-cluster + + # cluster peer1 + ipfs1: + container_name: ipfs1 + image: ipfs/go-ipfs:latest + volumes: + - ./data/ipfs1:/data/ipfs + + cluster1: + container_name: cluster1 + image: ipfs/ipfs-cluster:latest + depends_on: + - ipfs1 + environment: + CLUSTER_PEERNAME: cluster1 + CLUSTER_SECRET: ${CLUSTER_SECRET} + CLUSTER_IPFSHTTP_NODEMULTIADDRESS: /dns4/ipfs1/tcp/5001 + CLUSTER_CRDT_TRUSTEDPEERS: "*" + CLUSTER_MONITORPINGINTERVAL: 2s + volumes: + - ./data/cluster1:/data/ipfs-cluster + + # cluster peer2 + ipfs2: + container_name: ipfs2 + image: ipfs/go-ipfs:latest + volumes: + - ./data/ipfs2:/data/ipfs + + cluster2: + container_name: cluster2 + image: ipfs/ipfs-cluster:latest + depends_on: + - ipfs2 + environment: + CLUSTER_PEERNAME: cluster2 + CLUSTER_SECRET: ${CLUSTER_SECRET} + CLUSTER_IPFSHTTP_NODEMULTIADDRESS: /dns4/ipfs2/tcp/5001 + CLUSTER_CRDT_TRUSTEDPEERS: "*" + CLUSTER_MONITORPINGINTERVAL: 2s + volumes: + - ./data/cluster2:/data/ipfs-cluster diff --git a/openethereum-docker/Makefile b/openethereum-docker/Makefile new file mode 100644 index 0000000..c5c1342 --- /dev/null +++ b/openethereum-docker/Makefile @@ -0,0 +1,27 @@ +.PHONY: build build-no-cache clean logs reset restart start start-attached stop + +build: + docker-compose build + +build-no-cache: + docker-compose build --no-cache + +clean: + docker-compose down --rmi all --volumes --remove-orphans + +logs: + docker-compose logs -f + +reset: stop clean + docker-compose up -d --build --force-recreate --remove-orphans + +restart: stop start + +start: + docker-compose up -d --remove-orphans + +start-attached: + docker-compose up --remove-orphans + +stop: + docker-compose down --volumes --remove-orphans diff --git a/openethereum-docker/README.md b/openethereum-docker/README.md new file mode 100644 index 0000000..337b866 --- /dev/null +++ b/openethereum-docker/README.md @@ -0,0 +1,46 @@ +# Open-Ethereum development chain + +A set of Docker images to create a local containerized development chain for developing and testing Ethereum dApps with Open-Ethereum. + +``` +docker run -ti -p 8545:8545 -p 8546:8546 -p 30303:30303 -p 30303:30303/udp openethereum/openethereum:latest --config dev --jsonrpc-interface all --reseal-min-period 0 --gas-price-percentile 0 +``` + +The environment consists of the following parts: + +- 1 dev node +- 1 explorer +- 1 monitor and corresponding dashboard + +# Quick start + +Setting up this development environment requires you to install Docker and Docker Compose. Clone the repository, run `docker-compose up` or use Makefile commands from this directory. + +``` +# Start the network +$ make start +# Stop the network +$ make stop +``` + +This setup uses the Open-Ethereum built-in `dev` mode/chain, i.e the development environment is set up with a instant seal consensus engine. The created chain is initialized with an address that contains Ether: `0x00a329c0648769a73afac7f9381e08fb43dbea72`. Its private key is `0x4d5db4107d237df6a3d58ee5f70ae63d73d7658d4026f2eefd2f204c81682cb7`. + +Query the balance of the account via + +``` +$ curl -X POST localhost:8545 \ + -H "Content-Type: application/json" \ + --data \ + ' + { + "jsonrpc": "2.0", + "method": "eth_getBalance", + "params": ["0x00a329c0648769a73afac7f9381e08fb43dbea72", "latest"], + "id": 1 + } + ' + +> {"jsonrpc":"2.0","result":"0x100000000000000000000000000000000000000000000000000","id":1} +``` + +Open-Ethereum available chain presets are: dev, mining, non-standard-ports, insecure, dev-insecure... diff --git a/openethereum-docker/dashboard/ws_secret.json b/openethereum-docker/dashboard/ws_secret.json new file mode 100644 index 0000000..cfa6d1a --- /dev/null +++ b/openethereum-docker/dashboard/ws_secret.json @@ -0,0 +1 @@ +["123"] diff --git a/openethereum-docker/docker-compose.yml b/openethereum-docker/docker-compose.yml new file mode 100644 index 0000000..ed01abd --- /dev/null +++ b/openethereum-docker/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3" + +services: + dev-chain: + image: openethereum/openethereum:latest + hostname: dev-chain + container_name: dev-chain + command: --config dev + --jsonrpc-interface all + --reseal-min-period 0 + --gas-price-percentile 0 + ports: + - 8545:8545 + - 8546:8546 + - 30303:30303 + - 30303:30303/udp + + lite-explorer: + hostname: lite-explorer + depends_on: + - dev-chain + image: alethio/ethereum-lite-explorer + container_name: lite-explorer + environment: + - APP_NODE_URL=http://localhost:8545 + ports: + - 8800:80 + + monitor: + image: buythewhale/ethstats_monitor + hostname: monitor + container_name: monitor + volumes: + - ./monitor/app.json:/home/ethnetintel/eth-net-intelligence-api/app.json:ro + + dashboard: + image: buythewhale/ethstats + hostname: dashboard + container_name: dashboard + volumes: + - ./dashboard/ws_secret.json:/eth-netstats/ws_secret.json:ro + ports: + - 3000:3000 diff --git a/openethereum-docker/monitor/app.json b/openethereum-docker/monitor/app.json new file mode 100644 index 0000000..b27e403 --- /dev/null +++ b/openethereum-docker/monitor/app.json @@ -0,0 +1,22 @@ +[ + { + "name": "node-app", + "script": "app.js", + "log_date_format": "YYYY-MM-DD HH:mm Z", + "merge_logs": false, + "watch": true, + "max_restarts": 10, + "exec_interpreter": "node", + "exec_mode": "fork_mode", + "env": { + "NODE_ENV": "production", + "RPC_HOST": "dev-chain", + "RPC_PORT": "8545", + "LISTENING_PORT": "30303", + "INSTANCE_NAME": "dev-chain", + "WS_SERVER": "ws://dashboard:3000", + "WS_SECRET": "123", + "VERBOSITY": 3 + } + } +] diff --git a/package-lock.json b/package-lock.json index ff4658d..a2affa5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,293 +4,621 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@commitlint/cli": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-7.5.2.tgz", - "integrity": "sha512-UQdW/wNb+XeANoYYLyuKEDIfWKSzdhJkPQZ8ie/IjfMNnsP+B23bkX4Ati+6U8zgz0yyngoxWl+3lfExiIL4hQ==", + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@commitlint/format": "^7.5.0", - "@commitlint/lint": "^7.5.2", - "@commitlint/load": "^7.5.0", - "@commitlint/read": "^7.5.0", - "babel-polyfill": "6.26.0", - "chalk": "2.3.1", - "get-stdin": "5.0.1", - "lodash": "4.17.11", - "meow": "5.0.0", - "resolve-from": "4.0.0", - "resolve-global": "0.1.0" + "@babel/highlight": "^7.12.13" } }, - "@commitlint/config-conventional": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-7.5.0.tgz", - "integrity": "sha512-odLgBfQ5xntFAmMfAmDY2C4EWhW+cSTbvbsRS7seb55DCa3IaxxSHHC9eXrR+hN/BdUT5vqAxdX1PkR996sq9Q==", + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, - "@commitlint/ensure": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-7.5.2.tgz", - "integrity": "sha512-ZMJKHhSJC789chKy0kWp8EWbCpLPy6vKa+fopUVx+tWL7H8AeBbibXlqAnybg+HWNcb/RD7ORROx0IsgrK4IYA==", + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "requires": { - "lodash": "4.17.11" + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, - "@commitlint/execute-rule": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-7.5.0.tgz", - "integrity": "sha512-K66aoly8mxSHmBA/Y8bKSPPcCAR4GpJEsvHaLDYOG7GsyChu8NgCD53L8GUqPW8lBCWwnmCiSL+RlOkNHJ0Gag==", + "@commitlint/cli": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.1.tgz", + "integrity": "sha512-SB67/s6VJ50seoPx/Sr2gj1fMzKrx+udgarecGdr8h43ah+M2e22gjQJ7xHv5KwyPQ+6ug1YOMCL34ubT4zupQ==", + "dev": true, + "requires": { + "@commitlint/format": "^12.1.1", + "@commitlint/lint": "^12.1.1", + "@commitlint/load": "^12.1.1", + "@commitlint/read": "^12.1.1", + "@commitlint/types": "^12.1.1", + "get-stdin": "8.0.0", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "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.4" + } + }, + "color-name": { + "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 + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "@commitlint/config-conventional": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.1.tgz", + "integrity": "sha512-15CqbXMsQiEb0qbzjEHe2OkzaXPYSp7RxaS6KoSVk/4W0QiigquavQ+M0huBZze92h0lMS6Pxoq4AJ5CQ3D+iQ==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "conventional-changelog-conventionalcommits": "^4.3.1" } }, + "@commitlint/ensure": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.1.tgz", + "integrity": "sha512-XEUQvUjzBVQM7Uv8vYz+c7PDukFvx0AvQEyX/V+PaTkCK/xPvexu7FLbFwvypjSt9BPMf+T/rhB1hVmldkd6lw==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.1", + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "@commitlint/execute-rule": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.1.tgz", + "integrity": "sha512-6mplMGvLCKF5LieL7BRhydpg32tm6LICnWQADrWU4S5g9PKi2utNvhiaiuNPoHUXr29RdbNaGNcyyPv8DSjJsQ==", + "dev": true + }, "@commitlint/format": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-7.5.0.tgz", - "integrity": "sha512-DEeQXfTLUm9kARliCBfw3SlQRAYjK2aXeRAUMs1HPhLA2tjNFFGv6LOpFFNdiu/WV+o1ojcgIvBBjpHaVT+Tvw==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-12.1.1.tgz", + "integrity": "sha512-bTAoOryTFLqls17JTaRwk2WDVOP0NwuG4F/JPK8RaF6DMZNVQTfajkgTxFENNZRnESfau1BvivvEXfUAW2ZsvA==", "dev": true, "requires": { - "babel-runtime": "^6.23.0", - "chalk": "^2.0.1" + "@commitlint/types": "^12.1.1", + "chalk": "^4.0.0" } }, "@commitlint/is-ignored": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-7.5.1.tgz", - "integrity": "sha512-8JZCgy6bWSnjOT5cTTiyEAGp+Y4+5CUknhVbyiPxTRbjy6yF0aMKs1gMTfHrNHTKsasgmkCyPQd4C2eOPceuKA==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.1.tgz", + "integrity": "sha512-Sn4fsnWX+wLAJOD/UZeoVruB98te1TyPYRiDEq0MhRJAQIrP+7jE/O3/ass68AAMq00HvH3OK9kt4UBXggcGjA==", "dev": true, "requires": { - "semver": "5.6.0" + "@commitlint/types": "^12.1.1", + "semver": "7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@commitlint/lint": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-7.5.2.tgz", - "integrity": "sha512-DY/UfGFDquMno+5c6+tE50rMxpjdQK3CRG+nktgYlVz1UAqeUD+bRc3pvX5HwAsuGvyDrWAjtszHtEDeYJKcjw==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.1.tgz", + "integrity": "sha512-FFFPpku/E0svL1jaUVqosuZJDDWiNWYBlUw5ZEljh3MwWRcoaWtMIX5bseX+IvHpFZsCTAiBs1kCgNulCi0UvA==", "dev": true, "requires": { - "@commitlint/is-ignored": "^7.5.1", - "@commitlint/parse": "^7.5.0", - "@commitlint/rules": "^7.5.2", - "babel-runtime": "^6.23.0", - "lodash": "4.17.11" + "@commitlint/is-ignored": "^12.1.1", + "@commitlint/parse": "^12.1.1", + "@commitlint/rules": "^12.1.1", + "@commitlint/types": "^12.1.1" } }, "@commitlint/load": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-7.5.0.tgz", - "integrity": "sha512-fhBER/rzPsteM6zq5qqMiOi+A2bHKCE/0PKmOzYgaqTKcG9c1SsOle9phPemW85to8Gxd2YgUOVLsZkCMltLtA==", - "dev": true, - "requires": { - "@commitlint/execute-rule": "^7.5.0", - "@commitlint/resolve-extends": "^7.5.0", - "babel-runtime": "^6.23.0", - "cosmiconfig": "^4.0.0", - "lodash": "4.17.11", - "resolve-from": "^4.0.0" + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-12.1.1.tgz", + "integrity": "sha512-qOQtgNdJRULUQWP9jkpTwhj7aEtnqUtqeUpbQ9rjS+GIUST65HZbteNUX4S0mAEGPWqy2aK5xGd73cUfFSvuuw==", + "dev": true, + "requires": { + "@commitlint/execute-rule": "^12.1.1", + "@commitlint/resolve-extends": "^12.1.1", + "@commitlint/types": "^12.1.1", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "@commitlint/message": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-7.5.0.tgz", - "integrity": "sha512-5YOhsqy/MgHH7vyDsmmzO6Jr3ygr1pXbCm9NR3XB51wjg55Kd6/6dVlkhS/FmDp99pfwTdHb0TyeDFEjP98waw==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-12.1.1.tgz", + "integrity": "sha512-RakDSLAiOligXjhbLahV8HowF4K75pZIcs0+Ii9Q8Gz5H3DWf1Ngit7alFTWfcbf/+DTjSzVPov5HiwQZPIBUg==", "dev": true }, "@commitlint/parse": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-7.5.0.tgz", - "integrity": "sha512-hWASM8SBFTBtlFkKrEtD1qW6yTe2BsfoRiMKuYyRCTd+739TUF17og5vgQVuWttbGP0gXaciW44NygS2YjZmfA==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.1.tgz", + "integrity": "sha512-nuljIvAbBDr93DgL0wCArftEIhjSghawAwhvrKNV9FFcqAJqfVqitwMxJrNDCQ5pgUMCSKULLOEv+dA0bLlTEQ==", "dev": true, "requires": { - "conventional-changelog-angular": "^1.3.3", - "conventional-commits-parser": "^2.1.0", - "lodash": "^4.17.11" + "@commitlint/types": "^12.1.1", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.0.0" } }, "@commitlint/read": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-7.5.0.tgz", - "integrity": "sha512-uqGFCKZGnBUCTkxoCCJp4MfWUkegXkyT0T0RVM9diyG6uNWPWlMH1509sjLFlyeJKG+cSyYGG/d6T103ScMb4Q==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-12.1.1.tgz", + "integrity": "sha512-1k0CQEoZIdixvmqZRKEcWdj2XiKS7SlizEOJ1SE99Qui5d5FlBey8eaooTGgmpR6zObpIHJehtEPzM3VzUT3qA==", "dev": true, "requires": { - "@commitlint/top-level": "^7.5.0", - "@marionebl/sander": "^0.6.0", - "babel-runtime": "^6.23.0", - "git-raw-commits": "^1.3.0" + "@commitlint/top-level": "^12.1.1", + "@commitlint/types": "^12.1.1", + "fs-extra": "^9.0.0", + "git-raw-commits": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } } }, "@commitlint/resolve-extends": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-7.5.0.tgz", - "integrity": "sha512-FRIyPuqGvGa03OT4VgOHakizcw8YR5rdm77JsZff1rSnpxk6i+025I6qMeHqCIr5FaVIA0kR3FlC+MJFUs165A==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.1.tgz", + "integrity": "sha512-/DXRt0S0U3o9lq5cc8OL1Lkx0IjW0HcDWjUkUXshAajBIKBYSJB8x/loNCi1krNEJ8SwLXUEFt5OLxNO6wE9yQ==", "dev": true, "requires": { - "babel-runtime": "6.26.0", "import-fresh": "^3.0.0", - "lodash": "4.17.11", - "resolve-from": "^4.0.0", - "resolve-global": "^0.1.0" + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "@commitlint/rules": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-7.5.2.tgz", - "integrity": "sha512-eDN1UFPcBOjdnlI3syuo7y99SjGH/dUV6S9NvBocAye8ln5dfKiI2shhWochJhl36r/kYWU8Wrvl2NZJL3c52g==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.1.tgz", + "integrity": "sha512-oCcLF/ykcJfhM2DeeaDyrgdaiuKsqIPNocugdPj2WEyhSYqmx1/u18CV96LAtW+WyyiOLCCeiZwiQutx3T5nXg==", "dev": true, "requires": { - "@commitlint/ensure": "^7.5.2", - "@commitlint/message": "^7.5.0", - "@commitlint/to-lines": "^7.5.0", - "babel-runtime": "^6.23.0" + "@commitlint/ensure": "^12.1.1", + "@commitlint/message": "^12.1.1", + "@commitlint/to-lines": "^12.1.1", + "@commitlint/types": "^12.1.1" } }, "@commitlint/to-lines": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-7.5.0.tgz", - "integrity": "sha512-ZQ3LxPNuQ/J7q42hkiPWN5fUIjWae85H2HHoBB+/Rw1fo+oehvr4Xyt+Oa9Mx5WbBnev/wXnUFjXgoadv1RZ5A==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.1.tgz", + "integrity": "sha512-W23AH2XF5rI27MOAPSSr0TUDoRe7ZbFoRtYhFnPu2MBmcuDA9Tmfd9N5sM2tBXtdE26uq3SazwKqGt1OoGAilQ==", "dev": true }, "@commitlint/top-level": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-7.5.0.tgz", - "integrity": "sha512-oTu185GufTYHjTXPHu6k6HL7iuASOvDOtQizZWRSxj0VXuoki6e0HzvGZsRsycDTOn04Q9hVu+PhF83IUwRpeg==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.1.tgz", + "integrity": "sha512-g7uRbr81QEIg+pbii0OkE17Zh/2C/f6dSmiMDVRn1S0+hNHR1bENCh18hVUKcV/qKTUsKkFlhhWXM9mQBfxQJw==", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, - "@marionebl/sander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@marionebl/sander/-/sander-0.6.1.tgz", - "integrity": "sha1-GViWWHTyS8Ub5Ih1/rUNZC/EH3s=", + "@commitlint/types": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-12.1.1.tgz", + "integrity": "sha512-+qGH+s2Lo6qwacV2X3/ZypZwaAI84ift+1HBjXdXtI/q0F5NtmXucV3lcQOTviMTNiJhq4qWON2fjci2NItASw==", "dev": true, "requires": { - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" + "chalk": "^4.0.0" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", "dev": true }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@octokit/auth-token": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", + "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.4.0.tgz", + "integrity": "sha512-6/vlKPP8NF17cgYXqucdshWqmMZGXkuvtcrWCgU5NOI0Pl2GjlmZyWgBMrU8zJ3v2MJlM6++CiB45VKYmhiWWg==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.4.12", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, "@octokit/endpoint": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-4.0.0.tgz", - "integrity": "sha512-b8sptNUekjREtCTJFpOfSIL4SKh65WaakcyxWzRcSPOk5RxkZJ/S8884NGZFxZ+jCB2rDURU66pSHn14cVgWVg==", + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz", + "integrity": "sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==", "dev": true, "requires": { - "deepmerge": "3.2.0", - "is-plain-object": "^2.0.4", - "universal-user-agent": "^2.0.1", - "url-template": "^2.0.8" + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.1.tgz", + "integrity": "sha512-2lYlvf4YTDgZCTXTW4+OX+9WTLFtEUc6hGm4qM1nlZjzxj+arizM4aHWzBVBCxY9glh7GIs0WEuiSgbVzv8cmA==", + "dev": true, + "requires": { + "@octokit/request": "^5.3.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-6.1.1.tgz", + "integrity": "sha512-ICBhnEb+ahi/TTdNuYb/kTyKVBgAM0VD4k6JPzlhJyzt3Z+Tq/bynwCD+gpkJP7AEcNnzC8YO5R39trmzEo2UA==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.3.tgz", + "integrity": "sha512-46lptzM9lTeSmIBt/sVP/FLSTPGx6DCzAdSX3PfeJ3mTf4h9sGC26WpaQzMEq/Z44cOcmx8VsOhO+uEgE3cjYg==", + "dev": true, + "requires": { + "@octokit/types": "^6.11.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz", + "integrity": "sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==", + "dev": true + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.0.1.tgz", + "integrity": "sha512-vvWbPtPqLyIzJ7A4IPdTl+8IeuKAwMJ4LjvmqWOOdfSuqWQYZXq2CEd0hsnkidff2YfKlguzujHs/reBdAx8Sg==", + "dev": true, + "requires": { + "@octokit/types": "^6.13.1", + "deprecation": "^2.3.1" } }, "@octokit/request": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-3.0.0.tgz", - "integrity": "sha512-DZqmbm66tq+a9FtcKrn0sjrUpi0UaZ9QPUCxxyk/4CJ2rseTMpAWRf6gCwOSUCzZcx/4XVIsDk+kz5BVdaeenA==", + "version": "5.4.15", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.15.tgz", + "integrity": "sha512-6UnZfZzLwNhdLRreOtTkT9n57ZwulCve8q3IT/Z477vThu6snfdkBuhxnChpOKNGxcQ71ow561Qoa6uqLdPtag==", "dev": true, "requires": { - "@octokit/endpoint": "^4.0.0", - "deprecation": "^1.0.1", - "is-plain-object": "^2.0.4", - "node-fetch": "^2.3.0", - "once": "^1.4.0", - "universal-user-agent": "^2.0.1" + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^6.7.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz", + "integrity": "sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" } }, "@octokit/rest": { - "version": "16.24.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.24.3.tgz", - "integrity": "sha512-fBr2ziN4WT9G9sYTfnNVI/0wCb68ZI5isNU48lfWXQDyAy4ftlrh0SkIbhL7aigXUjcY0cX5J46ypyRPH0/U0g==", + "version": "18.5.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.5.3.tgz", + "integrity": "sha512-KPAsUCr1DOdLVbZJgGNuE/QVLWEaVBpFQwDAz/2Cnya6uW2wJ/P5RVGk0itx7yyN1aGa8uXm2pri4umEqG1JBA==", + "dev": true, + "requires": { + "@octokit/core": "^3.2.3", + "@octokit/plugin-paginate-rest": "^2.6.2", + "@octokit/plugin-request-log": "^1.0.2", + "@octokit/plugin-rest-endpoint-methods": "5.0.1" + } + }, + "@octokit/types": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.13.2.tgz", + "integrity": "sha512-jN5LImYHvv7W6SZargq1UMJ3EiaqIz5qkpfsv4GAb4b16SGqctxtOU2TQAZxvsKHkOw2A4zxdsi5wR9en1/ezQ==", "dev": true, "requires": { - "@octokit/request": "3.0.0", - "atob-lite": "^2.0.0", - "before-after-hook": "^1.4.0", - "btoa-lite": "^1.0.0", - "deprecation": "^1.0.1", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^2.0.0", - "url-template": "^2.0.8" + "@octokit/openapi-types": "^6.1.1" } }, "@semantic-release/commit-analyzer": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-6.1.0.tgz", - "integrity": "sha512-2lb+t6muGenI86mYGpZYOgITx9L3oZYF697tJoqXeQEk0uw0fm+OkkOuDTBA3Oax9ftoNIrCKv9bwgYvxrbM6w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-8.0.1.tgz", + "integrity": "sha512-5bJma/oB7B4MtwUkZC2Bf7O1MHfi4gWe4mA+MIQ3lsEV0b422Bvl1z5HRpplDnMLHH3EXMoRdEng6Ds5wUqA3A==", "dev": true, "requires": { "conventional-changelog-angular": "^5.0.0", "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.0.0", + "conventional-commits-parser": "^3.0.7", "debug": "^4.0.0", - "import-from": "^2.1.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "conventional-changelog-angular": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz", - "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==", - "dev": true, - "requires": { - "compare-func": "^1.3.1", - "q": "^1.5.1" - } - }, - "conventional-commits-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz", - "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.0", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0", - "trim-off-newlines": "^1.0.0" - } - }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - } + "import-from": "^3.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.2" } }, "@semantic-release/error": { @@ -300,66 +628,54 @@ "dev": true }, "@semantic-release/github": { - "version": "5.2.10", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.2.10.tgz", - "integrity": "sha512-z/UwIxKb+EMiJDIy/57MBzJ80ar5H9GJQRyML/ILQ8dlrPwXs7cTyTvC7AesrF7t1mJZtg3ht9Qf9RdtR/LGzw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-7.2.1.tgz", + "integrity": "sha512-+gOhbaG4T3xJb6aTZu1/7KvCmYKRChkasdIyFWdaGaTWVeGpdl4o0zMviV1z3kRcgPOSXeqjHSQ6SOQAfHQiDw==", "dev": true, "requires": { - "@octokit/rest": "^16.13.1", + "@octokit/rest": "^18.0.0", "@semantic-release/error": "^2.2.0", - "aggregate-error": "^2.0.0", - "bottleneck": "^2.0.1", + "aggregate-error": "^3.0.0", + "bottleneck": "^2.18.1", "debug": "^4.0.0", - "dir-glob": "^2.0.0", - "fs-extra": "^7.0.0", - "globby": "^9.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "issue-parser": "^3.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^9.0.0", + "globby": "^11.0.0", + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "issue-parser": "^6.0.0", "lodash": "^4.17.4", - "mime": "^2.0.3", - "p-filter": "^1.0.0", - "p-retry": "^3.0.0", - "parse-github-url": "^1.0.1", + "mime": "^2.4.3", + "p-filter": "^2.0.0", + "p-retry": "^4.0.0", "url-join": "^4.0.0" } }, "@semantic-release/npm": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.1.4.tgz", - "integrity": "sha512-YRl8VTVwnRTl/sVRvTXs1ncYcuvuGrqPEXYy+lUK1YRLq25hkrhIdv3Ju0u1zGLqVCA8qRlF3NzWl7pULJXVog==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-7.1.1.tgz", + "integrity": "sha512-zTYAno1j49XiH+uAVCY47dKOJAagA/MaJb26FFIfNujNHw3GYXk3ygsFa5CSa55xsO0qEMLcsDX3f3ByCg6nZw==", "dev": true, "requires": { "@semantic-release/error": "^2.2.0", - "aggregate-error": "^2.0.0", - "execa": "^1.0.0", - "fs-extra": "^7.0.0", - "lodash": "^4.17.4", + "aggregate-error": "^3.0.0", + "execa": "^5.0.0", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", "nerf-dart": "^1.0.0", - "normalize-url": "^4.0.0", - "npm": "6.5.0", + "normalize-url": "^6.0.0", + "npm": "^7.0.0", "rc": "^1.2.8", - "read-pkg": "^4.0.0", - "registry-auth-token": "^3.3.1" - }, - "dependencies": { - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - } + "read-pkg": "^5.0.0", + "registry-auth-token": "^4.0.0", + "semver": "^7.1.2", + "tempy": "^1.0.0" } }, "@semantic-release/release-notes-generator": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-7.1.4.tgz", - "integrity": "sha512-pWPouZujddgb6t61t9iA9G3yIfp3TeQ7bPbV1ixYSeP6L7gI1+Du82fY/OHfEwyifpymLUQW0XnIKgKct5IMMw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-9.0.2.tgz", + "integrity": "sha512-xGFSidhGqB27uwgWCU6y0gbf4r/no5flOAkJyFFc4+bPf8S+LfAVm7xhhlK5VPXLt2Iu1RBH8F+IgMK2ah5YpA==", "dev": true, "requires": { "conventional-changelog-angular": "^5.0.0", @@ -367,83 +683,52 @@ "conventional-commits-filter": "^2.0.0", "conventional-commits-parser": "^3.0.0", "debug": "^4.0.0", - "get-stream": "^4.0.0", - "import-from": "^2.1.0", - "into-stream": "^4.0.0", - "lodash": "^4.17.4" + "get-stream": "^5.0.0", + "import-from": "^3.0.0", + "into-stream": "^6.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^7.0.0" }, "dependencies": { - "conventional-changelog-angular": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz", - "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==", - "dev": true, - "requires": { - "compare-func": "^1.3.1", - "q": "^1.5.1" - } - }, - "conventional-commits-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz", - "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.0", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0", - "trim-off-newlines": "^1.0.0" - } - }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" + "pump": "^3.0.0" } } } }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, - "@types/node": { - "version": "11.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.4.tgz", - "integrity": "sha512-+rabAZZ3Yn7tF/XPGHupKIL5EcAbrLxnTr/hgQICxbeuAfWtT0UZSfULE+ndusckBItcv4o6ZeOJplQikVcLvQ==", + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, "JSONStream": { @@ -457,34 +742,45 @@ } }, "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "debug": "4" } }, "aggregate-error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-2.2.0.tgz", - "integrity": "sha512-E5n+IZkhh22/pFdUvHUU/o9z752lc+7tgHt+FXS/g6BjlbE9249dGmuS/SxIWMPhTljZJkFN+7OXE0+O5+WT8w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", - "indent-string": "^3.0.0" + "indent-string": "^4.0.0" } }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { @@ -502,45 +798,12 @@ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "argv-formatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", "dev": true }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, "array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -548,150 +811,39 @@ "dev": true }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, - "balanced-match": { + "at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "before-after-hook": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz", - "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.1.tgz", + "integrity": "sha512-/6FKxSTWoJdbsLDF8tdIjaRiFXiE6UHsEHE3OPI/cwPURCVi1ukP0gmLn7XWEiFk5TcwQjjY5PWsU+j+tgXgmw==", "dev": true }, "bottleneck": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.18.0.tgz", - "integrity": "sha512-U1xiBRaokw4yEguzikOl0VrnZp6uekjpmfrh6rKtr1D+/jFjYCL6J83ZXlGtlBDwVdTmJJ+4Lg5FpB3xmLSiyA==", + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", "dev": true }, "brace-expansion": { @@ -705,112 +857,20 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "caller-callsite": "^2.0.0" + "fill-range": "^7.0.1" } }, "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, "cardinal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", @@ -822,85 +882,80 @@ } }, "chalk": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", - "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.2.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "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.4" + } + }, + "color-name": { + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "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": { - "is-descriptor": "^0.1.0" + "has-flag": "^4.0.0" } } } }, "clean-stack": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.1.0.tgz", - "integrity": "sha512-uQWrpRm+iZZUCAp7ZZJQbd4Za9I3AjR/3YTjmcnAtkauaIm/T5CT6U8zVI6e60T6OANqBFAzuR9/HB3NzuZCRA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", + "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", "dev": true, "requires": { "colors": "1.0.3" } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "color-convert": { @@ -924,29 +979,16 @@ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true, - "optional": true - }, "compare-func": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", - "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "requires": { "array-ify": "^1.0.0", - "dot-prop": "^3.0.0" + "dot-prop": "^5.1.0" } }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -954,108 +996,174 @@ "dev": true }, "conventional-changelog-angular": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", - "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", + "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "dependencies": { + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + } + } + }, + "conventional-changelog-conventionalcommits": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz", + "integrity": "sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw==", "dev": true, "requires": { - "compare-func": "^1.3.1", + "compare-func": "^2.0.0", + "lodash": "^4.17.15", "q": "^1.5.1" + }, + "dependencies": { + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } } }, "conventional-changelog-writer": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz", - "integrity": "sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz", + "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==", "dev": true, "requires": { - "compare-func": "^1.3.1", - "conventional-commits-filter": "^2.0.1", + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.7", "dateformat": "^3.0.0", - "handlebars": "^4.1.0", + "handlebars": "^4.7.6", "json-stringify-safe": "^5.0.1", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "semver": "^5.5.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", "split": "^1.0.0", - "through2": "^2.0.0" + "through2": "^4.0.0" }, "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, "conventional-commits-filter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz", - "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, "requires": { - "is-subset": "^0.1.1", + "lodash.ismatch": "^4.4.0", "modify-values": "^1.0.0" } }, "conventional-commits-parser": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", - "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", + "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", "dev": true, "requires": { "JSONStream": "^1.0.4", - "is-text-path": "^1.0.0", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0", "trim-off-newlines": "^1.0.0" }, "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" + "readable-stream": "3" } } } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1063,47 +1171,60 @@ "dev": true }, "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0", - "require-from-string": "^2.0.1" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true }, "dargs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true }, "dateformat": { "version": "3.0.3", @@ -1112,12 +1233,12 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -1144,87 +1265,61 @@ } } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "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 }, - "deepmerge": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz", - "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==", - "dev": true - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "aggregate-error": "^3.0.0" } } } }, "deprecation": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-1.0.1.tgz", - "integrity": "sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "path-type": "^3.0.0" + "path-type": "^4.0.0" } }, "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "duplexer2": { @@ -1234,25 +1329,82 @@ "dev": true, "requires": { "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + } } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "env-ci": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-3.2.0.tgz", - "integrity": "sha512-TFjNiDlXrL8/pfHswdvJGEZzJcq3aBPb8Eka83hlGLwuNw9F9BC9S9ETlkfkItLRT9k5JgpGgeP+rL6/3cEbcw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.0.2.tgz", + "integrity": "sha512-Xc41mKvjouTXD3Oy9AqySz1IeyvJvHZ20Twf5ZLYbNpPPIuCnL/qHCmNlD01LoNy0JTunw9HPYVptD19Ac7Mbw==", "dev": true, "requires": { - "execa": "^1.0.0", - "java-properties": "^0.2.9" + "execa": "^4.0.0", + "java-properties": "^1.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + } } }, "error-ex": { @@ -1264,21 +1416,12 @@ "is-arrayish": "^0.2.1" } }, - "es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1292,242 +1435,80 @@ "dev": true }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" } }, - "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "reusify": "^1.0.4" } }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "find-versions": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.1.0.tgz", - "integrity": "sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q==", - "dev": true, - "requires": { - "array-uniq": "^2.1.0", - "semver-regex": "^2.0.0" - }, - "dependencies": { - "array-uniq": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.1.0.tgz", - "integrity": "sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==", - "dev": true - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", + "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", "dev": true, "requires": { - "map-cache": "^0.2.2" + "semver-regex": "^3.1.2" } }, "from2": { @@ -1538,17 +1519,35 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + } } }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "fs.realpath": { @@ -1557,31 +1556,28 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "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=", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, "git-log-parser": { @@ -1598,53 +1594,87 @@ "traverse": "~0.6.6" }, "dependencies": { - "split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "through2": "~2.0.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } } } }, "git-raw-commits": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", - "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", + "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", "dev": true, "requires": { - "dargs": "^4.0.1", - "lodash.template": "^4.0.2", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0" + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, "dependencies": { - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" + "readable-stream": "3" } } } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "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", @@ -1656,32 +1686,14 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-glob": "^4.0.1" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -1692,271 +1704,117 @@ } }, "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "function-bind": "^1.1.1" } }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "hook-std": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-1.2.0.tgz", - "integrity": "sha512-yntre2dbOAjgQ5yoRykyON0D9T96BfshR8IuiL/r3celeHD8I/76w4qo8m3z99houR4Z678jakV3uXrQdSvW/w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", "dev": true }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } + "agent-base": "6", + "debug": "4" } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "husky": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", - "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.7", - "execa": "^1.0.0", - "find-up": "^3.0.0", - "get-stdin": "^6.0.0", - "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", - "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", - "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.0", - "parse-json": "^4.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.1.0.tgz", - "integrity": "sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA==", - "dev": true - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", + "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", + "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1964,26 +1822,26 @@ } }, "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" }, "dependencies": { "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "inflight": { @@ -2003,45 +1861,19 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "into-stream": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-4.0.0.tgz", - "integrity": "sha512-i29KNyE5r0Y/UQzcQ0IbZO1MYJ53Jn0EcFRZPj5FzWKYH17kDFEOwuA+3jroymOI06SW1dEDnly9A1CAreC5dg==", - "dev": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^2.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" } }, "is-arrayish": { @@ -2050,72 +1882,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "has": "^1.0.3" } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2123,9 +1898,9 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { @@ -2138,29 +1913,27 @@ } }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-plain-obj": { @@ -2170,24 +1943,15 @@ "dev": true }, "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, - "is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-text-path": { @@ -2199,12 +1963,6 @@ "text-extensions": "^1.0.0" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2217,16 +1975,10 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "issue-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-3.0.1.tgz", - "integrity": "sha512-5wdT3EE8Kq38x/hJD8QZCJ9scGoOZ5QnzwXyClkviSWTS+xOCE6hJ0qco3H5n5jCsFqpbofZCcMWqlXJzF72VQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", "dev": true, "requires": { "lodash.capitalize": "^4.2.1", @@ -2237,20 +1989,16 @@ } }, "java-properties": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-0.2.10.tgz", - "integrity": "sha512-CpKJh9VRNhS+XqZtg1UMejETGEiqwCGDC/uwPEEQwc2nfdbSm73SIE29TplG2gLYuBOOTNDqxzG6A9NtEPLt0w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "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" - } + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "json-parse-better-errors": { "version": "1.0.2", @@ -2258,6 +2006,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -2265,12 +2019,13 @@ "dev": true }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, "jsonparse": { @@ -2279,21 +2034,12 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -2304,28 +2050,33 @@ "parse-json": "^4.0.0", "pify": "^3.0.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.capitalize": { @@ -2340,10 +2091,10 @@ "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", "dev": true }, "lodash.isplainobject": { @@ -2358,187 +2109,335 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", "dev": true }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "dev": true, - "requires": { - "lodash._reinterpolate": "~3.0.0" - } - }, "lodash.toarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "dev": true }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", "dev": true }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "macos-release": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.2.0.tgz", - "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "object-visit": "^1.0.0" + "yallist": "^4.0.0" } }, "marked": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz", - "integrity": "sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", + "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==", "dev": true }, "marked-terminal": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.2.0.tgz", - "integrity": "sha512-Yr1yVS0BbDG55vx7be1D0mdv+jGs9AW563o/Tt/7FTsId2J0yqhrTeXAqq/Q0DyyXltIn6CSxzesQuFqXgafjQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-4.1.1.tgz", + "integrity": "sha512-t7Mdf6T3PvOEyN01c3tYxDzhyKZ8xnkp8Rs6Fohno63L/0pFTJ5Qtwto2AQVuDtbQiWzD+4E5AAu1Z2iLc8miQ==", "dev": true, "requires": { - "ansi-escapes": "^3.1.0", + "ansi-escapes": "^4.3.1", "cardinal": "^2.1.1", - "chalk": "^2.4.1", + "chalk": "^4.1.0", "cli-table": "^0.3.1", - "node-emoji": "^1.4.1", - "supports-hyperlinks": "^1.0.1" + "node-emoji": "^1.10.0", + "supports-hyperlinks": "^2.1.0" + } + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "lru-cache": "^6.0.0" + } + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "map-obj": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", + "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true } } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" - } + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, "mime": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz", - "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, "mimic-fn": { @@ -2547,6 +2446,12 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2557,59 +2462,11 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, "modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -2617,34 +2474,15 @@ "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "nerf-dart": { @@ -2653,12 +2491,6 @@ "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", "dev": true }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node-emoji": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", @@ -2669,9 +2501,9 @@ } }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, "normalize-package-data": { @@ -2684,187 +2516,292 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-url": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", - "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.0.0.tgz", + "integrity": "sha512-3nv3dKMucKPEXhx/FEtJQR26ksYdyVlLEP9/dYvYwCbLbP6H8ya94IRf+mB93ec+fndv/Ye8SylWfD7jmN6kSA==", "dev": true }, "npm": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.5.0.tgz", - "integrity": "sha512-SPq8zG2Kto+Xrq55E97O14Jla13PmQT5kSnvwBj88BmJZ5Nvw++OmlWfhjkB67pcgP5UEXljEtnGFKZtOgt6MQ==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.11.1.tgz", + "integrity": "sha512-F9dUPQQBm5me6t74m63CrrBSzUcLART9BmsxiJU3jZK8SBnxiqzxvsU70/uqY0cjYSoYP7AuZ2w8YfGUwhcf6A==", "dev": true, "requires": { - "JSONStream": "^1.3.4", + "@npmcli/arborist": "^2.4.0", + "@npmcli/ci-detect": "^1.2.0", + "@npmcli/config": "^2.2.0", + "@npmcli/run-script": "^1.8.5", "abbrev": "~1.1.1", "ansicolors": "~0.3.2", "ansistyles": "~0.1.3", - "aproba": "~1.2.0", "archy": "~1.0.0", - "bin-links": "^1.1.2", - "bluebird": "^3.5.3", - "byte-size": "^4.0.3", - "cacache": "^11.2.0", - "call-limit": "~1.1.0", - "chownr": "~1.0.1", - "ci-info": "^1.6.0", + "byte-size": "^7.0.1", + "cacache": "^15.0.6", + "chalk": "^4.1.0", + "chownr": "^2.0.0", "cli-columns": "^3.1.2", - "cli-table3": "^0.5.0", - "cmd-shim": "~2.0.2", + "cli-table3": "^0.6.0", "columnify": "~1.5.4", - "config-chain": "^1.1.12", - "debuglog": "*", - "detect-indent": "~5.0.0", - "detect-newline": "^2.1.0", - "dezalgo": "~1.0.3", - "editor": "~1.0.0", - "figgy-pudding": "^3.5.1", - "find-npm-prefix": "^1.0.2", - "fs-vacuum": "~1.2.10", - "fs-write-stream-atomic": "~1.0.10", - "gentle-fs": "^2.0.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "has-unicode": "~2.0.1", - "hosted-git-info": "^2.7.1", - "iferr": "^1.0.2", - "imurmurhash": "*", - "inflight": "~1.0.6", - "inherits": "~2.0.3", - "ini": "^1.3.5", - "init-package-json": "^1.10.3", - "is-cidr": "^2.0.6", - "json-parse-better-errors": "^1.0.2", - "lazy-property": "~1.0.0", - "libcipm": "^2.0.2", - "libnpmhook": "^4.0.1", - "libnpx": "^10.2.0", - "lock-verify": "^2.0.2", - "lockfile": "^1.0.4", - "lodash._baseindexof": "*", - "lodash._baseuniq": "~4.6.0", - "lodash._bindcallback": "*", - "lodash._cacheindexof": "*", - "lodash._createcache": "*", - "lodash._getnative": "*", - "lodash.clonedeep": "~4.5.0", - "lodash.restparam": "*", - "lodash.union": "~4.6.0", - "lodash.uniq": "~4.5.0", - "lodash.without": "~4.4.0", - "lru-cache": "^4.1.3", - "meant": "~1.0.1", - "mississippi": "^3.0.0", - "mkdirp": "~0.5.1", - "move-concurrently": "^1.0.1", - "node-gyp": "^3.8.0", - "nopt": "~4.0.1", - "normalize-package-data": "~2.4.0", - "npm-audit-report": "^1.3.1", - "npm-cache-filename": "~1.0.2", - "npm-install-checks": "~3.0.0", - "npm-lifecycle": "^2.1.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^2.1.0", - "npm-profile": "^3.0.2", - "npm-registry-client": "^8.6.0", - "npm-registry-fetch": "^1.1.0", - "npm-user-validate": "~1.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "hosted-git-info": "^4.0.2", + "ini": "^2.0.0", + "init-package-json": "^2.0.3", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^2.3.1", + "leven": "^3.1.0", + "libnpmaccess": "^4.0.2", + "libnpmdiff": "^2.0.4", + "libnpmexec": "^1.0.1", + "libnpmfund": "^1.0.2", + "libnpmhook": "^6.0.2", + "libnpmorg": "^2.0.2", + "libnpmpack": "^2.0.1", + "libnpmpublish": "^4.0.1", + "libnpmsearch": "^3.1.1", + "libnpmteam": "^2.0.3", + "libnpmversion": "^1.2.0", + "make-fetch-happen": "^8.0.14", + "minipass": "^3.1.3", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "ms": "^2.1.2", + "node-gyp": "^7.1.2", + "nopt": "^5.0.0", + "npm-audit-report": "^2.1.4", + "npm-package-arg": "^8.1.2", + "npm-pick-manifest": "^6.1.1", + "npm-profile": "^5.0.3", + "npm-registry-fetch": "^10.1.1", + "npm-user-validate": "^1.0.1", "npmlog": "~4.1.2", - "once": "~1.4.0", - "opener": "^1.5.1", - "osenv": "^0.1.5", - "pacote": "^8.1.6", - "path-is-inside": "~1.0.2", - "promise-inflight": "~1.0.1", + "opener": "^1.5.2", + "pacote": "^11.3.3", + "parse-conflict-json": "^1.1.1", "qrcode-terminal": "^0.12.0", - "query-string": "^6.1.0", - "qw": "~1.0.1", "read": "~1.0.7", - "read-cmd-shim": "~1.0.1", - "read-installed": "~4.0.3", - "read-package-json": "^2.0.13", - "read-package-tree": "^5.2.1", - "readable-stream": "^2.3.6", - "readdir-scoped-modules": "*", - "request": "^2.88.0", - "retry": "^0.12.0", - "rimraf": "~2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.5.1", - "sha": "~2.0.1", - "slide": "~1.1.6", - "sorted-object": "~2.0.1", - "sorted-union-stream": "~2.1.3", - "ssri": "^6.0.1", - "stringify-package": "^1.0.0", - "tar": "^4.4.8", + "read-package-json": "^3.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "tar": "^6.1.0", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", - "uid-number": "0.0.6", - "umask": "~1.1.0", - "unique-filename": "~1.1.0", - "unpipe": "~1.0.0", - "update-notifier": "^2.5.0", - "uuid": "^3.3.2", - "validate-npm-package-license": "^3.0.4", + "treeverse": "^1.0.4", "validate-npm-package-name": "~3.0.0", - "which": "^1.3.1", - "worker-farm": "^1.6.0", - "write-file-atomic": "^2.3.0" + "which": "^2.0.2", + "write-file-atomic": "^3.0.3" }, "dependencies": { - "JSONStream": { - "version": "1.3.4", + "@npmcli/arborist": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.2", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.0", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^10.0.0", + "pacote": "^11.2.6", + "parse-conflict-json": "^1.1.1", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "semver": "^7.3.5", + "tar": "^6.1.0", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/ci-detect": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "@npmcli/config": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/disparity-colors": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.3.0" + } + }, + "@npmcli/git": { + "version": "2.0.8", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "bundled": true, + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/map-workspaces": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + } + }, + "@npmcli/metavuln-calculator": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "@npmcli/node-gyp": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "bundled": true, + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.5", "bundled": true, "dev": true, "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "infer-owner": "^1.0.4", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" } }, + "@tootallnate/once": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, "abbrev": { "version": "1.1.1", "bundled": true, "dev": true }, "agent-base": { - "version": "4.2.0", + "version": "6.0.2", "bundled": true, "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "debug": "4" } }, "agentkeepalive": { - "version": "3.4.1", + "version": "4.1.4", "bundled": true, "dev": true, "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", "humanize-ms": "^1.2.1" } }, - "ajv": { - "version": "5.5.2", + "aggregate-error": { + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, - "ansi-align": { - "version": "2.0.0", + "ajv": { + "version": "6.12.6", "bundled": true, "dev": true, "requires": { - "string-width": "^2.0.0" + "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-regex": { @@ -2873,11 +2810,11 @@ "dev": true }, "ansi-styles": { - "version": "3.2.1", + "version": "4.3.0", "bundled": true, "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "ansicolors": { @@ -2891,7 +2828,7 @@ "dev": true }, "aproba": { - "version": "1.2.0", + "version": "2.0.0", "bundled": true, "dev": true }, @@ -2901,7 +2838,7 @@ "dev": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "requires": { @@ -2938,12 +2875,12 @@ "dev": true }, "aws4": { - "version": "1.8.0", + "version": "1.11.0", "bundled": true, "dev": true }, "balanced-match": { - "version": "1.0.0", + "version": "1.0.2", "bundled": true, "dev": true }, @@ -2951,50 +2888,28 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, "bin-links": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.0", - "cmd-shim": "^2.0.2", - "gentle-fs": "^2.0.0", - "graceful-fs": "^4.1.11", - "write-file-atomic": "^2.3.0" - } - }, - "block-stream": { - "version": "0.0.9", + "version": "2.2.1", "bundled": true, "dev": true, "requires": { - "inherits": "~2.0.0" + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" } }, - "bluebird": { - "version": "3.5.3", + "binary-extensions": { + "version": "2.2.0", "bundled": true, "dev": true }, - "boxen": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - } - }, "brace-expansion": { "version": "1.1.11", "bundled": true, @@ -3004,102 +2919,69 @@ "concat-map": "0.0.1" } }, - "buffer-from": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, "builtins": { "version": "1.0.3", "bundled": true, "dev": true }, - "byline": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, "byte-size": { - "version": "4.0.3", + "version": "7.0.1", "bundled": true, "dev": true }, "cacache": { - "version": "11.2.0", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "figgy-pudding": "^3.1.0", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.3", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "version": "15.0.6", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.0", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } }, - "call-limit": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "caseless": { "version": "0.12.0", "bundled": true, "dev": true }, "chalk": { - "version": "2.4.1", + "version": "4.1.1", "bundled": true, "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" } }, "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ci-info": { - "version": "1.6.0", + "version": "2.0.0", "bundled": true, "dev": true }, "cidr-regex": { - "version": "2.0.9", + "version": "3.1.1", "bundled": true, "dev": true, "requires": { - "ip-regex": "^2.1.0" + "ip-regex": "^4.1.0" } }, - "cli-boxes": { - "version": "1.0.0", + "clean-stack": { + "version": "2.2.0", "bundled": true, "dev": true }, @@ -3113,36 +2995,41 @@ } }, "cli-table3": { - "version": "0.5.0", + "version": "0.6.0", "bundled": true, "dev": true, "requires": { "colors": "^1.1.2", "object-assign": "^4.1.0", - "string-width": "^2.1.1" - } - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0" }, "dependencies": { "ansi-regex": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { "version": "3.0.0", "bundled": true, "dev": true }, + "string-width": { + "version": "4.2.2", + "bundled": true, + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "strip-ansi": { - "version": "4.0.0", + "version": "6.0.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } @@ -3153,39 +3040,33 @@ "dev": true }, "cmd-shim": { - "version": "2.0.2", + "version": "4.1.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "mkdirp": "~0.5.0" + "mkdirp-infer-owner": "^2.0.0" } }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true - }, "code-point-at": { "version": "1.1.0", "bundled": true, "dev": true }, "color-convert": { - "version": "1.9.1", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "color-name": "^1.1.1" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", + "version": "1.1.4", "bundled": true, "dev": true }, "colors": { - "version": "1.1.2", + "version": "1.4.0", "bundled": true, "dev": true, "optional": true @@ -3200,109 +3081,33 @@ } }, "combined-stream": { - "version": "1.0.6", + "version": "1.0.8", "bundled": true, "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, - "concat-map": { - "version": "0.0.1", + "common-ancestor-path": { + "version": "1.0.1", "bundled": true, "dev": true }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "config-chain": { - "version": "1.1.12", - "bundled": true, - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "configstore": { - "version": "3.1.2", + "concat-map": { + "version": "0.0.1", "bundled": true, - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, "dev": true }, - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true, - "dev": true - } - } - }, "core-util-is": { "version": "1.0.2", "bundled": true, "dev": true }, - "create-error-class": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "cyclist": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, "dashdash": { "version": "1.14.1", "bundled": true, @@ -3312,15 +3117,15 @@ } }, "debug": { - "version": "3.1.0", + "version": "4.3.1", "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" }, "dependencies": { "ms": { - "version": "2.0.0", + "version": "2.1.2", "bundled": true, "dev": true } @@ -3331,21 +3136,6 @@ "bundled": true, "dev": true }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true - }, "defaults": { "version": "1.0.3", "bundled": true, @@ -3364,13 +3154,8 @@ "bundled": true, "dev": true }, - "detect-indent": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "detect-newline": { - "version": "2.1.0", + "depd": { + "version": "1.1.2", "bundled": true, "dev": true }, @@ -3383,111 +3168,44 @@ "wrappy": "1" } }, - "dot-prop": { - "version": "4.2.0", - "bundled": true, - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "duplexer3": { - "version": "0.1.4", + "diff": { + "version": "5.0.0", "bundled": true, "dev": true }, - "duplexify": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "ecc-jsbn": { "version": "0.1.2", "bundled": true, "dev": true, - "optional": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "editor": { - "version": "1.0.0", + "emoji-regex": { + "version": "8.0.0", "bundled": true, "dev": true }, "encoding": { - "version": "0.1.12", - "bundled": true, - "dev": true, - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "err-code": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "errno": { - "version": "0.1.7", + "version": "0.1.13", "bundled": true, "dev": true, + "optional": true, "requires": { - "prr": "~1.0.1" + "iconv-lite": "^0.6.2" } }, - "es6-promise": { - "version": "4.2.4", + "env-paths": { + "version": "2.2.1", "bundled": true, "dev": true }, - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escape-string-regexp": { - "version": "1.0.5", + "err-code": { + "version": "2.0.3", "bundled": true, "dev": true }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "extend": { "version": "3.0.2", "bundled": true, @@ -3499,41 +3217,14 @@ "dev": true }, "fast-deep-equal": { - "version": "1.1.0", + "version": "3.1.3", "bundled": true, "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "figgy-pudding": { - "version": "3.5.1", - "bundled": true, - "dev": true - }, - "find-npm-prefix": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "find-up": { "version": "2.1.0", "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -3541,58 +3232,21 @@ "dev": true }, "form-data": { - "version": "2.3.2", + "version": "2.3.3", "bundled": true, "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "1.0.6", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, - "from2": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs-vacuum": { - "version": "1.2.10", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "path-is-inside": "^1.0.1", - "rimraf": "^2.5.2" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", + "fs-minipass": { + "version": "2.1.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true, - "dev": true - } + "minipass": "^3.0.0" } }, "fs.realpath": { @@ -3600,16 +3254,10 @@ "bundled": true, "dev": true }, - "fstream": { - "version": "1.0.11", + "function-bind": { + "version": "1.1.1", "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } + "dev": true }, "gauge": { "version": "2.7.4", @@ -3626,6 +3274,19 @@ "wide-align": "^1.1.0" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, "string-width": { "version": "1.0.2", "bundled": true, @@ -3638,43 +3299,6 @@ } } }, - "genfun": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "gentle-fs": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.2", - "fs-vacuum": "^1.2.10", - "graceful-fs": "^4.1.11", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "path-is-inside": "^1.0.2", - "read-cmd-shim": "^1.0.1", - "slide": "^1.1.6" - }, - "dependencies": { - "iferr": { - "version": "0.1.5", - "bundled": true, - "dev": true - } - } - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, "getpass": { "version": "0.1.7", "bundled": true, @@ -3684,7 +3308,7 @@ } }, "glob": { - "version": "7.1.3", + "version": "7.1.6", "bundled": true, "dev": true, "requires": { @@ -3696,34 +3320,8 @@ "path-is-absolute": "^1.0.0" } }, - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "got": { - "version": "6.7.1", - "bundled": true, - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, "graceful-fs": { - "version": "4.1.15", + "version": "4.2.6", "bundled": true, "dev": true }, @@ -3733,16 +3331,24 @@ "dev": true }, "har-validator": { - "version": "5.1.0", + "version": "5.1.5", "bundled": true, "dev": true, "requires": { - "ajv": "^5.3.0", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { - "version": "3.0.0", + "version": "4.0.0", "bundled": true, "dev": true }, @@ -3752,22 +3358,26 @@ "dev": true }, "hosted-git-info": { - "version": "2.7.1", + "version": "4.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "http-cache-semantics": { - "version": "3.8.1", + "version": "4.1.0", "bundled": true, "dev": true }, "http-proxy-agent": { - "version": "2.1.0", + "version": "4.0.1", "bundled": true, "dev": true, "requires": { - "agent-base": "4", - "debug": "3.1.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, "http-signature": { @@ -3781,12 +3391,12 @@ } }, "https-proxy-agent": { - "version": "2.2.1", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "agent-base": "6", + "debug": "4" } }, "humanize-ms": { @@ -3798,33 +3408,34 @@ } }, "iconv-lite": { - "version": "0.4.23", + "version": "0.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "iferr": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { "minimatch": "^3.0.4" } }, - "import-lazy": { - "version": "2.1.0", + "imurmurhash": { + "version": "0.1.4", "bundled": true, "dev": true }, - "imurmurhash": { - "version": "0.1.4", + "indent-string": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "infer-owner": { + "version": "1.0.4", "bundled": true, "dev": true }, @@ -3838,117 +3449,64 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, "dev": true }, "ini": { - "version": "1.3.5", + "version": "2.0.0", "bundled": true, "dev": true }, "init-package-json": { - "version": "1.10.3", + "version": "2.0.3", "bundled": true, "dev": true, "requires": { "glob": "^7.1.1", - "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "npm-package-arg": "^8.1.2", "promzard": "^0.3.0", "read": "~1.0.1", - "read-package-json": "1 || 2", - "semver": "2.x || 3.x || 4 || 5", - "validate-npm-package-license": "^3.0.1", + "read-package-json": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^3.0.0" } }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "ip": { "version": "1.1.5", "bundled": true, "dev": true }, "ip-regex": { - "version": "2.1.0", + "version": "4.3.0", "bundled": true, "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-ci": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "ci-info": "^1.0.0" - } - }, "is-cidr": { - "version": "2.0.6", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^2.0.8" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", + "version": "4.0.2", "bundled": true, "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "cidr-regex": "^3.1.1" } }, - "is-installed-globally": { - "version": "0.1.0", + "is-core-module": { + "version": "2.2.0", "bundled": true, "dev": true, "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "has": "^1.0.3" } }, - "is-npm": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-obj": { - "version": "1.0.1", + "is-fullwidth-code-point": { + "version": "2.0.0", "bundled": true, "dev": true }, - "is-path-inside": { + "is-lambda": { "version": "1.0.1", "bundled": true, - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-redirect": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, "dev": true }, "is-typedarray": { @@ -3974,11 +3532,10 @@ "jsbn": { "version": "0.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", + "json-parse-even-better-errors": { + "version": "2.3.1", "bundled": true, "dev": true }, @@ -3988,7 +3545,12 @@ "dev": true }, "json-schema-traverse": { - "version": "0.3.1", + "version": "0.4.1", + "bundled": true, + "dev": true + }, + "json-stringify-nice": { + "version": "1.1.3", "bundled": true, "dev": true }, @@ -4013,660 +3575,407 @@ "verror": "1.10.0" } }, - "latest-version": { - "version": "3.1.0", + "just-diff": { + "version": "3.1.1", "bundled": true, - "dev": true, - "requires": { - "package-json": "^4.0.0" - } + "dev": true }, - "lazy-property": { - "version": "1.0.0", + "just-diff-apply": { + "version": "3.0.0", "bundled": true, "dev": true }, - "lcid": { - "version": "1.0.0", + "leven": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "libnpmaccess": { + "version": "4.0.2", "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^10.0.0" } }, - "libcipm": { - "version": "2.0.2", + "libnpmdiff": { + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "bin-links": "^1.1.2", - "bluebird": "^3.5.1", - "find-npm-prefix": "^1.0.2", - "graceful-fs": "^4.1.11", - "lock-verify": "^2.0.2", - "mkdirp": "^0.5.1", - "npm-lifecycle": "^2.0.3", - "npm-logical-tree": "^1.2.1", - "npm-package-arg": "^6.1.0", - "pacote": "^8.1.6", - "protoduck": "^5.0.0", - "read-package-json": "^2.0.13", - "rimraf": "^2.6.2", - "worker-farm": "^1.6.0" + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.1", + "pacote": "^11.3.0", + "tar": "^6.1.0" } }, - "libnpmhook": { - "version": "4.0.1", + "libnpmexec": { + "version": "1.0.1", "bundled": true, "dev": true, "requires": { - "figgy-pudding": "^3.1.0", - "npm-registry-fetch": "^3.0.0" - }, - "dependencies": { - "npm-registry-fetch": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "figgy-pudding": "^3.1.0", - "lru-cache": "^4.1.2", - "make-fetch-happen": "^4.0.0", - "npm-package-arg": "^6.0.0" - } - } + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2" } }, - "libnpx": { - "version": "10.2.0", + "libnpmfund": { + "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "dotenv": "^5.0.1", - "npm-package-arg": "^6.0.0", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.0", - "update-notifier": "^2.3.0", - "which": "^1.3.0", - "y18n": "^4.0.0", - "yargs": "^11.0.0" + "@npmcli/arborist": "^2.0.0" } }, - "locate-path": { - "version": "2.0.0", + "libnpmhook": { + "version": "6.0.2", "bundled": true, "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^10.0.0" } }, - "lock-verify": { + "libnpmorg": { "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "npm-package-arg": "^5.1.2 || 6", - "semver": "^5.4.1" + "aproba": "^2.0.0", + "npm-registry-fetch": "^10.0.0" } }, - "lockfile": { - "version": "1.0.4", + "libnpmpack": { + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "signal-exit": "^3.0.2" + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" } }, - "lodash._baseindexof": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "lodash._baseuniq": { - "version": "4.6.0", + "libnpmpublish": { + "version": "4.0.1", "bundled": true, "dev": true, "requires": { - "lodash._createset": "~4.0.0", - "lodash._root": "~3.0.0" + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^10.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" } }, - "lodash._bindcallback": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "lodash._cacheindexof": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "lodash._createcache": { - "version": "3.1.2", + "libnpmsearch": { + "version": "3.1.1", "bundled": true, "dev": true, "requires": { - "lodash._getnative": "^3.0.0" + "npm-registry-fetch": "^10.0.0" } }, - "lodash._createset": { - "version": "4.0.3", - "bundled": true, - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true, - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "bundled": true, - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "bundled": true, - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "bundled": true, - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "bundled": true, - "dev": true - }, - "lodash.without": { - "version": "4.4.0", - "bundled": true, - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", + "libnpmteam": { + "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^10.0.0" + } }, - "lru-cache": { - "version": "4.1.3", + "libnpmversion": { + "version": "1.2.0", "bundled": true, "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" } }, - "make-dir": { - "version": "1.3.0", + "lru-cache": { + "version": "6.0.0", "bundled": true, "dev": true, "requires": { - "pify": "^3.0.0" + "yallist": "^4.0.0" } }, "make-fetch-happen": { - "version": "4.0.1", + "version": "8.0.14", "bundled": true, "dev": true, "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^11.0.1", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^4.1.2", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" } }, - "meant": { - "version": "1.0.1", + "mime-db": { + "version": "1.47.0", "bundled": true, "dev": true }, - "mem": { - "version": "1.1.0", + "mime-types": { + "version": "2.1.30", "bundled": true, "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mime-db": "1.47.0" } }, - "mime-db": { - "version": "1.35.0", + "minimatch": { + "version": "3.0.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } }, - "mime-types": { - "version": "2.1.19", + "minipass": { + "version": "3.1.3", "bundled": true, "dev": true, "requires": { - "mime-db": "~1.35.0" + "yallist": "^4.0.0" } }, - "mimic-fn": { - "version": "1.2.0", + "minipass-collect": { + "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minipass": "^3.0.0" + } }, - "minimatch": { - "version": "3.0.4", + "minipass-fetch": { + "version": "1.3.3", "bundled": true, "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" } }, - "minimist": { - "version": "0.0.8", + "minipass-flush": { + "version": "1.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minipass": "^3.0.0" + } }, - "minipass": { - "version": "2.3.3", + "minipass-json-stream": { + "version": "1.0.1", "bundled": true, "dev": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "minizlib": { - "version": "1.1.1", + "minipass-pipeline": { + "version": "1.2.4", "bundled": true, "dev": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^3.0.0" } }, - "mississippi": { - "version": "3.0.0", + "minipass-sized": { + "version": "1.0.3", "bundled": true, "dev": true, "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "minipass": "^3.0.0" } }, - "mkdirp": { - "version": "0.5.1", + "minizlib": { + "version": "2.1.2", "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8" + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, - "move-concurrently": { - "version": "1.0.1", + "mkdirp": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "mkdirp-infer-owner": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" } }, "ms": { - "version": "2.1.1", + "version": "2.1.3", "bundled": true, "dev": true }, "mute-stream": { - "version": "0.0.7", + "version": "0.0.8", "bundled": true, "dev": true }, - "node-fetch-npm": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" - } - }, "node-gyp": { - "version": "3.8.0", + "version": "7.1.2", "bundled": true, "dev": true, "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "nopt": { - "version": "3.0.6", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - } + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" } }, "nopt": { - "version": "4.0.1", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1" } }, "normalize-package-data": { - "version": "2.4.0", + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" } }, "npm-audit-report": { - "version": "1.3.1", + "version": "2.1.4", "bundled": true, "dev": true, "requires": { - "cli-table3": "^0.5.0", - "console-control-strings": "^1.1.0" + "chalk": "^4.0.0" } }, "npm-bundled": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "npm-cache-filename": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "npm-install-checks": { - "version": "3.0.0", + "version": "1.1.2", "bundled": true, "dev": true, "requires": { - "semver": "^2.3.0 || 3.x || 4 || 5" + "npm-normalize-package-bin": "^1.0.1" } }, - "npm-lifecycle": { - "version": "2.1.0", + "npm-install-checks": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "byline": "^5.0.0", - "graceful-fs": "^4.1.11", - "node-gyp": "^3.8.0", - "resolve-from": "^4.0.0", - "slide": "^1.1.6", - "uid-number": "0.0.6", - "umask": "^1.1.0", - "which": "^1.3.1" + "semver": "^7.1.1" } }, - "npm-logical-tree": { - "version": "1.2.1", + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true }, "npm-package-arg": { - "version": "6.1.0", + "version": "8.1.2", "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^2.6.0", - "osenv": "^0.1.5", - "semver": "^5.5.0", + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", "validate-npm-package-name": "^3.0.0" } }, "npm-packlist": { - "version": "1.1.12", + "version": "2.1.5", "bundled": true, "dev": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npm-pick-manifest": { - "version": "2.1.0", + "version": "6.1.1", "bundled": true, "dev": true, "requires": { - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" } }, "npm-profile": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.1.2 || 2", - "make-fetch-happen": "^2.5.0 || 3 || 4" - } - }, - "npm-registry-client": { - "version": "8.6.0", + "version": "5.0.3", "bundled": true, "dev": true, "requires": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "npmlog": "2 || ^3.1.0 || ^4.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "safe-buffer": "^5.1.1", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3", - "ssri": "^5.2.4" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } + "npm-registry-fetch": "^10.0.0" } }, "npm-registry-fetch": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "figgy-pudding": "^2.0.1", - "lru-cache": "^4.1.2", - "make-fetch-happen": "^3.0.0", - "npm-package-arg": "^6.0.0", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - } - } - }, - "figgy-pudding": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "make-fetch-happen": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^10.0.4", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.0", - "lru-cache": "^4.1.2", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^3.0.1", - "ssri": "^5.2.4" - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true, - "dev": true - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "requires": { - "ip": "^1.1.4", - "smart-buffer": "^1.0.13" - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^4.1.0", - "socks": "^1.1.10" - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } - } - }, - "npm-run-path": { - "version": "2.0.2", + "version": "10.1.1", "bundled": true, "dev": true, "requires": { - "path-key": "^2.0.0" + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" } }, "npm-user-validate": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true, "dev": true }, @@ -4705,135 +4014,61 @@ } }, "opener": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", + "version": "1.5.2", "bundled": true, "dev": true }, - "package-json": { - "version": "4.0.1", + "p-map": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "aggregate-error": "^3.0.0" } }, "pacote": { - "version": "8.1.6", - "bundled": true, - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "cacache": "^11.0.2", - "get-stream": "^3.0.0", - "glob": "^7.1.2", - "lru-cache": "^4.1.3", - "make-fetch-happen": "^4.0.1", - "minimatch": "^3.0.4", - "minipass": "^2.3.3", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.4.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.10", - "npm-pick-manifest": "^2.1.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", - "promise-retry": "^1.1.1", - "protoduck": "^5.0.0", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.5.0", - "ssri": "^6.0.0", - "tar": "^4.4.3", - "unique-filename": "^1.1.0", - "which": "^1.3.0" - } - }, - "parallel-transform": { - "version": "1.1.0", + "version": "11.3.3", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^10.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "parse-conflict-json": { + "version": "1.1.1", "bundled": true, "dev": true, "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" } }, - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "bundled": true, "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", + "path-parse": { + "version": "1.0.6", "bundled": true, "dev": true }, @@ -4842,110 +4077,55 @@ "bundled": true, "dev": true }, - "pify": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "prepend-http": { - "version": "1.0.4", + "proc-log": { + "version": "1.0.0", "bundled": true, "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^1.0.0", - "retry": "^0.10.0" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "bundled": true, - "dev": true - } - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "proto-list": { - "version": "1.2.4", - "bundled": true, - "dev": true - }, - "protoduck": { - "version": "5.0.0", + "version": "2.0.1", "bundled": true, - "dev": true, - "requires": { - "genfun": "^4.0.1" - } + "dev": true }, - "prr": { + "promise-all-reject-late": { "version": "1.0.1", "bundled": true, "dev": true }, - "pseudomap": { - "version": "1.0.2", + "promise-call-limit": { + "version": "1.0.1", "bundled": true, "dev": true }, - "psl": { - "version": "1.1.29", + "promise-inflight": { + "version": "1.0.1", "bundled": true, "dev": true }, - "pump": { - "version": "3.0.0", + "promise-retry": { + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "err-code": "^2.0.2", + "retry": "^0.12.0" } }, - "pumpify": { - "version": "1.5.1", + "promzard": { + "version": "0.3.0", "bundled": true, "dev": true, "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } + "read": "1" } }, + "psl": { + "version": "1.8.0", + "bundled": true, + "dev": true + }, "punycode": { - "version": "1.4.1", + "version": "2.1.1", "bundled": true, "dev": true }, @@ -4959,38 +4139,6 @@ "bundled": true, "dev": true }, - "query-string": { - "version": "6.1.0", - "bundled": true, - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "strict-uri-encode": "^2.0.0" - } - }, - "qw": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true - } - } - }, "read": { "version": "1.0.7", "bundled": true, @@ -5000,53 +4148,32 @@ } }, "read-cmd-shim": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2" - } - }, - "read-installed": { - "version": "4.0.3", + "version": "2.0.0", "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "graceful-fs": "^4.1.2", - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "slide": "~1.1.3", - "util-extend": "^1.0.1" - } + "dev": true }, "read-package-json": { - "version": "2.0.13", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "json-parse-better-errors": "^1.0.1", - "normalize-package-data": "^2.0.0", - "slash": "^1.0.0" + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" } }, - "read-package-tree": { - "version": "5.2.1", + "read-package-json-fast": { + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "once": "^1.3.0", - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0" + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" } }, "readable-stream": { - "version": "2.3.6", + "version": "2.3.7", "bundled": true, "dev": true, "requires": { @@ -5060,7 +4187,7 @@ } }, "readdir-scoped-modules": { - "version": "1.0.2", + "version": "1.1.0", "bundled": true, "dev": true, "requires": { @@ -5070,25 +4197,8 @@ "once": "^1.3.0" } }, - "registry-auth-token": { - "version": "3.3.2", - "bundled": true, - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, "request": { - "version": "2.88.0", + "version": "2.88.2", "bundled": true, "dev": true, "requires": { @@ -5099,7 +4209,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", @@ -5109,25 +4219,30 @@ "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" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } } }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "4.0.0", + "resolve": { + "version": "1.20.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } }, "retry": { "version": "0.12.0", @@ -5135,19 +4250,11 @@ "dev": true }, "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "run-queue": { - "version": "1.0.3", + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "aproba": "^1.1.1" + "glob": "^7.1.3" } }, "safe-buffer": { @@ -5161,16 +4268,11 @@ "dev": true }, "semver": { - "version": "5.5.1", - "bundled": true, - "dev": true - }, - "semver-diff": { - "version": "2.1.0", + "version": "7.3.5", "bundled": true, "dev": true, "requires": { - "semver": "^5.0.3" + "lru-cache": "^6.0.0" } }, "set-blocking": { @@ -5178,114 +4280,37 @@ "bundled": true, "dev": true }, - "sha": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "readable-stream": "^2.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slash": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", + "version": "3.0.3", "bundled": true, "dev": true }, "smart-buffer": { - "version": "4.0.1", + "version": "4.1.0", "bundled": true, "dev": true }, "socks": { - "version": "2.2.0", + "version": "2.6.1", "bundled": true, "dev": true, "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.0.1" + "smart-buffer": "^4.1.0" } }, "socks-proxy-agent": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "~4.2.0", - "socks": "~2.2.0" - } - }, - "sorted-object": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "sorted-union-stream": { - "version": "2.1.3", + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "from2": "^1.3.0", - "stream-iterate": "^1.1.0" - }, - "dependencies": { - "from2": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "~1.1.10" - } - }, - "isarray": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "dev": true - } + "agent-base": "6", + "debug": "4", + "socks": "^2.3.3" } }, "spdx-correct": { - "version": "3.0.0", + "version": "3.1.1", "bundled": true, "dev": true, "requires": { @@ -5294,12 +4319,12 @@ } }, "spdx-exceptions": { - "version": "2.1.0", + "version": "2.3.0", "bundled": true, "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { @@ -5308,12 +4333,12 @@ } }, "spdx-license-ids": { - "version": "3.0.0", + "version": "3.0.7", "bundled": true, "dev": true }, "sshpk": { - "version": "1.14.2", + "version": "1.16.1", "bundled": true, "dev": true, "requires": { @@ -5329,41 +4354,13 @@ } }, "ssri": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-iterate": { - "version": "1.2.0", + "version": "8.0.1", "bundled": true, "dev": true, "requires": { - "readable-stream": "^2.1.5", - "stream-shift": "^1.0.0" + "minipass": "^3.1.1" } }, - "stream-shift": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "strict-uri-encode": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "string-width": { "version": "2.1.1", "bundled": true, @@ -5378,11 +4375,6 @@ "bundled": true, "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "strip-ansi": { "version": "4.0.0", "bundled": true, @@ -5393,109 +4385,50 @@ } } }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "stringify-package": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - }, - "dependencies": { - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true - } - } - }, - "term-size": { - "version": "1.2.0", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, "requires": { - "execa": "^0.7.0" + "safe-buffer": "~5.1.0" } }, - "text-table": { - "version": "0.2.0", + "stringify-package": { + "version": "1.0.1", "bundled": true, "dev": true }, - "through": { - "version": "2.3.8", + "strip-ansi": { + "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } }, - "through2": { - "version": "2.0.3", + "supports-color": { + "version": "7.2.0", "bundled": true, "dev": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "has-flag": "^4.0.0" } }, - "timed-out": { - "version": "4.0.1", + "tar": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", "bundled": true, "dev": true }, @@ -5504,14 +4437,10 @@ "bundled": true, "dev": true }, - "tough-cookie": { - "version": "2.4.3", + "treeverse": { + "version": "1.0.4", "bundled": true, - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } + "dev": true }, "tunnel-agent": { "version": "0.6.0", @@ -5524,26 +4453,18 @@ "tweetnacl": { "version": "0.14.5", "bundled": true, - "dev": true, - "optional": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true, - "dev": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, "dev": true }, - "umask": { - "version": "1.1.0", + "typedarray-to-buffer": { + "version": "3.1.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } }, "unique-filename": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "requires": { @@ -5551,54 +4472,19 @@ } }, "unique-slug": { - "version": "2.0.0", + "version": "2.0.2", "bundled": true, "dev": true, "requires": { "imurmurhash": "^0.1.4" } }, - "unique-string": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "unzip-response": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "update-notifier": { - "version": "2.5.0", - "bundled": true, - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "url-parse-lax": { - "version": "1.0.0", + "uri-js": { + "version": "4.4.1", "bundled": true, "dev": true, "requires": { - "prepend-http": "^1.0.1" + "punycode": "^2.1.0" } }, "util-deprecate": { @@ -5606,13 +4492,8 @@ "bundled": true, "dev": true }, - "util-extend": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, "uuid": { - "version": "3.3.2", + "version": "3.4.0", "bundled": true, "dev": true }, @@ -5643,6 +4524,11 @@ "extsprintf": "^1.2.0" } }, + "walk-up-path": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "wcwidth": { "version": "1.0.1", "bundled": true, @@ -5652,73 +4538,19 @@ } }, "which": { - "version": "1.3.1", + "version": "2.0.2", "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "widest-line": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, - "worker-farm": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", + "version": "1.1.3", "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -5727,141 +4559,32 @@ "dev": true }, "write-file-atomic": { - "version": "2.3.0", + "version": "3.0.3", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "xdg-basedir": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, "yallist": { - "version": "2.1.2", + "version": "4.0.0", "bundled": true, "dev": true - }, - "yargs": { - "version": "11.0.0", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - } - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } } } }, "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "isobject": "^3.0.1" + "path-key": "^3.0.0" } }, - "octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5871,115 +4594,80 @@ "wrappy": "1" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" + "mimic-fn": "^2.1.0" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true }, "p-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-1.0.0.tgz", - "integrity": "sha1-Yp0xcVAgnI/VCLoTdxPvS7kg6ds=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, "requires": { - "p-map": "^1.0.0" + "p-map": "^2.0.0" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" } }, "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true }, "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.5.0.tgz", + "integrity": "sha512-5Hwh4aVQSu6BEP+w2zKlVXtFAaYQe1qWuVADSgoeVlLjwe/Q/AMSoRR4MDeaAfu8llT+YNbEijWu/YF3m6avkg==", "dev": true, "requires": { + "@types/retry": "^0.12.0", "retry": "^0.12.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "parent-module": { @@ -5991,38 +4679,22 @@ "callsites": "^3.0.0" } }, - "parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", - "dev": true - }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { @@ -6032,9 +4704,9 @@ "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -6044,13 +4716,16 @@ "dev": true }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "dev": true }, "pify": { "version": "3.0.0", @@ -6066,81 +4741,63 @@ "requires": { "find-up": "^2.0.0", "load-json-file": "^4.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" }, "dependencies": { "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^2.0.0" } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "^3.0.0", + "p-locate": "^2.0.0", "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^1.1.0" } }, "p-try": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.1.0.tgz", - "integrity": "sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true } } }, - "please-upgrade-node": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", - "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "pump": { @@ -6159,10 +4816,10 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "rc": { @@ -6178,49 +4835,53 @@ } }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "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" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "redeyed": { @@ -6232,68 +4893,28 @@ "esprima": "~4.0.0" } }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "^1.2.8" } }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "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 - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -6304,46 +4925,43 @@ "dev": true }, "resolve-global": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-0.1.0.tgz", - "integrity": "sha1-j7As/Vt9sgEY6IYxHxWvlb0V+9k=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", "dev": true, "requires": { - "global-dirs": "^0.1.0" + "global-dirs": "^0.1.1" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, - "run-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", - "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", - "dev": true + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } }, "safe-buffer": { "version": "5.1.2", @@ -6351,200 +4969,101 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "semantic-release": { - "version": "15.13.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.3.tgz", - "integrity": "sha512-cax0xPPTtsxHlrty2HxhPql2TTvS74Ni2O8BzwFHxNY/mviVKEhI4OxHzBYJkpVxx1fMVj36+oH7IlP+SJtPNA==", + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-17.4.2.tgz", + "integrity": "sha512-TPLWuoe2L2DmgnQEh+OLWW5V1T+ZAa1xWuHXsuPAWEko0BqSdLPl+5+BlQ+D5Bp27S5gDJ1//Y1tgbmvUhnOCw==", "dev": true, "requires": { - "@semantic-release/commit-analyzer": "^6.1.0", + "@semantic-release/commit-analyzer": "^8.0.0", "@semantic-release/error": "^2.2.0", - "@semantic-release/github": "^5.1.0", - "@semantic-release/npm": "^5.0.5", - "@semantic-release/release-notes-generator": "^7.1.2", - "aggregate-error": "^2.0.0", - "cosmiconfig": "^5.0.1", + "@semantic-release/github": "^7.0.0", + "@semantic-release/npm": "^7.0.0", + "@semantic-release/release-notes-generator": "^9.0.0", + "aggregate-error": "^3.0.0", + "cosmiconfig": "^7.0.0", "debug": "^4.0.0", - "env-ci": "^3.0.0", - "execa": "^1.0.0", - "figures": "^2.0.0", - "find-versions": "^3.0.0", - "get-stream": "^4.0.0", + "env-ci": "^5.0.0", + "execa": "^5.0.0", + "figures": "^3.0.0", + "find-versions": "^4.0.0", + "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", - "hook-std": "^1.1.0", - "hosted-git-info": "^2.7.1", - "lodash": "^4.17.4", - "marked": "^0.6.0", - "marked-terminal": "^3.2.0", - "p-locate": "^3.0.0", - "p-reduce": "^1.0.0", - "read-pkg-up": "^4.0.0", - "resolve-from": "^4.0.0", - "semver": "^5.4.1", + "hook-std": "^2.0.0", + "hosted-git-info": "^4.0.0", + "lodash": "^4.17.15", + "marked": "^2.0.0", + "marked-terminal": "^4.1.1", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^7.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^3.1.1", "signale": "^1.2.1", - "yargs": "^12.0.0" + "yargs": "^16.2.0" }, "dependencies": { - "cosmiconfig": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", - "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.0", - "parse-json": "^4.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } } } }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "semver": "^6.3.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, + "semver-regex": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz", + "integrity": "sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==", + "dev": true + }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "signale": { @@ -6564,164 +5083,32 @@ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" } } } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "spawn-error-forwarder": { @@ -6771,47 +5158,38 @@ "through": "2" } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "requires": { - "through2": "^2.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "through2": "~2.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "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" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } } } @@ -6824,16 +5202,34 @@ "requires": { "duplexer2": "~0.1.0", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + } } }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "string_decoder": { @@ -6846,12 +5242,12 @@ } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } }, "strip-bom": { @@ -6860,16 +5256,10 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { + "strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-json-comments": { @@ -6888,19 +5278,55 @@ } }, "supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "dev": true, "requires": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "dependencies": { "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "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": "^4.0.0" + } + } + } + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true + }, + "tempy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "dev": true, + "requires": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true } } @@ -6918,55 +5344,21 @@ "dev": true }, "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "readable-stream": "3" } }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "traverse": { @@ -6975,150 +5367,50 @@ "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", "dev": true }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - }, "trim-off-newlines": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", "dev": true }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, "uglify-js": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz", - "integrity": "sha512-GpKo28q/7Bm5BcX9vOu4S46FwisbPbAmkkqPnGIpKvKTM96I85N6XHQV+k4I6FA2wxgLhcsSyHoNhzucwCflvA==", + "version": "3.13.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.4.tgz", + "integrity": "sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw==", "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } + "optional": true }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "crypto-random-string": "^2.0.0" } }, "universal-user-agent": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.3.tgz", - "integrity": "sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==", - "dev": true, - "requires": { - "os-name": "^3.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", - "dev": true - }, - "url-template": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, "util-deprecate": { @@ -7138,79 +5430,54 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "windows-release": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", - "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", - "dev": true, - "requires": { - "execa": "^1.0.0" - } - }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "color-convert": "^2.0.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "color-convert": { + "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": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "color-name": "~1.1.4" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "color-name": { + "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 } } }, @@ -7221,106 +5488,55 @@ "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index b19d991..08fa206 100644 --- a/package.json +++ b/package.json @@ -1,44 +1,39 @@ { - "name": "mw-eden", - "description": "Ethereum Development Environment from MaibornWolff GmbH", - "version": "0.1.0", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/MaibornWolff/eden" - }, - "scripts": { - "start:geth:pow": "cd geth-pow-docker && docker-compose up -d ", - "start:parity:poa": "cd parity-poa-docker && docker-compose up -d ", - "stop:geth:pow": "cd geth-pow-docker && docker-compose stop ", - "stop:parity:poa": "cd parity-poa-docker && docker-compose stop " - }, - "author": { - "name": "MaibornWolff GmbH", - "email": "eden@maibornwolff.de" - }, - "contributors": [ - "Frank Polster ", - "Florian Maier ", - "Simon Dosch ", - "Deniz Toprak " - ], - "release": { - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/github" - ] - }, - "devDependencies": { - "@commitlint/cli": "^7.5.2", - "@commitlint/config-conventional": "^7.5.0", - "husky": "^1.3.1", - "semantic-release": "^15.13.3" - }, - "husky": { - "hooks": { - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" - } - } + "name": "mw-eden", + "description": "Ethereum Development Environment and Network from MaibornWolff GmbH", + "version": "0.1.0", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/MaibornWolff/eden" + }, + "author": { + "name": "MaibornWolff GmbH", + "email": "eden@maibornwolff.de" + }, + "contributors": [ + "Frank Polster ", + "Florian Maier ", + "Simon Dosch ", + "Deniz Toprak ", + "Myron Rotter " + ], + "release": { + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/github" + ] + }, + "devDependencies": { + "@commitlint/cli": "^12.1.1", + "@commitlint/config-conventional": "^12.1.1", + "husky": "^6.0.0", + "semantic-release": "^17.4.2" + }, + "scripts": { + "prepare": "husky install", + "build": "chmod +x ./scripts/build.sh && ./scripts/build.sh", + "deploy": "chmod +x ./scripts/deploy.sh && ./scripts/deploy.sh" + } } diff --git a/parity-poa-docker/.env b/parity-poa-docker/.env index 8a991fe..6421343 100644 --- a/parity-poa-docker/.env +++ b/parity-poa-docker/.env @@ -1,2 +1,2 @@ -NETWORK_NAME=db-ethereum-poa -PARITY_VERSION=v1.9.3 \ No newline at end of file +NETWORK_NAME=parity-poa-docker +PARITY_VERSION=stable diff --git a/parity-poa-docker/.gitignore b/parity-poa-docker/.gitignore deleted file mode 100644 index f352819..0000000 --- a/parity-poa-docker/.gitignore +++ /dev/null @@ -1,60 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. -# Developer -todo.md - -parity/keys/authority.json - -coverage.json -/coverage - -# compiled output -/dist -/tmp -/out-tsc - -# yarn -yarn-error.log - -# releases -/releases - -# dependencies -/node_modules - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace -*.swp - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -testem.log -/typings - -# e2e -/e2e/*.js -/e2e/*.map - -# System Files -.DS_Store -Thumbs.db - - -keystore -pass diff --git a/parity-poa-docker/Makefile b/parity-poa-docker/Makefile new file mode 100644 index 0000000..c5c1342 --- /dev/null +++ b/parity-poa-docker/Makefile @@ -0,0 +1,27 @@ +.PHONY: build build-no-cache clean logs reset restart start start-attached stop + +build: + docker-compose build + +build-no-cache: + docker-compose build --no-cache + +clean: + docker-compose down --rmi all --volumes --remove-orphans + +logs: + docker-compose logs -f + +reset: stop clean + docker-compose up -d --build --force-recreate --remove-orphans + +restart: stop start + +start: + docker-compose up -d --remove-orphans + +start-attached: + docker-compose up --remove-orphans + +stop: + docker-compose down --volumes --remove-orphans diff --git a/parity-poa-docker/README.md b/parity-poa-docker/README.md index 7a04fbb..2f11129 100644 --- a/parity-poa-docker/README.md +++ b/parity-poa-docker/README.md @@ -1,48 +1,26 @@ -# Ethereum-PoA +# Local Parity PoA Network -Docker Ethereum Environment with Parity PoA network with 3 authorities and 3 members. +**Note that Parity is deprecated, however this setup is pinned to the latest stable parity version.** -######You only need to go through these steps, if you don't use prometheus-docker! +Docker Ethereum environment with Parity PoA network including 3 authorities, 3 members, 1 explorer, 1 monitor and its dashboard. -### Setup +## Quick start -0. Install [docker](https://docs.docker.com/engine/installation/) and [docker-compose](https://docs.docker.com/compose/install/) -1. Run `git clone git@github.com:MaibornWolff/eden.git && cd eden/parity-poa-docker` -2. Run `docker-compose up -d` - -### Access the Parity UI -Run `docker-compose logs | grep token=` to get an authenticated URL for the Parity UI. - -### Access the [ethstats](https://github.com/cubedro/eth-netstats) dashboard. -A nice dashboard is already configured and connected with all the nodes. -Find it at [http://127.0.0.1:3001](http://127.0.0.1:3001). - -### Access the [blockchain explorer](https://bitbucket.org/designisdead/blockchain-explorer.git) dashboard. -A nice Blockchain Explorer is already configured and connected with all the nodes. -Find it at [http://127.0.0.1:3002](http://127.0.0.1:3002). -Please point your Metamask to http://127.0.0.1:8545 to see the current state of your Blockchain. - -### Accounts -There is already an account with an empty password that has enough ether: +Setting up this network requires you to install Docker and Docker Compose. Clone the repository, and run `docker-compose up` or use Makefile commands from this directory. ``` -0x6B0c56d1Ad5144b4d37fa6e27DC9afd5C2435c3B +# Start the network +$ make start +# Restart the network +$ make restart +# Stop the network +$ make stop ``` -And another who is broke: -``` -0x00E3d1Aa965aAfd61217635E5f99f7c1e567978f -``` - -You may also want to change the list of prefunded accounts in `parity/config/chain.json`. - -Add JSON-formatted ethereum accounts to `parity/keys` and they will appear in the UI. - -### Access JSON RPC -Talk to JSON RPC at [http://127.0.0.1:8545](http://127.0.0.1:8545) with your favorite client. +The network should start and synchronize without any further configuration. The network always uses the latest stable version of Parity, the network is set up for PoA. -Be kind and send the poor an ether! +## JSON-RPC ``` -curl --data '{"jsonrpc":"2.0","method":"personal_sendTransaction","params":[{"from":"0x6B0c56d1Ad5144b4d37fa6e27DC9afd5C2435c3B","to":"0x00E3d1Aa965aAfd61217635E5f99f7c1e567978f","value":"0xde0b6b3a7640000"}, ""],"id":0}' -H "Content-Type: application/json" -X POST localhost:8545 +$ curl --data '{"jsonrpc":"2.0","method":"personal_sendTransaction","params":[{"from":"0x6B0c56d1Ad5144b4d37fa6e27DC9afd5C2435c3B","to":"0x00E3d1Aa965aAfd61217635E5f99f7c1e567978f","value":"0xde0b6b3a7640000"}, ""],"id":0}' -H "Content-Type: application/json" -X POST localhost:8545 ``` diff --git a/parity-poa-docker/authority.Dockerfile b/parity-poa-docker/authority.Dockerfile new file mode 100644 index 0000000..aaff8ca --- /dev/null +++ b/parity-poa-docker/authority.Dockerfile @@ -0,0 +1,18 @@ +ARG PARITY_VERSION=${PARITY_VERSION} +FROM parity/parity:${PARITY_VERSION} + +ARG NETWORK_NAME=${NETWORK_NAME} +ARG ID=${ID} + +USER root + +COPY --chown=parity ./parity/config /parity/config +COPY --chown=parity ./parity/keys /home/parity/.local/share/io.parity.ethereum/keys/${NETWORK_NAME} +COPY --chown=parity ./parity/authorities/authority${ID}.json /home/parity/.local/share/io.parity.ethereum/keys/${NETWORK_NAME}/authority.json +COPY --chown=parity ./parity/authorities/authority${ID}.pwd /parity/authority.pwd +COPY --chown=parity ./parity/node${ID}.network.key /home/parity/.local/share/io.parity.ethereum/network/key + +RUN mkdir -p /home/parity/.local/share/io.parity.ethereum/chains/${NETWORK_NAME}/db +RUN chown -R parity: /home/parity/.local/share/io.parity.ethereum + +USER parity diff --git a/parity-poa-docker/dashboard/ws_secret.json b/parity-poa-docker/dashboard/ws_secret.json index cfa6d1a..97ff85f 100644 --- a/parity-poa-docker/dashboard/ws_secret.json +++ b/parity-poa-docker/dashboard/ws_secret.json @@ -1 +1 @@ -["123"] +["123"] \ No newline at end of file diff --git a/parity-poa-docker/docker-compose.yml b/parity-poa-docker/docker-compose.yml index 7ae3c55..28ac5d4 100644 --- a/parity-poa-docker/docker-compose.yml +++ b/parity-poa-docker/docker-compose.yml @@ -1,129 +1,216 @@ -version: "2.1" +version: "3" + services: authority0: - image: parity/parity:${PARITY_VERSION} - command: - --config /parity/config/authority.toml - --engine-signer 0x00bd138abd70e2f00903268f3db08f2d25677c9e + image: maibornwolff/eden:parity-authority0 + hostname: authority0 + container_name: authority0 + build: + context: . + dockerfile: ./authority.Dockerfile + args: + PARITY_VERSION: ${PARITY_VERSION} + NETWORK_NAME: ${NETWORK_NAME} + ID: 0 volumes: - - ./parity/config:/parity/config:ro - - authorities0:/root/.local/share/io.parity.ethereum/ - - ./parity/authorities/authority0.json:/root/.local/share/io.parity.ethereum/keys/${NETWORK_NAME}/authority.json:ro - - ./parity/keys:/root/.local/share/io.parity.ethereum/keys/${NETWORK_NAME} - - ./parity/authorities/authority0.pwd:/parity/authority.pwd:ro - - ./parity/node0.network.key:/root/.local/share/io.parity.ethereum/network/key:ro + - authority0_volume:/home/parity/.local/share/io.parity.ethereum/chains/${NETWORK_NAME}/db + command: --config /parity/config/authority.toml + --engine-signer 0x00bd138abd70e2f00903268f3db08f2d25677c9e + --ws-interface 0.0.0.0 + --unsafe-expose + --jsonrpc-cors all + --no-persistent-txqueue + --fast-unlock + --tracing on + ports: + - 8545:8545 + - 8546:8546 + - 8180:8180 + - 30303:30303 networks: app_net: ipv4_address: 172.16.0.10 - authority1: - image: parity/parity:${PARITY_VERSION} - command: - --config /parity/config/authority.toml - --engine-signer 0x00aa39d30f0d20ff03a22ccfc30b7efbfca597c2 + image: maibornwolff/eden:parity-authority1 + hostname: authority1 + container_name: authority1 + build: + context: . + dockerfile: ./authority.Dockerfile + args: + PARITY_VERSION: ${PARITY_VERSION} + NETWORK_NAME: ${NETWORK_NAME} + ID: 1 volumes: - - ./parity/config:/parity/config:ro - - authorities1:/root/.local/share/io.parity.ethereum/ - - ./parity/authorities/authority1.json:/root/.local/share/io.parity.ethereum/keys/${NETWORK_NAME}/authority.json:ro - - ./parity/authorities/authority1.pwd:/parity/authority.pwd:ro - - ./parity/node1.network.key:/root/.local/share/io.parity.ethereum/network/key:ro + - authority1_volume:/home/parity/.local/share/io.parity.ethereum/chains/${NETWORK_NAME}/db + command: --config /parity/config/authority.toml + --engine-signer 0x00aa39d30f0d20ff03a22ccfc30b7efbfca597c2 + --ws-interface 0.0.0.0 + --unsafe-expose + --jsonrpc-cors all + --no-persistent-txqueue + --fast-unlock + --tracing on + ports: + - 8555:8545 + - 8556:8546 + - 6180:8180 + - 40303:30303 networks: app_net: ipv4_address: 172.16.0.11 - authority2: - image: parity/parity:${PARITY_VERSION} - command: - --config /parity/config/authority.toml - --engine-signer 0x002e28950558fbede1a9675cb113f0bd20912019 + image: maibornwolff/eden:parity-authority2 + hostname: authority2 + container_name: authority2 + build: + context: . + dockerfile: ./authority.Dockerfile + args: + PARITY_VERSION: ${PARITY_VERSION} + NETWORK_NAME: ${NETWORK_NAME} + ID: 2 volumes: - - ./parity/config:/parity/config:ro - - authorities2:/root/.local/share/io.parity.ethereum/ - - ./parity/authorities/authority2.json:/root/.local/share/io.parity.ethereum/keys/${NETWORK_NAME}/authority.json:ro - - ./parity/authorities/authority2.pwd:/parity/authority.pwd:ro - - ./parity/node2.network.key:/root/.local/share/io.parity.ethereum/network/key:ro + - authority2_volume:/home/parity/.local/share/io.parity.ethereum/chains/${NETWORK_NAME}/db + command: --config /parity/config/authority.toml + --engine-signer 0x002e28950558fbede1a9675cb113f0bd20912019 + --ws-interface 0.0.0.0 + --unsafe-expose + --jsonrpc-cors all + --no-persistent-txqueue + --fast-unlock + --tracing on + ports: + - 8565:8545 + - 8566:8546 + - 7180:8180 + - 50303:30303 networks: app_net: ipv4_address: 172.16.0.12 member0: - image: parity/parity:${PARITY_VERSION} - command: --config /parity/config/member.toml --ui-no-validation ui - volumes: - - ./parity/config:/parity/config:ro - - ./parity/keys:/root/.local/share/io.parity.ethereum/keys/${NETWORK_NAME} + image: maibornwolff/eden:parity-member0 + hostname: member0 + container_name: member0 + build: + context: . + dockerfile: ./member.Dockerfile + args: + PARITY_VERSION: ${PARITY_VERSION} + NETWORK_NAME: ${NETWORK_NAME} + command: --config /parity/config/member.toml + --ws-interface 0.0.0.0 + --unsafe-expose + --jsonrpc-cors all + --no-persistent-txqueue + --fast-unlock + --tracing on ports: - - 8180:8180 - - 8545:8545 - - 8546:8546 + - 8575:8545 + - 8576:8546 + - 9180:8180 networks: app_net: ipv4_address: 172.16.0.20 - member1: - image: parity/parity:${PARITY_VERSION} + image: maibornwolff/eden:parity-member1 + hostname: member1 + container_name: member1 + build: + context: . + dockerfile: ./member.Dockerfile + args: + PARITY_VERSION: ${PARITY_VERSION} + NETWORK_NAME: ${NETWORK_NAME} command: --config /parity/config/member.toml - volumes: - - ./parity/config:/parity/config:ro + --ws-interface 0.0.0.0 + --unsafe-expose + --jsonrpc-cors all + --no-persistent-txqueue + --fast-unlock + --tracing on + ports: + - 8585:8545 + - 8586:8546 + - 10180:8180 networks: app_net: ipv4_address: 172.16.0.21 - member2: - image: parity/parity:${PARITY_VERSION} + image: maibornwolff/eden:parity-member2 + hostname: member2 + container_name: member2 + build: + context: . + dockerfile: ./member.Dockerfile + args: + PARITY_VERSION: ${PARITY_VERSION} + NETWORK_NAME: ${NETWORK_NAME} command: --config /parity/config/member.toml - volumes: - - ./parity/config:/parity/config:ro + --ws-interface 0.0.0.0 + --unsafe-expose + --jsonrpc-cors all + --no-persistent-txqueue + --fast-unlock + --tracing on + ports: + - 8595:8545 + - 8596:8546 + - 20180:8180 networks: app_net: ipv4_address: 172.16.0.22 - monitor: image: buythewhale/ethstats_monitor + hostname: monitor + container_name: monitor volumes: - ./monitor/app.json:/home/ethnetintel/eth-net-intelligence-api/app.json:ro networks: app_net: ipv4_address: 172.16.0.100 - dashboard: image: buythewhale/ethstats + hostname: dashboard + container_name: dashboard volumes: - ./dashboard/ws_secret.json:/eth-netstats/ws_secret.json:ro ports: - - 3001:3000 + - 3000:3000 networks: app_net: ipv4_address: 172.16.0.200 - parity-explorer: - hostname: parity-explorer + lite-explorer: + hostname: lite-explorer depends_on: - - member0 + - authority0 + image: alethio/ethereum-lite-explorer + container_name: lite-explorer + environment: + - APP_NODE_URL=http://localhost:8545 ports: - - 3002:8080 - build: ./explorer - image: maibornwolff/eden:parity-explorer - container_name: parity-explorer + - 8800:80 networks: app_net: - ipv4_address: 172.16.0.201 + ipv4_address: 172.16.0.90 volumes: - authorities0: - authorities1: - authorities2: + authority0_volume: + authority1_volume: + authority2_volume: networks: app_net: driver: bridge ipam: driver: default config: - - subnet: 172.16.0.1/24 - gateway: 172.16.0.1 + - subnet: 172.16.0.1/24 + gateway: 172.16.0.1 diff --git a/parity-poa-docker/explorer/Dockerfile b/parity-poa-docker/explorer/Dockerfile deleted file mode 100644 index 2eb015f..0000000 --- a/parity-poa-docker/explorer/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM node:6.11-alpine - -WORKDIR "/opt" - -RUN apk add --update git make g++ && \ - git clone https://bitbucket.org/designisdead/blockchain-explorer.git - -WORKDIR "/opt/blockchain-explorer" -RUN git checkout c6e12f1 -RUN npm install - -CMD npm run start - -EXPOSE 8080 diff --git a/parity-poa-docker/member.Dockerfile b/parity-poa-docker/member.Dockerfile new file mode 100644 index 0000000..88f29e9 --- /dev/null +++ b/parity-poa-docker/member.Dockerfile @@ -0,0 +1,13 @@ +ARG PARITY_VERSION=${PARITY_VERSION} +FROM parity/parity:${PARITY_VERSION} + +ARG NETWORK_NAME=${NETWORK_NAME} + +USER root + +COPY --chown=parity ./parity/config /parity/config +COPY --chown=parity ./parity/keys /home/parity/.local/share/io.parity.ethereum/keys/${NETWORK_NAME} + +RUN chown -R parity: /home/parity/.local/share/io.parity.ethereum + +USER parity diff --git a/parity-poa-docker/monitor/app.json b/parity-poa-docker/monitor/app.json index aa183cf..9149279 100644 --- a/parity-poa-docker/monitor/app.json +++ b/parity-poa-docker/monitor/app.json @@ -1,6 +1,6 @@ [ { - "name": "authroity0", + "name": "authority0", "script": "app.js", "log_date_format": "YYYY-MM-DD HH:mm Z", "merge_logs": false, @@ -13,7 +13,7 @@ "RPC_HOST": "authority0", "RPC_PORT": "8545", "LISTENING_PORT": "30303", - "INSTANCE_NAME": "authroity0", + "INSTANCE_NAME": "authority0", "WS_SERVER": "ws://dashboard:3000", "WS_SECRET": "123", "VERBOSITY": 3 diff --git a/parity-poa-docker/parity/authorities/master0.pwd b/parity-poa-docker/parity/authorities/master0.pwd deleted file mode 100644 index fac0dd4..0000000 --- a/parity-poa-docker/parity/authorities/master0.pwd +++ /dev/null @@ -1 +0,0 @@ -"asdad" \ No newline at end of file diff --git a/parity-poa-docker/parity/config/authority.toml b/parity-poa-docker/parity/config/authority.toml index 0f2cf7c..96b4025 100644 --- a/parity-poa-docker/parity/config/authority.toml +++ b/parity-poa-docker/parity/config/authority.toml @@ -6,6 +6,7 @@ interface = "0.0.0.0" cors = ["all"] hosts = ["all"] apis = ["web3", "eth", "net", "parity", "traces", "rpc", "personal", "parity_accounts", "signer", "parity_set"] +port = 8545 [network] bootnodes = [ @@ -18,6 +19,17 @@ bootnodes = [ password = ["/parity/authority.pwd"] [mining] -reseal_on_txs = "none" -reseal_min_period = 0 -min_gas_price = 0 +reseal_on_txs = "all" +reseal_min_period = 1000 +reseal_max_period = 5000 +gas_floor_target = "0x165A0BC00" +tx_queue_size = 16384 +tx_queue_mem_limit = 4096 +tx_queue_per_sender = 16384 + +[websockets] +disable = false +port = 8546 +apis = ["pubsub","parity_pubsub","shh", "shh_pubsub", "web3", "eth", "net", "parity", "traces", "rpc", "personal", "parity_accounts", "signer", "parity_set"] +interface = "0.0.0.0" +hosts = ["all"] diff --git a/parity-poa-docker/parity/config/chain.json b/parity-poa-docker/parity/config/chain.json index f79c9de..511c5c8 100644 --- a/parity-poa-docker/parity/config/chain.json +++ b/parity-poa-docker/parity/config/chain.json @@ -1,29 +1,40 @@ { - "name": "db-ethereum-poa", + "name": "parity-poa-docker", "engine": { "authorityRound": { "params": { - "stepDuration": "1", + "stepDuration": "5", + "emptyStepsTransition": 1, + "maximumEmptySteps": 1000000000, "validators": { "list": [ "0x00Bd138aBD70e2F00903268F3Db08f2D25677C9e", - "0x00aa39d30f0d20ff03a22ccfc30b7efbfca597c2", + "0x00Aa39d30F0D20FF03a22cCfc30B7EfbFca597C2", "0x002e28950558fbede1a9675cb113f0bd20912019" ] - } + }, + "maximumUncleCount": 1000000000 } } }, "params": { "maximumExtraDataSize": "0x20", - "minGasLimit": "0x3938700", - "networkID": "0x1337", - "gasLimitBoundDivisor": "0x400" + "minGasLimit": "0x1388", + "networkID": "0x2323", + "gasLimitBoundDivisor": "0x400", + "eip155Transition": 0, + "eip140Transition": 0, + "eip211Transition": 0, + "eip214Transition": 0, + "eip658Transition": 0, + "wasmActivationTransition": 0, + "maxTransactionSize": 1000000000, + "maxCodeSize": 4294967295 }, "genesis": { "seal": { "authorityRound": { - "step": "0x00", + "step": "0x0", "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } }, @@ -35,48 +46,56 @@ "balance": "1", "builtin": { "name": "ecrecover", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } + "pricing": { "linear": { "base": 3000, "word": 0 } } } }, "0x0000000000000000000000000000000000000002": { "balance": "1", "builtin": { "name": "sha256", - "pricing": { - "linear": { - "base": 60, - "word": 12 - } - } + "pricing": { "linear": { "base": 60, "word": 12 } } } }, "0x0000000000000000000000000000000000000003": { "balance": "1", "builtin": { "name": "ripemd160", - "pricing": { - "linear": { - "base": 600, - "word": 120 - } - } + "pricing": { "linear": { "base": 600, "word": 120 } } } }, "0x0000000000000000000000000000000000000004": { "balance": "1", "builtin": { "name": "identity", - "pricing": { - "linear": { - "base": 15, - "word": 3 - } - } + "pricing": { "linear": { "base": 15, "word": 3 } } + } + }, + "0x0000000000000000000000000000000000000005": { + "builtin": { + "name": "modexp", + "activate_at": 5067000, + "pricing": { "modexp": { "divisor": 20 } } + } + }, + "0x0000000000000000000000000000000000000006": { + "builtin": { + "name": "alt_bn128_add", + "activate_at": 5067000, + "pricing": { "linear": { "base": 500, "word": 0 } } + } + }, + "0x0000000000000000000000000000000000000007": { + "builtin": { + "name": "alt_bn128_mul", + "activate_at": 5067000, + "pricing": { "linear": { "base": 40000, "word": 0 } } + } + }, + "0x0000000000000000000000000000000000000008": { + "builtin": { + "name": "alt_bn128_pairing", + "activate_at": 5067000, + "pricing": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 } } } }, "0x6B0c56d1Ad5144b4d37fa6e27DC9afd5C2435c3B": { @@ -141,6 +160,9 @@ }, "0x0075f4f4d7324fef36371610d03e1195894bf420": { "balance": "10000000000000000000000000000" + }, + "0x8Ef4fb866d28D87B61229C0740996aD8160A1ecf": { + "balance": "10000000000000000000000000000" } } } diff --git a/parity-poa-docker/parity/config/member.toml b/parity-poa-docker/parity/config/member.toml index 29b6029..0d5d34d 100644 --- a/parity-poa-docker/parity/config/member.toml +++ b/parity-poa-docker/parity/config/member.toml @@ -5,19 +5,13 @@ chain = "/parity/config/chain.json" interface = "0.0.0.0" cors = ["all"] hosts = ["all"] -apis = ["web3", "eth", "net", "parity", "traces", "rpc", "signer", "parity_set", "personal"] - -[websockets] -disable = false -port = 8546 -interface = "local" -origins = ["none"] -apis = ["web3", "eth", "net", "parity", "traces", "rpc"] -hosts = ["none"] +apis = ["web3", "eth", "net", "parity", "traces", "rpc", "personal", "parity_accounts", "signer", "parity_set"] [network] bootnodes = [ - "enode://147573f46fe9f5cc38fbe070089a31390baec5dd2827c8f2ef168833e4d0254fbee3969a02c5b9910ea5d5b23d86a6ed5eabcda17cc12007b7d9178b6c697aa5@172.16.0.10:30303" + "enode://147573f46fe9f5cc38fbe070089a31390baec5dd2827c8f2ef168833e4d0254fbee3969a02c5b9910ea5d5b23d86a6ed5eabcda17cc12007b7d9178b6c697aa5@172.16.0.10:30303", + "enode://1412ee9b9e23700e4a67a8fe3d8d02e10376b6e1cb748eaaf8aa60d4652b27872a8e1ad65bb31046438a5d3c1b71b00ec3ce0b4b42ac71464b28026a3d0b53af@172.16.0.11:30303", + "enode://9076c143a487aa163437a86f7d009f257f405c50bb2316800b9c9cc40e5a38fef5b414a47636ec38fdabc8a1872b563effa8574a7f8f85dc6bde465c368f1bf5@172.16.0.12:30303" ] [ui] diff --git a/parity-poa-docker/parity/keys/address_book.json b/parity-poa-docker/parity/keys/address_book.json index 0967ef4..9e26dfe 100644 --- a/parity-poa-docker/parity/keys/address_book.json +++ b/parity-poa-docker/parity/keys/address_book.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/geth-pow-docker/monitored-geth-client/devchain/geth.ipc b/parity-poa-docker/parity/keys/authority.json similarity index 100% rename from geth-pow-docker/monitored-geth-client/devchain/geth.ipc rename to parity-poa-docker/parity/keys/authority.json diff --git a/parity-poa-docker/parity/keys/dapps_history.json b/parity-poa-docker/parity/keys/dapps_history.json index 6d9f6e2..02d0961 100644 --- a/parity-poa-docker/parity/keys/dapps_history.json +++ b/parity-poa-docker/parity/keys/dapps_history.json @@ -1 +1 @@ -{"":{"last_accessed":1547054756},"file://":{"last_accessed":1520419592},"http://localhost:4200":{"last_accessed":1520351375}} +{"":{"last_accessed":1549106792}} \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh old mode 100644 new mode 100755 index fda5bdc..6281208 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,5 +1,9 @@ -#!/bin/sh -docker-compose -f geth-poa-docker/docker-compose.yml build -docker-compose -f geth-pow-docker/docker-compose.yml build -docker-compose -f parity-poa-docker/docker-compose.yml build -docker-compose -f toolbox-docker/docker-compose.yml build +#!/bin/bash + +docker-compose -f geth-poa-docker/docker-compose.yml build --no-cache --compress --progress plain --memory 6g +docker-compose -f geth-pow-docker/docker-compose.yml build --no-cache --compress --progress plain +docker-compose -f ipfs-docker/docker-compose.yml build --no-cache --compress --progress plain +docker-compose -f openethereum-docker/docker-compose.yml build --no-cache --compress --progress plain +docker-compose -f parity-poa-docker/docker-compose.yml build --no-cache --compress --progress plain +docker-compose -f skale-docker/docker-compose.yml build --no-cache --compress --progress plain +docker-compose -f toolbox-docker/docker-compose.yml build --no-cache --compress --progress plain diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 7bed8e9..b058320 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -1,6 +1,11 @@ -#!/bin/sh +#!/bin/bash + docker-compose -f geth-poa-docker/docker-compose.yml push docker-compose -f geth-pow-docker/docker-compose.yml push +docker-compose -f ipfs-docker/docker-compose.yml push +docker-compose -f openethereum-docker/docker-compose.yml push docker-compose -f parity-poa-docker/docker-compose.yml push +docker-compose -f skale-docker/docker-compose.yml push docker-compose -f toolbox-docker/docker-compose.yml push + npx semantic-release diff --git a/skale-docker/.gitignore b/skale-docker/.gitignore new file mode 100644 index 0000000..43327d9 --- /dev/null +++ b/skale-docker/.gitignore @@ -0,0 +1 @@ +/schain/data_dir diff --git a/skale-docker/Makefile b/skale-docker/Makefile new file mode 100644 index 0000000..fb3599e --- /dev/null +++ b/skale-docker/Makefile @@ -0,0 +1,33 @@ +.PHONY: build build-no-cache clean clean-schain-datadir copy-schain-config logs reset restart start start-attached stop + +build: copy-schain-config + docker-compose build + +build-no-cache: copy-schain-config + docker-compose build --no-cache + +clean: clean-schain-datadir + docker-compose down --rmi all --volumes --remove-orphans + +clean-schain-datadir: + rm -rf ./schain/data_dir && mkdir ./schain/data_dir + +copy-schain-config: + mkdir ./schain/data_dir && cp ./schain/config.json.in ./schain/data_dir/config.json + +logs: + docker-compose logs -f + +reset: stop clean + docker-compose up -d --build --force-recreate --remove-orphans + +restart: stop start + +start: + docker-compose up -d --remove-orphans + +start-attached: + docker-compose up --remove-orphans + +stop: + docker-compose down --volumes --remove-orphans diff --git a/skale-docker/README.md b/skale-docker/README.md new file mode 100644 index 0000000..f52430f --- /dev/null +++ b/skale-docker/README.md @@ -0,0 +1,25 @@ +# Single node SKALE environment + +A set of Docker images to create a local containerized single node environment for developing and testing Ethereum dApps on SKALE. + +The environment consists of the following parts: + +- 1 schain node +- 1 explorer + +## Quick start + +Setting up this development environment requires you to install Docker and Docker Compose. Clone the repository and use Makefile commands from this directory. + +``` +# Build images and setup volumes +$ make build +# Start the network +$ make start +# Stop the network +$ make stop +``` + +The development environment is set up for ethash proof-of-work. + +RPC is exposed at `http://localhost:1234`. Instead of the containerized explorer at `localhost:3000`, you can also use the official SKALE block explorer at `https://explorer.skale.network/`. diff --git a/skale-docker/docker-compose.yml b/skale-docker/docker-compose.yml new file mode 100644 index 0000000..5675fb2 --- /dev/null +++ b/skale-docker/docker-compose.yml @@ -0,0 +1,35 @@ +version: "3" + +services: + schain: + # docker run -v "/$(pwd)/data_dir:/data_dir" -p 0.0.0.0:1234:1234/tcp -p 0.0.0.0:1233:1233/tcp -e DATA_DIR=/data_dir -i -t skalenetwork/schain:3.4.7-develop.0 --http-port 1234 --ws-port 1233 --config /data_dir/config.json -d /data_dir --ipcpath /data_dir -v 3 --web3-trace --enable-debug-behavior-apis --aa no + image: skalenetwork/schain:3.6.1-develop.0 + hostname: schain + container_name: schain + volumes: + - ./schain/data_dir:/data_dir + environment: + - DATA_DIR=/data_dir + command: --http-port 1234 + --ws-port 1233 + --config /data_dir/config.json + -d /data_dir + --ipcpath /data_dir + -v 3 + --web3-trace + --enable-debug-behavior-apis + --aa no + ports: + - 0.0.0.0:1234:1234/tcp + - 0.0.0.0:1233:1233/tcp + + schain-explorer: + image: maibornwolff/eden:schain-explorer + hostname: schain-explorer + container_name: schain-explorer + build: + context: ./explorer + depends_on: + - schain + ports: + - 3000:3000 diff --git a/skale-docker/explorer/Dockerfile b/skale-docker/explorer/Dockerfile new file mode 100644 index 0000000..1fce315 --- /dev/null +++ b/skale-docker/explorer/Dockerfile @@ -0,0 +1,14 @@ +FROM node:14-alpine + +RUN apk add --update git + +RUN git clone https://github.com/skalenetwork/skale-demo.git /opt/skale-demo + +WORKDIR /opt/skale-demo/block-explorer +RUN git checkout d47fd33 + +RUN npm install + +CMD npm start + +EXPOSE 3000 diff --git a/skale-docker/schain/config.json.in b/skale-docker/schain/config.json.in new file mode 100644 index 0000000..e019e8b --- /dev/null +++ b/skale-docker/schain/config.json.in @@ -0,0 +1,87 @@ +{ + "sealEngine": "Ethash", + "params": { + "accountStartNonce": "0x00", + "homesteadForkBlock": "0x0", + "daoHardforkBlock": "0x0", + "EIP150ForkBlock": "0x00", + "EIP158ForkBlock": "0x00", + "byzantiumForkBlock": "0x0", + "constantinopleForkBlock": "0x0", + "networkID": "12313219", + "chainID": "0xd39d", + "maximumExtraDataSize": "0x20", + "tieBreakingGas": false, + "minGasLimit": "0xFFFFFFF", + "maxGasLimit": "0xFFFFFFF", + "gasLimitBoundDivisor": "0x0400", + "minimumDifficulty": "0x020000", + "difficultyBoundDivisor": "0x0800", + "durationLimit": "0x0d", + "blockReward": "0x4563918244F40000" + }, + "genesis": { + "nonce": "0x0000000000000042", + "difficulty": "0x020000", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000abc", + "author": "0x0000000000000000000000000000000000000001", + "timestamp": "0x00", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", + "gasLimit": "0xFFFFFFF" + }, + "accounts": { + "0000000000000000000000000000000000000001": { "precompiled": { "name": "ecrecover", "linear": { "base": 3000, "word": 0 } } }, + "0000000000000000000000000000000000000002": { "precompiled": { "name": "sha256", "linear": { "base": 60, "word": 12 } } }, + "0000000000000000000000000000000000000003": { "precompiled": { "name": "ripemd160", "linear": { "base": 600, "word": 120 } } }, + "0000000000000000000000000000000000000004": { "precompiled": { "name": "identity", "linear": { "base": 15, "word": 3 } } }, + "0000000000000000000000000000000000000005": { "precompiled": { "name": "modexp", "startingBlock" : "0x2dc6c0" } }, + "0000000000000000000000000000000000000006": { "precompiled": { "name": "alt_bn128_G1_add", "startingBlock" : "0x2dc6c0", "linear": { "base": 500, "word": 0 } } }, + "0000000000000000000000000000000000000007": { "precompiled": { "name": "alt_bn128_G1_mul", "startingBlock" : "0x2dc6c0", "linear": { "base": 40000, "word": 0 } } }, + "0000000000000000000000000000000000000008": { "precompiled": { "name": "alt_bn128_pairing_product", "startingBlock" : "0x2dc6c0" } }, + "000000000000000000000000000000000000000A": { "precompiled": { "name": "readChunk", "linear": { "base": 15, "word": 0 },"startingBlock" : "0x0"} }, + "000000000000000000000000000000000000000B": { "precompiled": { "name": "createFile", "linear": { "base": 15, "word": 0 },"startingBlock" : "0x0"} }, + "000000000000000000000000000000000000000C": { "precompiled": { "name": "uploadChunk", "linear": { "base": 15, "word": 0 },"startingBlock" : "0x0"} }, + "000000000000000000000000000000000000000D": { "precompiled": { "name": "getFileSize", "linear": { "base": 15, "word": 0 },"startingBlock" : "0x0"} }, + "000000000000000000000000000000000000000E": { "precompiled": { "name": "deleteFile", "linear": { "base": 15, "word": 0 },"startingBlock" : "0x0"} }, + "000000000000000000000000000000000000000F": { "precompiled": { "name": "createDirectory", "linear": { "base": 15, "word": 0 },"startingBlock" : "0x0"} }, + "0000000000000000000000000000000000000010": { "precompiled": { "name": "deleteDirectory", "linear": { "base": 15, "word": 0 },"startingBlock" : "0x0"} }, + "0x69362535ec535F0643cBf62D16aDeDCAf32Ee6F7": { "balance": "0", "nonce": "0", "storage": {"0x00":"0xffffffffff"}, "code":"0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063122f4fba146100b4578063373dedb4146100f157806361e46db51461011c57806362265a741461014557806379210e8e1461018257806381a8235a146101bf57806386c98506146101e85780639a9a559314610211578063a99100541461023a578063b294e6d114610263578063b57321221461028c575b600080fd5b3480156100c057600080fd5b506100db60048036036100d69190810190614449565b6102c9565b6040516100e89190614cd5565b60405180910390f35b3480156100fd57600080fd5b50610106610720565b6040516101139190614f90565b60405180910390f35b34801561012857600080fd5b50610143600480360361013e91908101906144de565b61072a565b005b34801561015157600080fd5b5061016c60048036036101679190810190614449565b610a1c565b6040516101799190614cb3565b60405180910390f35b34801561018e57600080fd5b506101a960048036036101a4919081019061455d565b610da0565b6040516101b69190614c96565b60405180910390f35b3480156101cb57600080fd5b506101e660048036036101e19190810190614449565b6110e7565b005b3480156101f457600080fd5b5061020f600480360361020a9190810190614449565b611203565b005b34801561021d57600080fd5b506102386004803603610233919081019061448a565b611735565b005b34801561024657600080fd5b50610261600480360361025c9190810190614449565b611d99565b005b34801561026f57600080fd5b5061028a60048036036102859190810190614449565b612553565b005b34801561029857600080fd5b506102b360048036036102ae9190810190614449565b612dd9565b6040516102c09190614f90565b60405180910390f35b60008060608060008060606102dc614073565b6102e58961302e565b80975081985050506102f6866134dd565b9450600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600192505b845183101561047457600084600101866001860381518110151561035e57fe5b906020019060200201516040518082805190602001908083835b60208310151561039d5780518252602082019150602081019050602083039250610378565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205414156103e05760009750610714565b8360020185600185038151811015156103f557fe5b906020019060200201516040518082805190602001908083835b602083101515610434578051825260208201915060208101905060208303925061040f565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020935082600101925061033e565b600185511161048357856104a0565b84600186510381518110151561049557fe5b906020019060200201515b9150600084600101836040518082805190602001908083835b6020831015156104de57805182526020820191506020810190506020830392506104b9565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205414156105215760009750610714565b83600001600185600101846040518082805190602001908083835b602083101515610561578051825260208201915060208101905060208303925061053c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054038154811015156105a257fe5b906000526020600020906005020160a06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106555780601f1061062a57610100808354040283529160200191610655565b820191906000526020600020905b81548152906001019060200180831161063857829003601f168201915b505050505081526020016001820160009054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820180548060200260200160405190810160405280929190818152602001828054801561070157602002820191906000526020600020906000905b82829054906101000a900460ff161515815260200190600101906020826000010492830192600103820291508084116106cb5790505b5050505050815250509050806060015197505b50505050505050919050565b6000600254905090565b600080600080600033945061073f85896136f0565b93506001846003015414151561078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190614ef0565b60405180910390fd5b6000621000008881151561079a57fe5b061480156107ab5750836002015487105b15156107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390614cf0565b60405180910390fd5b621000008785600201540310801561080a5750868460020154038651145b806108185750621000008651145b1515610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090614d50565b60405180910390fd5b6000151584600401621000008981151561086f57fe5b0481548110151561087c57fe5b90600052602060002090602091828204019190069054906101000a900460ff1615151415156108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d790614d30565b60405180910390fd5b60016020601f8851018115156108f257fe5b0401925060016020601f8a510181151561090857fe5b040191506040518581526020810160005b8481101561093a57806020028b015181602002830152806001019050610919565b50888460200282015260005b8581101561096c5780602002890151818660010101602002830152806001019050610946565b50602082858701602002606001846000600c600019f1925050508015156109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf90614e30565b60405180910390fd5b60018460040162100000898115156109dc57fe5b048154811015156109e957fe5b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055505050505050505050565b60606000606080600080610a2f8761302e565b8095508196505050610a40846134dd565b9250600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150600090505b8251811015610beb576000826001018483815181101515610aa557fe5b906020019060200201516040518082805190602001908083835b602083101515610ae45780518252602082019150602081019050602083039250610abf565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054111515610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190614df0565b60405180910390fd5b816002018382815181101515610b6c57fe5b906020019060200201516040518082805190602001908083835b602083101515610bab5780518252602082019150602081019050602083039250610b86565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390209150806001019050610a88565b81600001805480602002602001604051908101604052809291908181526020016000905b82821015610d90578382906000526020600020906005020160a06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ccc5780601f10610ca157610100808354040283529160200191610ccc565b820191906000526020600020905b815481529060010190602001808311610caf57829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015610d7857602002820191906000526020600020906000905b82829054906101000a900460ff16151581526020019060010190602082600001049283019260010382029150808411610d425790505b50505050508152505081526020019060010190610c0f565b5050505095505050505050919050565b610da86140a5565b60006060610db4614073565b6000806000610dc28a61302e565b8096508197505050610dd486866136f0565b60a06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e795780601f10610e4e57610100808354040283529160200191610e79565b820191906000526020600020905b815481529060010190602001808311610e5c57829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015610f2557602002820191906000526020600020906000905b82829054906101000a900460ff16151581526020019060010190602082600001049283019260010382029150808411610eef5790505b505050505081525050935060028460600151141515610f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7090614f70565b60405180910390fd5b621000008811158015610f8c5750600088115b1515610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490614d50565b60405180910390fd5b8360400151888a0111151515611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90614cf0565b60405180910390fd5b60016020601f87510181151561102a57fe5b040192506020601f890181151561103d57fe5b0491506040518681526020810160005b8581101561106e57806020028801518160200283015280600101905061104d565b508460200281018b81528a8160200152846020028a87600301602002856000600a600019f193505050508015156110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d190614e90565b60405180910390fd5b5050505050509392505050565b60008060008060003394506110fc85876136f0565b935060018460030154141515611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90614ef0565b60405180910390fd5b6001925083600401805490509150600090505b818110156111af5760001515846004018281548110151561117757fe5b90600052602060002090602091828204019190069054906101000a900460ff16151514156111a457600092505b80600101905061115a565b8215156111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890614e70565b60405180910390fd5b60028460030181905550505050505050565b600060606000806060600080611217614073565b6000600254141561122b5761122a613a34565b5b60008951111515611271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126890614df0565b60405180910390fd5b33975061127d896134dd565b9650600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209550600194505b865185101561142e5760008660010188600188038151811015156112e557fe5b906020019060200201516040518082805190602001908083835b60208310151561132457805182526020820191506020810190506020830392506112ff565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205411151561139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190614df0565b60405180910390fd5b8560020187600187038151811015156113af57fe5b906020019060200201516040518082805190602001908083835b6020831015156113ee57805182526020820191506020810190506020830392506113c9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902095508460010194506112c5565b600187511161143d578861145a565b86600188510381518110151561144f57fe5b906020019060200201515b9350600086600101856040518082805190602001908083835b6020831015156114985780518252602082019150602081019050602083039250611473565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205414151561150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590614f30565b60405180910390fd5b61151784613a4a565b1515611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90614e10565b60405180910390fd5b60016020601f8b510181151561156a57fe5b040192506040518881526020810160005b8581101561159c57806020028c01518160200283015280600101905061157b565b5060208260208702604001846000600f600019f1935050508115156115f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ed90614d10565b60405180910390fd5b8381600001819052506000816020019015159081151581525050856000018190806001815401808255809150509060018203906000526020600020906005020160009091929091909150600082015181600001908051906020019061165c9291906140cb565b5060208201518160010160006101000a81548160ff021916908315150217905550604082015181600201556060820151816003015560808201518160040190805190602001906116ad92919061414b565b50505050856000018054905086600101856040518082805190602001908083835b6020831015156116f357805182526020820191506020810190506020830392506116ce565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902081905550505050505050505050565b60006060600080606060008060606000600254141561175757611756613a34565b5b3397506305f5e10089111515156117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90614ed0565b60405180910390fd5b6002546000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a011115151561182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190614f10565b60405180910390fd5b6118338a6134dd565b9650600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209550600194505b86518510156119e457600086600101886001880381518110151561189b57fe5b906020019060200201516040518082805190602001908083835b6020831015156118da57805182526020820191506020810190506020830392506118b5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054111515611950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194790614df0565b60405180910390fd5b85600201876001870381518110151561196557fe5b906020019060200201516040518082805190602001908083835b6020831015156119a4578051825260208201915060208101905060208303925061197f565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020955084600101945061187b565b60018751116119f35789611a10565b866001885103815181101515611a0557fe5b906020019060200201515b9350600086600101856040518082805190602001908083835b602083101515611a4e5780518252602082019150602081019050602083039250611a29565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054141515611ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abb90614f30565b60405180910390fd5b611acd84613a4a565b1515611b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0590614eb0565b60405180910390fd5b60016020601f8c5101811515611b2057fe5b040192506040518881526020810160005b85811015611b5257806020028d015181602002830152806001019050611b31565b508a6020860282015260208260208702604001846000600b600019f193505050811515611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90614f50565b60405180910390fd5b621000006001621000008b0103811515611bca57fe5b04604051908082528060200260200182016040528015611bf95781602001602082028038833980820191505090505b5090508560000160a0604051908101604052808681526020016001151581526020018b81526020016001815260200183815250908060018154018082558091505090600182039060005260206000209060050201600090919290919091506000820151816000019080519060200190611c739291906140cb565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155606082015181600301556080820151816004019080519060200190611cc492919061414b565b50505050856000018054905086600101856040518082805190602001908083835b602083101515611d0a5780518252602082019150602081019050602083039250611ce5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902081905550886000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050505050505050505050565b6000611da3614073565b60008060606000806000611db5614073565b339850611dc2898b6136f0565b60a06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e675780601f10611e3c57610100808354040283529160200191611e67565b820191906000526020600020905b815481529060010190602001808311611e4a57829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015611f1357602002820191906000526020600020906000905b82829054906101000a900460ff16151581526020019060010190602082600001049283019260010382029150808411611edd5790505b50505050508152505097506000886060015114151515611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90614d70565b60405180910390fd5b60016020601f8c5101811515611f7a57fe5b040196506040518981526020810160005b89811015611fac57806020028d015181602002830152806001019050611f8b565b5060208260208b02604001846000600e600019f197505050851515612006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffd90614db0565b60405180910390fd5b61200f8a6134dd565b9450600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600192505b84518310156120f45783600201856001850381518110151561207557fe5b906020019060200201516040518082805190602001908083835b6020831015156120b4578051825260208201915060208101905060208303925061208f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390209350826001019250612057565b60018460010189600001516040518082805190602001908083835b602083101515612134578051825260208201915060208101905060208303925061210f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205403915083600001600185600001805490500381548110151561218657fe5b906000526020600020906005020160a06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122395780601f1061220e57610100808354040283529160200191612239565b820191906000526020600020905b81548152906001019060200180831161221c57829003601f168201915b505050505081526020016001820160009054906101000a900460ff161515151581526020016002820154815260200160038201548152602001600482018054806020026020016040519081016040528092919081815260200182805480156122e557602002820191906000526020600020906000905b82829054906101000a900460ff161515815260200190600101906020826000010492830192600103820291508084116122af5790505b505050505081525050905080846000018381548110151561230257fe5b9060005260206000209060050201600082015181600001908051906020019061232c9291906140cb565b5060208201518160010160006101000a81548160ff0219169083151502179055506040820151816002015560608201518160030155608082015181600401908051906020019061237d92919061414b565b509050508360000180548091906001900361239891906141f1565b508360010188600001516040518082805190602001908083835b6020831015156123d757805182526020820191506020810190506020830392506123b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548460010182600001516040518082805190602001908083835b6020831015156124495780518252602082019150602081019050602083039250612424565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208190555060008460010189600001516040518082805190602001908083835b6020831015156124c0578051825260208201915060208101905060208303925061249b565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208190555087604001516000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555050505050505050505050565b600060606000806060600080612567614073565b339750612573896134dd565b9650600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209550600194505b86518510156127245760008660010188600188038151811015156125db57fe5b906020019060200201516040518082805190602001908083835b60208310151561261a57805182526020820191506020810190506020830392506125f5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054111515612690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268790614df0565b60405180910390fd5b8560020187600187038151811015156126a557fe5b906020019060200201516040518082805190602001908083835b6020831015156126e457805182526020820191506020810190506020830392506126bf565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902095508460010194506125bb565b60018751116127335788612750565b86600188510381518110151561274557fe5b906020019060200201515b9350600086600101856040518082805190602001908083835b60208310151561278e5780518252602082019150602081019050602083039250612769565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054111515612804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fb90614df0565b60405180910390fd5b600086600201856040518082805190602001908083835b602083101515612840578051825260208201915060208101905060208303925061281b565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600001805490501415156128bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b390614e50565b60405180910390fd5b60016020601f8b51018115156128ce57fe5b040192506040518881526020810160005b8581101561290057806020028c0151816020028301528060010190506128df565b50602082602087026040018460006010600019f19350505081151561295a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295190614d90565b60405180910390fd5b85600001600187600001805490500381548110151561297557fe5b906000526020600020906005020160a06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a285780601f106129fd57610100808354040283529160200191612a28565b820191906000526020600020905b815481529060010190602001808311612a0b57829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015612ad457602002820191906000526020600020906000905b82829054906101000a900460ff16151581526020019060010190602082600001049283019260010382029150808411612a9e5790505b50505050508152505090508086600001600188600101876040518082805190602001908083835b602083101515612b205780518252602082019150602081019050602083039250612afb565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205403815481101515612b6157fe5b90600052602060002090600502016000820151816000019080519060200190612b8b9291906140cb565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155606082015181600301556080820151816004019080519060200190612bdc92919061414b565b5090505085600101846040518082805190602001908083835b602083101515612c1a5780518252602082019150602081019050602083039250612bf5565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020548660010182600001516040518082805190602001908083835b602083101515612c8c5780518252602082019150602081019050602083039250612c67565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902081905550600086600101856040518082805190602001908083835b602083101515612cff5780518252602082019150602081019050602083039250612cda565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208190555085600001805480919060019003612d4d91906141f1565b5085600201846040518082805190602001908083835b602083101515612d885780518252602082019150602081019050602083039250612d63565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008082016000612dcc9190614223565b5050505050505050505050565b6000806060612de6614073565b600080612df28761302e565b8095508196505050612e0485856136f0565b60a06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612ea95780601f10612e7e57610100808354040283529160200191612ea9565b820191906000526020600020905b815481529060010190602001808311612e8c57829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152602001600282015481526020016003820154815260200160048201805480602002602001604051908101604052809291908181526020018280548015612f5557602002820191906000526020600020906000905b82829054906101000a900460ff16151581526020019060010190602082600001049283019260010382029150808411612f1f5790505b5050505050815250509250600183606001511480612f77575060028360600151145b1515612fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612faf90614ef0565b60405180910390fd5b60016020601f865101811515612fca57fe5b040191506040518581526020810160005b84811015612ffc578060200287015181602002830152806001019050612fdb565b5060208260208602602001846000600d600019f1925081519750505080151561302457600080fd5b5050505050919050565b6000606060006060600080600080600060289650868a51111515613087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307e90614dd0565b60405180910390fd5b866040519080825280601f01601f1916602001820160405280156130ba5781602001602082028038833980820191505090505b509550600094505b8685101561316e5789858151811015156130d857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002868681518110151561313157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535084806001019550506130c2565b60009350600094505b868510156132f857858581518110151561318d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900492506030831015801561320f575060398311155b806132285750604183101580156132275750605a8311155b5b80613241575060618310158015613240575060668311155b5b1515613282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327990614dd0565b60405180910390fd5b60308310158015613294575060398311155b156132a55760308303601085020193505b604183101580156132b75750605a8311155b156132c85760378303601085020193505b606183101580156132da575060668311155b156132eb5760578303601085020193505b8480600101955050613177565b8398507f2f000000000000000000000000000000000000000000000000000000000000008a8881518110151561332a57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156133d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d090614dd0565b60405180910390fd5b6001878b5103039150816040519080825280601f01601f1916602001820160405280156134155781602001602082028038833980820191505090505b509750600094505b818510156134d1578960018887010181518110151561343857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002905080888681518110151561349457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350848060010195505061341d565b50505050505050915091565b60606134e7614247565b6134ef614247565b606060006134fc86613d83565b935061353c6040805190810160405280600181526020017f2f00000000000000000000000000000000000000000000000000000000000000815250613d83565b925060016135538486613db190919063ffffffff16565b0160405190808252806020026020018201604052801561358757816020015b60608152602001906001900390816135725790505b509150600090505b81518110156135db576135b36135ae8486613e2890919063ffffffff16565b613e42565b82828151811015156135c157fe5b90602001906020020181905250808060010191505061358f565b60008260018451038151811015156135ef57fe5b906020019060200201515114156136605781600183510381518110151561361257fe5b9060200190602002016060815250600182510360405190808252806020026020018201604052801561365857816020015b60608152602001906001900390816136435790505b509450613699565b815160405190808252806020026020018201604052801561369557816020015b60608152602001906001900390816136805790505b5094505b600090505b84518110156136e75781818151811015156136b557fe5b9060200190602002015185828151811015156136cd57fe5b90602001906020020181905250808060010191505061369e565b50505050919050565b6000606060008060606000613704876134dd565b9450600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600192505b84518310156138b557600084600101866001860381518110151561376c57fe5b906020019060200201516040518082805190602001908083835b6020831015156137ab5780518252602082019150602081019050602083039250613786565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054111515613821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161381890614df0565b60405180910390fd5b83600201856001850381518110151561383657fe5b906020019060200201516040518082805190602001908083835b6020831015156138755780518252602082019150602081019050602083039250613850565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020935082600101925061374c565b60018551116138c457866138e1565b8460018651038151811015156138d657fe5b906020019060200201515b9150600084600101836040518082805190602001908083835b60208310151561391f57805182526020820191506020810190506020830392506138fa565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054111515613995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161398c90614df0565b60405180910390fd5b83600001600185600101846040518082805190602001908083835b6020831015156139d557805182526020820191506020810190506020830392506139b0565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205403815481101515613a1657fe5b90600052602060002090600502019050809550505050505092915050565b6000806000905080549150816002819055505050565b60008060405160200180807f2e2e00000000000000000000000000000000000000000000000000000000000081525060020190506040516020818303038152906040526040518082805190602001908083835b602083101515613ac25780518252602082019150602081019050602083039250613a9d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916836040516020018082805190602001908083835b602083101515613b2c5780518252602082019150602081019050602083039250613b07565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515613b955780518252602082019150602081019050602083039250613b70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161480613d48575060405160200180807f2e0000000000000000000000000000000000000000000000000000000000000081525060010190506040516020818303038152906040526040518082805190602001908083835b602083101515613c425780518252602082019150602081019050602083039250613c1d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916836040516020018082805190602001908083835b602083101515613cac5780518252602082019150602081019050602083039250613c87565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515613d155780518252602082019150602081019050602083039250613cf0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b80613d54575060008351145b15613d625760009150613d7d565b8251905060ff811115613d785760009150613d7d565b600191505b50919050565b613d8b614247565b600060208301905060408051908101604052808451815260200182815250915050919050565b6000808260000151613dd58560000151866020015186600001518760200151613ea4565b0190505b836000015184602001510181111515613e215781806001019250508260000151613e19856020015183038660000151038386600001518760200151613ea4565b019050613dd9565b5092915050565b613e30614247565b613e3b838383613f8a565b5092915050565b606080600083600001516040519080825280601f01601f191660200182016040528015613e7e5781602001602082028038833980820191505090505b509150602082019050613e9a8185602001518660000151614028565b8192505050919050565b60008060008060008060008060008b97508c8b111515613f745760208b111515613f2e5760018b60200360080260020a03196001029550858a511694508a8d8d010393508588511692505b84600019168360001916141515613f26578388101515613f13578c8c019850613f7a565b8780600101985050858851169250613eef565b879850613f7a565b8a8a209150600096505b8a8d0387111515613f73578a88209050806000191682600019161415613f6057879850613f7a565b6001880197508680600101975050613f38565b5b8c8c0198505b5050505050505050949350505050565b613f92614247565b6000613fb08560000151866020015186600001518760200151613ea4565b90508460200151836020018181525050846020015181038360000181815250508460000151856020015101811415613ff257600085600001818152505061401d565b8360000151836000015101856000018181510391508181525050836000015181018560200181815250505b829150509392505050565b60005b602082101515614050578251845260208401935060208301925060208203915061402b565b6001826020036101000a0390508019835116818551168181178652505050505050565b60a060405190810160405280606081526020016000151581526020016000815260200160008152602001606081525090565b621000006040519081016040528061800090602082028038833980820191505090505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061410c57805160ff191683800117855561413a565b8280016001018555821561413a579182015b8281111561413957825182559160200191906001019061411e565b5b5090506141479190614261565b5090565b82805482825590600052602060002090601f016020900481019282156141e05791602002820160005b838211156141b157835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302614174565b80156141de5782816101000a81549060ff02191690556001016020816000010492830192600103026141b1565b505b5090506141ed9190614286565b5090565b81548183558181111561421e5760050281600502836000526020600020918201910161421d91906142b6565b5b505050565b508054600082556005029060005260206000209081019061424491906142b6565b50565b604080519081016040528060008152602001600081525090565b61428391905b8082111561427f576000816000905550600101614267565b5090565b90565b6142b391905b808211156142af57600081816101000a81549060ff02191690555060010161428c565b5090565b90565b61431691905b8082111561431257600080820160006142d59190614319565b6001820160006101000a81549060ff0219169055600282016000905560038201600090556004820160006143099190614361565b506005016142bc565b5090565b90565b50805460018160011615610100020316600290046000825580601f1061433f575061435e565b601f01602090049060005260206000209081019061435d9190614261565b5b50565b50805460008255601f0160209004906000526020600020908101906143869190614261565b50565b600082601f830112151561439c57600080fd5b81356143af6143aa82614fd8565b614fab565b915080825260208301602083018583830111156143cb57600080fd5b6143d68382846150dc565b50505092915050565b600082601f83011215156143f257600080fd5b813561440561440082615004565b614fab565b9150808252602083016020830185838301111561442157600080fd5b61442c8382846150dc565b50505092915050565b600061444182356150d2565b905092915050565b60006020828403121561445b57600080fd5b600082013567ffffffffffffffff81111561447557600080fd5b614481848285016143df565b91505092915050565b6000806040838503121561449d57600080fd5b600083013567ffffffffffffffff8111156144b757600080fd5b6144c3858286016143df565b92505060206144d485828601614435565b9150509250929050565b6000806000606084860312156144f357600080fd5b600084013567ffffffffffffffff81111561450d57600080fd5b614519868287016143df565b935050602061452a86828701614435565b925050604084013567ffffffffffffffff81111561454757600080fd5b61455386828701614389565b9150509250925092565b60008060006060848603121561457257600080fd5b600084013567ffffffffffffffff81111561458c57600080fd5b614598868287016143df565b93505060206145a986828701614435565b92505060406145ba86828701614435565b9150509250925092565b60006145cf82615054565b8084526020840193506145e183615030565b60005b82811015614613576145f78683516146d8565b61460082615081565b91506020860195506001810190506145e4565b50849250505092915050565b6146288161505f565b6146318261503d565b60005b82811015614663576146478583516146e7565b6146508261508e565b9150602085019450600181019050614634565b5050505050565b60006146758261506b565b8084526020840193508360208202850161468e85615047565b60005b848110156146c75783830388526146a9838351614c0a565b92506146b48261509b565b9150602088019750600181019050614691565b508196508694505050505092915050565b6146e1816150a8565b82525050565b6146f0816150b4565b82525050565b6146ff816150be565b82525050565b600061471082615076565b8084526147248160208601602086016150eb565b61472d8161511e565b602085010191505092915050565b6000601882527f496e636f7272656374206368756e6b20706f736974696f6e00000000000000006020830152604082019050919050565b6000601582527f4469726563746f7279206e6f74206372656174656400000000000000000000006020830152604082019050919050565b6000601982527f4368756e6b20697320616c72656164792075706c6f61646564000000000000006020830152604082019050919050565b6000601682527f496e636f7272656374206368756e6b206c656e677468000000000000000000006020830152604082019050919050565b6000600f82527f46696c65206e6f742065786973747300000000000000000000000000000000006020830152604082019050919050565b6000601882527f4469726563746f7279206973206e6f742064656c6574656400000000000000006020830152604082019050919050565b6000601082527f46696c65206e6f742064656c65746564000000000000000000000000000000006020830152604082019050919050565b6000601382527f496e76616c69642073746f7261676550617468000000000000000000000000006020830152604082019050919050565b6000600c82527f496e76616c6964207061746800000000000000000000000000000000000000006020830152604082019050919050565b6000601682527f496e76616c6964206469726563746f7279206e616d65000000000000000000006020830152604082019050919050565b6000601582527f4368756e6b207761736e27742075706c6f6164656400000000000000000000006020830152604082019050919050565b6000601682527f4469726563746f7279206973206e6f7420656d707479000000000000000000006020830152604082019050919050565b6000602382527f46696c65206861736e2774206265656e2075706c6f6164656420636f7272656360208301527f746c7900000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601182527f4368756e6b207761736e277420726561640000000000000000000000000000006020830152604082019050919050565b6000601882527f46696c656e616d652073686f756c64206265203c2032353600000000000000006020830152604082019050919050565b6000601f82527f46696c652073686f756c64206265206c657373207468616e20313030204d42006020830152604082019050919050565b6000600e82527f46696c65206e6f7420666f756e640000000000000000000000000000000000006020830152604082019050919050565b6000602882527f4e6f7420656e6f756768206672656520737061636520696e207468652046696c60208301527f6573746f726167650000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601882527f46696c65206f72206469726563746f72792065786973747300000000000000006020830152604082019050919050565b6000601082527f46696c65206e6f742063726561746564000000000000000000000000000000006020830152604082019050919050565b6000601982527f46696c65206861736e2774206265656e2075706c6f61646564000000000000006020830152604082019050919050565b600060a0830160008301518482036000860152614c278282614705565b9150506020830151614c3c60208601826146d8565b506040830151614c4f6040860182614c87565b506060830151614c6260608601826146f6565b5060808301518482036080860152614c7a82826145c4565b9150508091505092915050565b614c90816150c8565b82525050565b60006210000082019050614cad600083018461461f565b92915050565b60006020820190508181036000830152614ccd818461466a565b905092915050565b6000602082019050614cea60008301846146f6565b92915050565b60006020820190508181036000830152614d098161473b565b9050919050565b60006020820190508181036000830152614d2981614772565b9050919050565b60006020820190508181036000830152614d49816147a9565b9050919050565b60006020820190508181036000830152614d69816147e0565b9050919050565b60006020820190508181036000830152614d8981614817565b9050919050565b60006020820190508181036000830152614da98161484e565b9050919050565b60006020820190508181036000830152614dc981614885565b9050919050565b60006020820190508181036000830152614de9816148bc565b9050919050565b60006020820190508181036000830152614e09816148f3565b9050919050565b60006020820190508181036000830152614e298161492a565b9050919050565b60006020820190508181036000830152614e4981614961565b9050919050565b60006020820190508181036000830152614e6981614998565b9050919050565b60006020820190508181036000830152614e89816149cf565b9050919050565b60006020820190508181036000830152614ea981614a2c565b9050919050565b60006020820190508181036000830152614ec981614a63565b9050919050565b60006020820190508181036000830152614ee981614a9a565b9050919050565b60006020820190508181036000830152614f0981614ad1565b9050919050565b60006020820190508181036000830152614f2981614b08565b9050919050565b60006020820190508181036000830152614f4981614b65565b9050919050565b60006020820190508181036000830152614f6981614b9c565b9050919050565b60006020820190508181036000830152614f8981614bd3565b9050919050565b6000602082019050614fa56000830184614c87565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614fce57600080fd5b8060405250919050565b600067ffffffffffffffff821115614fef57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561501b57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000819050919050565b6000602082019050919050565b600081519050919050565b60006180009050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156151095780820151818401526020810190506150ee565b83811115615118576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820600d61d84912a53186875494b72fd8a4402b86fd49215357569e8ad147b500a66c6578706572696d656e74616cf50037"}, + "0xD2001000000000000000000000000000000000D2": { + "balance": "0", + "code": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806315cd7a2d1461005c57806367091a01146100ec57806383e781fe1461012f575b600080fd5b34801561006857600080fd5b50610071610186565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b1578082015181840152602081019050610096565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100f857600080fd5b5061012d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610228565b005b34801561013b57600080fd5b506101446102c6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561021e5780601f106101f35761010080835404028352916020019161021e565b820191906000526020600020905b81548152906001019060200180831161020157829003601f168201915b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820aa8a8f7acb5f3c11a368be12aff83dae4b5d57403733a59c93fb06021de6d0ac0029", + "storage": { + "0x0": "0xd2c5b39B4e735C17612Bb5a08FD024ccc5dBCb23", + "0x1": "0x62656175746966756c2d756e756b616c68616900000000000000000000000026" + }, + "nonce": "0" + }, + "0x5112cE768917E907191557D7E9521c2590Cdd3A0": {"balance": "10000000000000000000000000"}, + "0x6d80aAC61F6d92c7F4A3c412850474ba963B698E": {"balance": "10000000000000000000000000"} + }, + "skaleConfig": { + "nodeInfo": { + "nodeName": "Node1", + "nodeID": 1112, + "bindIP": "0.0.0.0", + "basePort": 1231, + "logLevel": "debug", + "logLevelProposal": "trace", + "snapshotIntervalSec": 0, + "rotateAfterBlock": 0, + "ecdsaKeyName": "" + }, + "sChain": + { + "schainName": "TestChain", + "schainID": 1, + "schainOwner": "0x6d80aAC61F6d92c7F4A3c412850474ba963B698E", + "freeContractDeployment": true, + "storageLimit": 999888777, + "emptyBlockIntervalMs": 3000, + "nodes": [ + { "nodeID": 1112, "ip": "127.0.0.1", "basePort": 1231, "schainIndex" : 1, "publicKey": "" } + ] + } + } +} diff --git a/toolbox-docker/Dockerfile b/toolbox-docker/Dockerfile deleted file mode 100644 index 208235f..0000000 --- a/toolbox-docker/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM luongnguyen/oyente - -RUN npm install n -g -RUN n stable - -RUN npm install -g ganache-cli - -RUN npm install -g truffle - -# we use the oyente image as a base because it has a lot of dependencies -# it also comes with nodejs and npm already -# we then simply install testrpc and truffle on top diff --git a/toolbox-docker/Makefile b/toolbox-docker/Makefile new file mode 100644 index 0000000..d715cd0 --- /dev/null +++ b/toolbox-docker/Makefile @@ -0,0 +1,43 @@ +.PHONY: attach-bash-oyente attach-bash-mythril build build-no-cache clean logs reset restart start start-attached start-attached-bash-oyente start-attached-bash-mythril start-ganache-cli-oyente start-ganache-cli-mythril stop + +attach-bash-oyente: + docker attach toolbox-oyente + +attach-bash-mythril: + docker attach toolbox-mythril + +build: + docker-compose build + +build-no-cache: + docker-compose build --no-cache + +clean: + docker-compose down --rmi all --volumes --remove-orphans + +logs: + docker-compose logs -f + +reset: stop clean + docker-compose up -d --build --force-recreate --remove-orphans + +restart: stop start + +start: + docker-compose up -d --remove-orphans + +start-attached: + docker-compose up --remove-orphans + +start-attached-bash-oyente: start attach-bash-oyente + +start-attached-bash-mythril: start attach-bash-mythril + +start-ganache-cli-oyente: start + docker exec -d toolbox-oyente ganache-cli --host 0.0.0.0 --port 8545 --gasLimit=0x1fffffffffffff --gasPrice=1024 --defaultBalanceEther 1000 --deterministic --mnemonic 'brick hollow kit person enjoy bitter soda situate next juice tape genuine' + +start-ganache-cli-mythril: start + docker exec -d toolbox-mythril ganache-cli --host 0.0.0.0 --port 8545 --gasLimit=0x1fffffffffffff --gasPrice=1024 --defaultBalanceEther 1000 --deterministic --mnemonic 'brick hollow kit person enjoy bitter soda situate next juice tape genuine' + +stop: + docker-compose down --volumes --remove-orphans diff --git a/toolbox-docker/README.md b/toolbox-docker/README.md index 27329a1..b697aef 100644 --- a/toolbox-docker/README.md +++ b/toolbox-docker/README.md @@ -1,47 +1,25 @@ -# GET STARTED: - -Build the docker container using: -``` -user$ docker-compose build -``` - -Start the container and attach to its console whith: -``` -user$ docker-compose up -d && docker attach tools -``` - - -# CONTENTS: - -## truffle - -The "volume" folder is shared with the container and we can use -``` -~/volume# mkdir my_project && cd my_project -~/volume# truffle init -``` -to make a new project that will also show up on our local environment. - - -## oyente - -We can use the oyente.py script to check our smart contract for common mistakes and bugs -``` -oyente/oyente# python oyente.py -s ~/volume/contracts/example.sol -``` - -## testrpc - -testrpc is also installed, learn how to use it at: - -https://github.com/ethereumjs/testrpc - -port is mapped to 8546, not 8545 to avoid interference with 'ethereum-docker' testnet. - - -## string utils - -the string utils can be found at -``` -~/volume/contracts/strings.sol +# Dockerized toolbox for smart contract and dApp development + +Dockerized toolboxes with various pre-configured tools, e.g. **n** for node versions, **ganache-cli** as testrpc, **solcjs** and **solc**, **truffle** as dApp development suite (alternatively, use **hardhat** as project dependency), **oyente** and **smartcheck** for solc <= v0.4.21 and **mythril** and **smartcheck** for solc <= latest as smart contract analyzer. Additionally, it comes with various tools, such as **@0x/abi-gen**, **solhint**, **solidity-docgen** and **solgraph**. +The `volume` directory is shared with the toolbox containers. Simply, create a project locally in `volume` in order to evaluate, test and develop the project with the two toolboxes. + +## Quick start + +Setting up this dockerized toolboxes requires you to install Docker and Docker Compose. Clone the repository, and use Makefile commands from this directory. + +``` +# Start the dockerized toolbox-oyente and attach /bin/bash +$ make start-attached-bash-oyente +# Start the dockerized toolbox-mythril and attach /bin/bash +$ make start-attached-bash-mythril +# Start the dockerized setup and start ganache-cli +$ make start-ganache-cli-oyente +# Or +$ make start-ganache-cli-mythril +# Attach /bin/bash when setup is started +$ make attach-bash-oyente +# Or +$ make attach-bash-mythril +# Stop the dockerized setup +$ make stop ``` diff --git a/toolbox-docker/docker-compose.yml b/toolbox-docker/docker-compose.yml index f1d6559..b84b433 100644 --- a/toolbox-docker/docker-compose.yml +++ b/toolbox-docker/docker-compose.yml @@ -1,17 +1,55 @@ -version: '3' +version: "3" + services: - tools: - build: . # dockerfile is in this dir - image: maibornwolff/eden:tools - container_name: tools - stdin_open: true # equivalent to docker run -i - tty: true # equivalent to docker run -t - entrypoint: /bin/bash # process of our container is the terminal itself + toolbox-oyente: + build: + context: . + dockerfile: ./oyente.Dockerfile + image: maibornwolff/eden:toolbox-oyente + container_name: toolbox-oyente + stdin_open: true # equivalent to docker run -i + tty: true # equivalent to docker run -t + entrypoint: /bin/bash # process of our container is the terminal itself working_dir: / volumes: - ./volume:/root/volume - ./volume/contracts:/oyente/oyente/contracts # insert folder with your projects contracts here ports: - - "8546:8545" - # avoid interference with ethereum-docker + - 6545:8545 + + toolbox-mythril: + build: + context: . + dockerfile: ./mythril.Dockerfile + image: maibornwolff/eden:toolbox-mythril + container_name: toolbox-mythril + stdin_open: true # equivalent to docker run -i + tty: true # equivalent to docker run -t + entrypoint: /bin/bash # process of our container is the terminal itself + working_dir: / + volumes: + - ./volume:/root/volume + # insert folder with your projects contracts here + ports: + - 7545:8545 + + lite-explorer-oyente: + depends_on: + - toolbox-oyente + image: alethio/ethereum-lite-explorer + container_name: lite-explorer-oyente + environment: + - APP_NODE_URL=http://localhost:6545 + ports: + - 8800:80 + + lite-explorer-mythril: + depends_on: + - toolbox-mythril + image: alethio/ethereum-lite-explorer + container_name: lite-explorer-mythril + environment: + - APP_NODE_URL=http://localhost:7545 + ports: + - 8008:80 diff --git a/toolbox-docker/mythril.Dockerfile b/toolbox-docker/mythril.Dockerfile new file mode 100644 index 0000000..6550b97 --- /dev/null +++ b/toolbox-docker/mythril.Dockerfile @@ -0,0 +1,49 @@ +FROM ubuntu:focal + +RUN apt-get update \ + && apt-get install -y \ + software-properties-common curl + +# Install solc +RUN add-apt-repository -y ppa:ethereum/ethereum +RUN apt-get update \ + && apt-get install -y solc + +# Install mythril +RUN apt install -y libssl-dev python3-dev python3-pip +RUN pip3 install mythril + +# Install node.js, but manage version via n +RUN apt-get update \ + && apt-get install -y \ + nodejs npm + +# n is node.js version management +RUN npm install -g n +RUN n stable + +# Install solcjs +RUN npm install -g solc + +# testrpc, now ganache-cli +RUN npm install -g ganache-cli + +RUN npm install -g truffle +# Hardhat is used as local dependency, e.g in your local project run npm install --save-dev harthat + +# @0x/abi-gen enables the generation of TypeScript or Python contract wrappers from ABI files +RUN npm install -g @0x/abi-gen + +# smartCheck is an extensible static analysis tool for discovering vulnerabilities and other code issues in Ethereum smart contracts written in the Solidity programming language. +# e.g. smartcheck -p . +RUN npm install -g @smartdec/smartcheck + +# solgraph generating DOT graph that visualizes function control flow of a Solidity contract +# e.g. solgraph MyContract.sol > MyContract.dot +RUN npm install -g solgraph --unsafe-perm=true --allow-root + +# solhint is a solidity linter +RUN npm install -g solhint + +# solidity-docgen is used to generate documentation from solidity files +RUN npm install -g solidity-docgen diff --git a/toolbox-docker/oyente.Dockerfile b/toolbox-docker/oyente.Dockerfile new file mode 100644 index 0000000..f614421 --- /dev/null +++ b/toolbox-docker/oyente.Dockerfile @@ -0,0 +1,39 @@ +# We use the oyente image as a base because it has a lot of dependencies and it also comes with nodejs and npm already. +# We then simply install utilities, tools, testrpc (ganache-cli) and truffle on top. + +# oyente is an static analysis tool for smart contracts +# evaluate a local solidity contract: python oyente.py -s +# evaluate a local solidity with option -a to verify assertions in the contract: python oyente.py -a -s +# evaluate a local evm contract: python oyente.py -s -b +# evaluate a remote contract python oyente.py -ru https://gist.githubusercontent.com/loiluu/d0eb34d473e421df12b38c12a7423a61/raw/2415b3fb782f5d286777e0bcebc57812ce3786da/puzzle.sol +FROM luongnguyen/oyente + +# Node.js version management +RUN npm install -g n +RUN n stable + +# Install solcjs +RUN npm install -g solc + +# Testrpc, now ganache-cli +RUN npm install -g ganache-cli + +RUN npm install -g truffle +# Hardhat is used as local dependency, e.g in your local project run npm install --save-dev harthat + +# @0x/abi-gen enables the generation of TypeScript or Python contract wrappers from ABI files +RUN npm install -g @0x/abi-gen + +# SmartCheck is an extensible static analysis tool for discovering vulnerabilities and other code issues in Ethereum smart contracts written in the Solidity programming language. +# e.g. smartcheck -p . +RUN npm install -g @smartdec/smartcheck + +# solgraph generating DOT graph that visualizes function control flow of a Solidity contract +# e.g. solgraph MyContract.sol > MyContract.dot +RUN npm install -g solgraph --unsafe-perm=true --allow-root + +# solhint is a solidity linter +RUN npm install -g solhint + +# solidity-docgen is used to generate documentation from solidity files +RUN npm install -g solidity-docgen