├── .circleci └── config.yml ├── .github └── FUNDING.yml ├── .gitignore ├── CHANGELOG.md ├── Dockerfile ├── LICENSE ├── README.md ├── makefile ├── package-lock.json ├── package.json └── test.sh /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | test: 4 | machine: true 5 | steps: 6 | - checkout 7 | - run: make build 8 | - run: make test 9 | deploy: 10 | machine: true 11 | steps: 12 | - checkout 13 | - run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD 14 | # A little tricky to cache inmges between jobs, so just rebuild. 15 | - run: make build 16 | - run: make deploy 17 | 18 | workflows: 19 | version: 2 20 | test: 21 | jobs: 22 | - test 23 | - deploy: 24 | requires: 25 | - test 26 | filters: 27 | branches: 28 | only: master 29 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # Support 'GitHub Sponsors' funding. 2 | github: dwmkerr 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | ### [0.3.9](https://github.com/dwmkerr/docker-terraform-ci/compare/v0.3.8...v0.3.9) (2020-08-14) 6 | 7 | 8 | ### Features 9 | 10 | * add azure-cli, add checkov, use tf 0.13, debian buster ([7139dda](https://github.com/dwmkerr/docker-terraform-ci/commit/7139dda5fe4dfddc3d5f10b2f2a5eaec95378486)) 11 | 12 | ### [0.3.8](https://github.com/dwmkerr/docker-terraform-ci/compare/v0.3.7...v0.3.8) (2020-03-11) 13 | 14 | 15 | ### Features 16 | 17 | * **terraform:** upgrade to terraform 0.11.23 ([3943a95](https://github.com/dwmkerr/docker-terraform-ci/commit/3943a956fcc8be1176a79dc2609d6c1f8313e132)) 18 | 19 | ### [0.3.7](https://github.com/dwmkerr/docker-terraform-ci/compare/v0.3.6...v0.3.7) (2020-02-28) 20 | 21 | ### [0.3.6](https://github.com/dwmkerr/docker-terraform-ci/compare/v0.3.5...v0.3.6) (2020-02-12) 22 | 23 | ### [0.3.5](https://github.com/dwmkerr/docker-terraform-ci/compare/v0.3.2...v0.3.5) (2020-01-15) 24 | 25 | 26 | ### Features 27 | 28 | * Adding curl ([b5d8b4c](https://github.com/dwmkerr/docker-terraform-ci/commit/b5d8b4cbcfb2ba7bf371a184662148898160aec0)) 29 | * Adding shellcheck ([3403cc1](https://github.com/dwmkerr/docker-terraform-ci/commit/3403cc13db7f38ecd64c6c9e4f443ae1a22b95ad)) 30 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # A baseline image for general CI tasks with Terraform. 2 | # Provides Terraform binaries, as well as tflint and the AWS CLI. 3 | 4 | # At the time of writing, the latest version of Debian is 'strech'. Slim is a 5 | # little leaner, with some rarely used stuff removed. 6 | FROM debian:buster 7 | 8 | # Some metadata. 9 | MAINTAINER Dave Kerr 10 | 11 | # Build arguments, which are used to control version numbers. 12 | ARG VERSION_TERRAFORM=0.13.0 13 | ARG VERSION_TFLINT=0.18.0 14 | ARG VERSION_AWS_CLI=1.16 15 | ARG VERSION_CHECKOV=1.0.484 16 | 17 | # Install some common tools we'll need for builds. 18 | # Also install tools needed to use this as a CircleCI 2 build image. See: 19 | # https://circleci.com/docs/2.0/custom-images/ 20 | RUN apt-get update -qq && apt-get install -qq -y \ 21 | make \ 22 | wget \ 23 | git \ 24 | ssh \ 25 | tar \ 26 | gzip \ 27 | unzip \ 28 | ca-certificates \ 29 | python3-dev \ 30 | python3-pip \ 31 | shellcheck \ 32 | curl 33 | 34 | # Install Terraform. 35 | RUN wget -q https://releases.hashicorp.com/terraform/${VERSION_TERRAFORM}/terraform_${VERSION_TERRAFORM}_linux_amd64.zip 36 | RUN unzip terraform_${VERSION_TERRAFORM}_linux_amd64.zip 37 | RUN install terraform /usr/local/bin 38 | RUN terraform -v 39 | 40 | # Install tflint. 41 | RUN wget -q https://github.com/wata727/tflint/releases/download/v${VERSION_TFLINT}/tflint_linux_amd64.zip 42 | RUN unzip tflint_linux_amd64.zip 43 | RUN install tflint /usr/local/bin 44 | RUN chmod ugo+x /usr/local/bin/tflint 45 | RUN tflint -v 46 | 47 | # Install Checkov. 48 | RUN pip3 install --upgrade setuptools 49 | RUN pip3 install checkov==${VERSION_CHECKOV} 50 | RUN checkov -v 51 | 52 | # Install the AWS CLI. 53 | RUN pip3 install awscli==${VERSION_AWS_CLI} 54 | 55 | # Install the Azure CLI. 56 | RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash 57 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Dave Kerr 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # docker-terraform-ci [![CircleCI](https://circleci.com/gh/dwmkerr/docker-terraform-ci.svg?style=shield)](https://circleci.com/gh/dwmkerr/docker-terraform-ci) [![Greenkeeper badge](https://badges.greenkeeper.io/dwmkerr/docker-terraform-ci.svg)](https://greenkeeper.io/) [![GuardRails badge](https://badges.guardrails.io/dwmkerr/docker-dynamodb.svg?token=569f2cc38a148f785f3a38ef0bcf5f5964995d7ca625abfad9956b14bd06ad96&provider=github)](https://dashboard.guardrails.io/default/gh/dwmkerr/docker-dynamodb) 2 | 3 | [![Docker Hub Badge](http://dockeri.co/image/dwmkerr/terraform-ci)](https://registry.hub.docker.com/u/dwmkerr/terraform-ci/) 4 | 5 | The `dwmkerr/terraform-ci` Dockerfile provides a useful baseline image for run Terraform related CI tasks. 6 | 7 | 8 | 9 | * [Introduction](#introduction) 10 | * [Tooling](#tooling) 11 | * [Coding](#coding) 12 | * [The Makefile](#the-makefile) 13 | * [The Tests](#the-tests) 14 | * [Creating a Release](#creating-a-release) 15 | 16 | 17 | 18 | # Introduction 19 | 20 | You can use this image to run CI pipelines which build infrastructure. There is a more detailed article describing this approach on the way, which uses a CI build for [`dwmkerr/terraform-aws-openshift`](https://github.com/dwmkerr/terraform-aws-openshift) as an example. 21 | 22 | The image is based on Debian Stretch (specifically the official [`debian:stretch`](https://hub.docker.com/_/debian/) image). 23 | 24 | # Tooling 25 | 26 | This image contains a number of tools which are useful when working with Terraform. 27 | 28 | All baseline Debian stretch tools, as well as tools needed by CircleCI 2 images, and some useful utilities: 29 | 30 | - `make` 31 | - `wget` 32 | - `git` 33 | - `ssh` 34 | - `tar` 35 | - `gzip` 36 | - `unzip` 37 | - `ca-certificates` 38 | - `curl` 39 | - [`shellcheck`](https://github.com/koalaman/shellcheck) 40 | 41 | Terraform, [Terraform Lint](https://github.com/wata727/tflint) and [Checkov](https://github.com/bridgecrewio/checkov): 42 | 43 | - `terraform` (0.13) 44 | - `tflint` (0.18) 45 | - `checkov` (latest) 46 | 47 | Cloud CLIs which are for [Terraform Backends](https://www.terraform.io/docs/backends/) 48 | 49 | - `aws` (1.16) 50 | - `az` (latest) 51 | 52 | # Coding 53 | 54 | The code is structured like this: 55 | 56 | ``` 57 | Dockerfile # the important thing, the actual dockerfile 58 | makefile # commands to build, test deploy etc 59 | test.sh # a simple test script 60 | package.json # used for versioning only 61 | ``` 62 | 63 | ## The Makefile 64 | 65 | The makefile contains commands to build, test and deploy. Parameters can be passed as environment variables or through the command-line. 66 | 67 | | Command | Notes | 68 | |--------------------------|-----------------------------------| 69 | | `make build` | Builds the image `dwmkerr/terraform-ci:latest` and `dwmkerr/terraform-ci:`. The version is loaded from [`package.json`](./package.json). | 70 | | `make test` | Runs the test scripts. | 71 | | `make deploy` | Deploys the images to the docker hub. If you are not logged in, you're gonna have a bad time. | 72 | 73 | ## The Tests 74 | 75 | The tests are simple bash scripts which check for basic capabilities *which relate to the image*. Essentially, this means they'll test the tools are installed. 76 | 77 | ## Creating a Release 78 | 79 | To create a release: 80 | 81 | - Merge your work to master 82 | - Use `npm run release` to bump and update the changelog 83 | - Push and deploy `git push --follow-tags` 84 | 85 | A `package.json` file is used to store the version number, however the project has no other dependencies on Node.js than this part of the release process. It is just allows for convenient management of a `CHANGELOG.md` file and the version by using [standard-version](https://github.com/conventional-changelog/standard-version). 86 | -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | # Grab the version number from the package.json. 2 | version := $(shell jq -r .version package.json) 3 | image := dwmkerr/terraform-ci 4 | 5 | build: 6 | docker build -t $(image):latest . 7 | docker tag $(image):latest $(image):$(version) 8 | 9 | # Run the tests. 10 | test: build 11 | ./test.sh 12 | 13 | # Deploy the images to the Docker Hub. Assumes you are logged in! 14 | deploy: 15 | docker push $(image):latest 16 | docker push $(image):$(version) 17 | 18 | # Test the build. 19 | circleci: 20 | circleci config validate 21 | circleci build --job test 22 | circleci build --job deploy 23 | 24 | # Make sure the makefile knows the commands below are commands, not targets. 25 | .PHONY: build test deploy 26 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docker-terraform-ci", 3 | "version": "0.3.9", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/color-name": { 8 | "version": "1.1.1", 9 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 10 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 11 | "dev": true 12 | }, 13 | "JSONStream": { 14 | "version": "1.3.5", 15 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", 16 | "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", 17 | "dev": true, 18 | "requires": { 19 | "jsonparse": "^1.2.0", 20 | "through": ">=2.2.7 <3" 21 | } 22 | }, 23 | "add-stream": { 24 | "version": "1.0.0", 25 | "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", 26 | "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", 27 | "dev": true 28 | }, 29 | "ansi-regex": { 30 | "version": "5.0.0", 31 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 32 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 33 | "dev": true 34 | }, 35 | "ansi-styles": { 36 | "version": "3.2.1", 37 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 38 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 39 | "dev": true, 40 | "requires": { 41 | "color-convert": "^1.9.0" 42 | } 43 | }, 44 | "array-find-index": { 45 | "version": "1.0.2", 46 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 47 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", 48 | "dev": true 49 | }, 50 | "array-ify": { 51 | "version": "1.0.0", 52 | "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", 53 | "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", 54 | "dev": true 55 | }, 56 | "arrify": { 57 | "version": "1.0.1", 58 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 59 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 60 | "dev": true 61 | }, 62 | "balanced-match": { 63 | "version": "1.0.0", 64 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 65 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 66 | "dev": true 67 | }, 68 | "brace-expansion": { 69 | "version": "1.1.11", 70 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 71 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 72 | "dev": true, 73 | "requires": { 74 | "balanced-match": "^1.0.0", 75 | "concat-map": "0.0.1" 76 | } 77 | }, 78 | "buffer-from": { 79 | "version": "1.1.1", 80 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 81 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 82 | "dev": true 83 | }, 84 | "camelcase": { 85 | "version": "4.1.0", 86 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 87 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 88 | "dev": true 89 | }, 90 | "camelcase-keys": { 91 | "version": "4.2.0", 92 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", 93 | "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", 94 | "dev": true, 95 | "requires": { 96 | "camelcase": "^4.1.0", 97 | "map-obj": "^2.0.0", 98 | "quick-lru": "^1.0.0" 99 | } 100 | }, 101 | "chalk": { 102 | "version": "2.4.2", 103 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 104 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 105 | "dev": true, 106 | "requires": { 107 | "ansi-styles": "^3.2.1", 108 | "escape-string-regexp": "^1.0.5", 109 | "supports-color": "^5.3.0" 110 | } 111 | }, 112 | "cliui": { 113 | "version": "6.0.0", 114 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 115 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 116 | "dev": true, 117 | "requires": { 118 | "string-width": "^4.2.0", 119 | "strip-ansi": "^6.0.0", 120 | "wrap-ansi": "^6.2.0" 121 | } 122 | }, 123 | "color-convert": { 124 | "version": "1.9.3", 125 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 126 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 127 | "dev": true, 128 | "requires": { 129 | "color-name": "1.1.3" 130 | } 131 | }, 132 | "color-name": { 133 | "version": "1.1.3", 134 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 135 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 136 | "dev": true 137 | }, 138 | "commander": { 139 | "version": "2.20.3", 140 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 141 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 142 | "dev": true, 143 | "optional": true 144 | }, 145 | "compare-func": { 146 | "version": "1.3.2", 147 | "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", 148 | "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", 149 | "dev": true, 150 | "requires": { 151 | "array-ify": "^1.0.0", 152 | "dot-prop": "^3.0.0" 153 | } 154 | }, 155 | "concat-map": { 156 | "version": "0.0.1", 157 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 158 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 159 | "dev": true 160 | }, 161 | "concat-stream": { 162 | "version": "2.0.0", 163 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", 164 | "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", 165 | "dev": true, 166 | "requires": { 167 | "buffer-from": "^1.0.0", 168 | "inherits": "^2.0.3", 169 | "readable-stream": "^3.0.2", 170 | "typedarray": "^0.0.6" 171 | } 172 | }, 173 | "conventional-changelog": { 174 | "version": "3.1.18", 175 | "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.18.tgz", 176 | "integrity": "sha512-aN6a3rjgV8qwAJj3sC/Lme2kvswWO7fFSGQc32gREcwIOsaiqBaO6f2p0NomFaPDnTqZ+mMZFLL3hlzvEnZ0mQ==", 177 | "dev": true, 178 | "requires": { 179 | "conventional-changelog-angular": "^5.0.6", 180 | "conventional-changelog-atom": "^2.0.3", 181 | "conventional-changelog-codemirror": "^2.0.3", 182 | "conventional-changelog-conventionalcommits": "^4.2.3", 183 | "conventional-changelog-core": "^4.1.4", 184 | "conventional-changelog-ember": "^2.0.4", 185 | "conventional-changelog-eslint": "^3.0.4", 186 | "conventional-changelog-express": "^2.0.1", 187 | "conventional-changelog-jquery": "^3.0.6", 188 | "conventional-changelog-jshint": "^2.0.3", 189 | "conventional-changelog-preset-loader": "^2.3.0" 190 | } 191 | }, 192 | "conventional-changelog-angular": { 193 | "version": "5.0.6", 194 | "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz", 195 | "integrity": "sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA==", 196 | "dev": true, 197 | "requires": { 198 | "compare-func": "^1.3.1", 199 | "q": "^1.5.1" 200 | } 201 | }, 202 | "conventional-changelog-atom": { 203 | "version": "2.0.3", 204 | "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.3.tgz", 205 | "integrity": "sha512-szZe2ut97qNO6vCCMkm1I/tWu6ol4Rr8a9Lx0y/VlpDnpY0PNp+oGpFgU55lplhx+I3Lro9Iv4/gRj0knfgjzg==", 206 | "dev": true, 207 | "requires": { 208 | "q": "^1.5.1" 209 | } 210 | }, 211 | "conventional-changelog-codemirror": { 212 | "version": "2.0.3", 213 | "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.3.tgz", 214 | "integrity": "sha512-t2afackdgFV2yBdHhWPqrKbpaQeVnz2hSJKdWqjasPo5EpIB6TBL0er3cOP1mnGQmuzk9JSvimNSuqjWGDtU5Q==", 215 | "dev": true, 216 | "requires": { 217 | "q": "^1.5.1" 218 | } 219 | }, 220 | "conventional-changelog-config-spec": { 221 | "version": "2.1.0", 222 | "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", 223 | "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", 224 | "dev": true 225 | }, 226 | "conventional-changelog-conventionalcommits": { 227 | "version": "4.2.3", 228 | "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.2.3.tgz", 229 | "integrity": "sha512-atGa+R4vvEhb8N/8v3IoW59gCBJeeFiX6uIbPu876ENAmkMwsenyn0R21kdDHJFLQdy6zW4J6b4xN8KI3b9oww==", 230 | "dev": true, 231 | "requires": { 232 | "compare-func": "^1.3.1", 233 | "lodash": "^4.17.15", 234 | "q": "^1.5.1" 235 | } 236 | }, 237 | "conventional-changelog-core": { 238 | "version": "4.1.4", 239 | "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.1.4.tgz", 240 | "integrity": "sha512-LO58ZbEpp1Ul+y/vOI8rJRsWkovsYkCFbOCVgi6UnVfU8WC0F8K8VQQwaBZWWUpb6JvEiN4GBR5baRP2txZ+Vg==", 241 | "dev": true, 242 | "requires": { 243 | "add-stream": "^1.0.0", 244 | "conventional-changelog-writer": "^4.0.11", 245 | "conventional-commits-parser": "^3.0.8", 246 | "dateformat": "^3.0.0", 247 | "get-pkg-repo": "^1.0.0", 248 | "git-raw-commits": "2.0.0", 249 | "git-remote-origin-url": "^2.0.0", 250 | "git-semver-tags": "^3.0.1", 251 | "lodash": "^4.17.15", 252 | "normalize-package-data": "^2.3.5", 253 | "q": "^1.5.1", 254 | "read-pkg": "^3.0.0", 255 | "read-pkg-up": "^3.0.0", 256 | "through2": "^3.0.0" 257 | } 258 | }, 259 | "conventional-changelog-ember": { 260 | "version": "2.0.4", 261 | "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.4.tgz", 262 | "integrity": "sha512-q1u73sO9uCnxN4TSw8xu6MRU8Y1h9kpwtcdJuNRwu/LSKI1IE/iuNSH5eQ6aLlQ3HTyrIpTfUuVybW4W0F17rA==", 263 | "dev": true, 264 | "requires": { 265 | "q": "^1.5.1" 266 | } 267 | }, 268 | "conventional-changelog-eslint": { 269 | "version": "3.0.4", 270 | "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.4.tgz", 271 | "integrity": "sha512-CPwTUENzhLGl3auunrJxiIEWncAGaby7gOFCdj2gslIuOFJ0KPJVOUhRz4Da/I53sdo/7UncUJkiLg94jEsjxg==", 272 | "dev": true, 273 | "requires": { 274 | "q": "^1.5.1" 275 | } 276 | }, 277 | "conventional-changelog-express": { 278 | "version": "2.0.1", 279 | "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz", 280 | "integrity": "sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw==", 281 | "dev": true, 282 | "requires": { 283 | "q": "^1.5.1" 284 | } 285 | }, 286 | "conventional-changelog-jquery": { 287 | "version": "3.0.6", 288 | "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.6.tgz", 289 | "integrity": "sha512-gHAABCXUNA/HjnZEm+vxAfFPJkgtrZvCDIlCKfdPVXtCIo/Q0lN5VKpx8aR5p8KdVRQFF3OuTlvv5kv6iPuRqA==", 290 | "dev": true, 291 | "requires": { 292 | "q": "^1.5.1" 293 | } 294 | }, 295 | "conventional-changelog-jshint": { 296 | "version": "2.0.3", 297 | "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.3.tgz", 298 | "integrity": "sha512-Pc2PnMPcez634ckzr4EOWviwRSpZcURaK7bjyD9oK6N5fsC/a+3G7LW5m/JpcHPhA9ZxsfIbm7uqZ3ZDGsQ/sw==", 299 | "dev": true, 300 | "requires": { 301 | "compare-func": "^1.3.1", 302 | "q": "^1.5.1" 303 | } 304 | }, 305 | "conventional-changelog-preset-loader": { 306 | "version": "2.3.0", 307 | "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.0.tgz", 308 | "integrity": "sha512-/rHb32J2EJnEXeK4NpDgMaAVTFZS3o1ExmjKMtYVgIC4MQn0vkNSbYpdGRotkfGGRWiqk3Ri3FBkiZGbAfIfOQ==", 309 | "dev": true 310 | }, 311 | "conventional-changelog-writer": { 312 | "version": "4.0.11", 313 | "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz", 314 | "integrity": "sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw==", 315 | "dev": true, 316 | "requires": { 317 | "compare-func": "^1.3.1", 318 | "conventional-commits-filter": "^2.0.2", 319 | "dateformat": "^3.0.0", 320 | "handlebars": "^4.4.0", 321 | "json-stringify-safe": "^5.0.1", 322 | "lodash": "^4.17.15", 323 | "meow": "^5.0.0", 324 | "semver": "^6.0.0", 325 | "split": "^1.0.0", 326 | "through2": "^3.0.0" 327 | }, 328 | "dependencies": { 329 | "semver": { 330 | "version": "6.3.0", 331 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 332 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 333 | "dev": true 334 | } 335 | } 336 | }, 337 | "conventional-commits-filter": { 338 | "version": "2.0.2", 339 | "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz", 340 | "integrity": "sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==", 341 | "dev": true, 342 | "requires": { 343 | "lodash.ismatch": "^4.4.0", 344 | "modify-values": "^1.0.0" 345 | } 346 | }, 347 | "conventional-commits-parser": { 348 | "version": "3.0.8", 349 | "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz", 350 | "integrity": "sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ==", 351 | "dev": true, 352 | "requires": { 353 | "JSONStream": "^1.0.4", 354 | "is-text-path": "^1.0.1", 355 | "lodash": "^4.17.15", 356 | "meow": "^5.0.0", 357 | "split2": "^2.0.0", 358 | "through2": "^3.0.0", 359 | "trim-off-newlines": "^1.0.0" 360 | } 361 | }, 362 | "conventional-recommended-bump": { 363 | "version": "6.0.5", 364 | "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.0.5.tgz", 365 | "integrity": "sha512-srkferrB4kACPEbKYltZwX1CQZAEqbQkabKN444mavLRVMetzwJFJf23/+pwvtMsWbd+cc4HaleV1nHke0f8Rw==", 366 | "dev": true, 367 | "requires": { 368 | "concat-stream": "^2.0.0", 369 | "conventional-changelog-preset-loader": "^2.3.0", 370 | "conventional-commits-filter": "^2.0.2", 371 | "conventional-commits-parser": "^3.0.8", 372 | "git-raw-commits": "2.0.0", 373 | "git-semver-tags": "^3.0.1", 374 | "meow": "^5.0.0", 375 | "q": "^1.5.1" 376 | } 377 | }, 378 | "core-util-is": { 379 | "version": "1.0.2", 380 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 381 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 382 | "dev": true 383 | }, 384 | "currently-unhandled": { 385 | "version": "0.4.1", 386 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 387 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 388 | "dev": true, 389 | "requires": { 390 | "array-find-index": "^1.0.1" 391 | } 392 | }, 393 | "dargs": { 394 | "version": "4.1.0", 395 | "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", 396 | "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", 397 | "dev": true, 398 | "requires": { 399 | "number-is-nan": "^1.0.0" 400 | } 401 | }, 402 | "dateformat": { 403 | "version": "3.0.3", 404 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", 405 | "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", 406 | "dev": true 407 | }, 408 | "decamelize": { 409 | "version": "1.2.0", 410 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 411 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 412 | "dev": true 413 | }, 414 | "decamelize-keys": { 415 | "version": "1.1.0", 416 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", 417 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", 418 | "dev": true, 419 | "requires": { 420 | "decamelize": "^1.1.0", 421 | "map-obj": "^1.0.0" 422 | }, 423 | "dependencies": { 424 | "map-obj": { 425 | "version": "1.0.1", 426 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 427 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 428 | "dev": true 429 | } 430 | } 431 | }, 432 | "detect-indent": { 433 | "version": "6.0.0", 434 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", 435 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", 436 | "dev": true 437 | }, 438 | "detect-newline": { 439 | "version": "3.1.0", 440 | "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", 441 | "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", 442 | "dev": true 443 | }, 444 | "dot-prop": { 445 | "version": "3.0.0", 446 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", 447 | "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", 448 | "dev": true, 449 | "requires": { 450 | "is-obj": "^1.0.0" 451 | } 452 | }, 453 | "dotgitignore": { 454 | "version": "2.1.0", 455 | "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", 456 | "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", 457 | "dev": true, 458 | "requires": { 459 | "find-up": "^3.0.0", 460 | "minimatch": "^3.0.4" 461 | }, 462 | "dependencies": { 463 | "find-up": { 464 | "version": "3.0.0", 465 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 466 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 467 | "dev": true, 468 | "requires": { 469 | "locate-path": "^3.0.0" 470 | } 471 | }, 472 | "locate-path": { 473 | "version": "3.0.0", 474 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 475 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 476 | "dev": true, 477 | "requires": { 478 | "p-locate": "^3.0.0", 479 | "path-exists": "^3.0.0" 480 | } 481 | }, 482 | "p-limit": { 483 | "version": "2.3.0", 484 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 485 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 486 | "dev": true, 487 | "requires": { 488 | "p-try": "^2.0.0" 489 | } 490 | }, 491 | "p-locate": { 492 | "version": "3.0.0", 493 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 494 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 495 | "dev": true, 496 | "requires": { 497 | "p-limit": "^2.0.0" 498 | } 499 | }, 500 | "p-try": { 501 | "version": "2.2.0", 502 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 503 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 504 | "dev": true 505 | } 506 | } 507 | }, 508 | "emoji-regex": { 509 | "version": "8.0.0", 510 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 511 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 512 | "dev": true 513 | }, 514 | "error-ex": { 515 | "version": "1.3.2", 516 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 517 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 518 | "dev": true, 519 | "requires": { 520 | "is-arrayish": "^0.2.1" 521 | } 522 | }, 523 | "escape-string-regexp": { 524 | "version": "1.0.5", 525 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 526 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 527 | "dev": true 528 | }, 529 | "figures": { 530 | "version": "3.1.0", 531 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", 532 | "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", 533 | "dev": true, 534 | "requires": { 535 | "escape-string-regexp": "^1.0.5" 536 | } 537 | }, 538 | "find-up": { 539 | "version": "4.1.0", 540 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 541 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 542 | "dev": true, 543 | "requires": { 544 | "locate-path": "^5.0.0", 545 | "path-exists": "^4.0.0" 546 | }, 547 | "dependencies": { 548 | "locate-path": { 549 | "version": "5.0.0", 550 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 551 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 552 | "dev": true, 553 | "requires": { 554 | "p-locate": "^4.1.0" 555 | } 556 | }, 557 | "p-limit": { 558 | "version": "2.3.0", 559 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 560 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 561 | "dev": true, 562 | "requires": { 563 | "p-try": "^2.0.0" 564 | } 565 | }, 566 | "p-locate": { 567 | "version": "4.1.0", 568 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 569 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 570 | "dev": true, 571 | "requires": { 572 | "p-limit": "^2.2.0" 573 | } 574 | }, 575 | "p-try": { 576 | "version": "2.2.0", 577 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 578 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 579 | "dev": true 580 | }, 581 | "path-exists": { 582 | "version": "4.0.0", 583 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 584 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 585 | "dev": true 586 | } 587 | } 588 | }, 589 | "fs-access": { 590 | "version": "1.0.1", 591 | "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", 592 | "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", 593 | "dev": true, 594 | "requires": { 595 | "null-check": "^1.0.0" 596 | } 597 | }, 598 | "get-caller-file": { 599 | "version": "2.0.5", 600 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 601 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 602 | "dev": true 603 | }, 604 | "get-pkg-repo": { 605 | "version": "1.4.0", 606 | "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", 607 | "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", 608 | "dev": true, 609 | "requires": { 610 | "hosted-git-info": "^2.1.4", 611 | "meow": "^3.3.0", 612 | "normalize-package-data": "^2.3.0", 613 | "parse-github-repo-url": "^1.3.0", 614 | "through2": "^2.0.0" 615 | }, 616 | "dependencies": { 617 | "camelcase": { 618 | "version": "2.1.1", 619 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 620 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", 621 | "dev": true 622 | }, 623 | "camelcase-keys": { 624 | "version": "2.1.0", 625 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", 626 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", 627 | "dev": true, 628 | "requires": { 629 | "camelcase": "^2.0.0", 630 | "map-obj": "^1.0.0" 631 | } 632 | }, 633 | "find-up": { 634 | "version": "1.1.2", 635 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 636 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 637 | "dev": true, 638 | "requires": { 639 | "path-exists": "^2.0.0", 640 | "pinkie-promise": "^2.0.0" 641 | } 642 | }, 643 | "indent-string": { 644 | "version": "2.1.0", 645 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", 646 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", 647 | "dev": true, 648 | "requires": { 649 | "repeating": "^2.0.0" 650 | } 651 | }, 652 | "load-json-file": { 653 | "version": "1.1.0", 654 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 655 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 656 | "dev": true, 657 | "requires": { 658 | "graceful-fs": "^4.1.2", 659 | "parse-json": "^2.2.0", 660 | "pify": "^2.0.0", 661 | "pinkie-promise": "^2.0.0", 662 | "strip-bom": "^2.0.0" 663 | } 664 | }, 665 | "map-obj": { 666 | "version": "1.0.1", 667 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 668 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", 669 | "dev": true 670 | }, 671 | "meow": { 672 | "version": "3.7.0", 673 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", 674 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", 675 | "dev": true, 676 | "requires": { 677 | "camelcase-keys": "^2.0.0", 678 | "decamelize": "^1.1.2", 679 | "loud-rejection": "^1.0.0", 680 | "map-obj": "^1.0.1", 681 | "minimist": "^1.1.3", 682 | "normalize-package-data": "^2.3.4", 683 | "object-assign": "^4.0.1", 684 | "read-pkg-up": "^1.0.1", 685 | "redent": "^1.0.0", 686 | "trim-newlines": "^1.0.0" 687 | } 688 | }, 689 | "parse-json": { 690 | "version": "2.2.0", 691 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 692 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 693 | "dev": true, 694 | "requires": { 695 | "error-ex": "^1.2.0" 696 | } 697 | }, 698 | "path-exists": { 699 | "version": "2.1.0", 700 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 701 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 702 | "dev": true, 703 | "requires": { 704 | "pinkie-promise": "^2.0.0" 705 | } 706 | }, 707 | "path-type": { 708 | "version": "1.1.0", 709 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 710 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 711 | "dev": true, 712 | "requires": { 713 | "graceful-fs": "^4.1.2", 714 | "pify": "^2.0.0", 715 | "pinkie-promise": "^2.0.0" 716 | } 717 | }, 718 | "pify": { 719 | "version": "2.3.0", 720 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 721 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 722 | "dev": true 723 | }, 724 | "read-pkg": { 725 | "version": "1.1.0", 726 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 727 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 728 | "dev": true, 729 | "requires": { 730 | "load-json-file": "^1.0.0", 731 | "normalize-package-data": "^2.3.2", 732 | "path-type": "^1.0.0" 733 | } 734 | }, 735 | "read-pkg-up": { 736 | "version": "1.0.1", 737 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 738 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 739 | "dev": true, 740 | "requires": { 741 | "find-up": "^1.0.0", 742 | "read-pkg": "^1.0.0" 743 | } 744 | }, 745 | "readable-stream": { 746 | "version": "2.3.7", 747 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 748 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 749 | "dev": true, 750 | "requires": { 751 | "core-util-is": "~1.0.0", 752 | "inherits": "~2.0.3", 753 | "isarray": "~1.0.0", 754 | "process-nextick-args": "~2.0.0", 755 | "safe-buffer": "~5.1.1", 756 | "string_decoder": "~1.1.1", 757 | "util-deprecate": "~1.0.1" 758 | } 759 | }, 760 | "redent": { 761 | "version": "1.0.0", 762 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", 763 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", 764 | "dev": true, 765 | "requires": { 766 | "indent-string": "^2.1.0", 767 | "strip-indent": "^1.0.1" 768 | } 769 | }, 770 | "safe-buffer": { 771 | "version": "5.1.2", 772 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 773 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 774 | "dev": true 775 | }, 776 | "string_decoder": { 777 | "version": "1.1.1", 778 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 779 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 780 | "dev": true, 781 | "requires": { 782 | "safe-buffer": "~5.1.0" 783 | } 784 | }, 785 | "strip-bom": { 786 | "version": "2.0.0", 787 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 788 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 789 | "dev": true, 790 | "requires": { 791 | "is-utf8": "^0.2.0" 792 | } 793 | }, 794 | "strip-indent": { 795 | "version": "1.0.1", 796 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", 797 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", 798 | "dev": true, 799 | "requires": { 800 | "get-stdin": "^4.0.1" 801 | } 802 | }, 803 | "through2": { 804 | "version": "2.0.5", 805 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 806 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 807 | "dev": true, 808 | "requires": { 809 | "readable-stream": "~2.3.6", 810 | "xtend": "~4.0.1" 811 | } 812 | }, 813 | "trim-newlines": { 814 | "version": "1.0.0", 815 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", 816 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", 817 | "dev": true 818 | } 819 | } 820 | }, 821 | "get-stdin": { 822 | "version": "4.0.1", 823 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", 824 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", 825 | "dev": true 826 | }, 827 | "git-raw-commits": { 828 | "version": "2.0.0", 829 | "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", 830 | "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", 831 | "dev": true, 832 | "requires": { 833 | "dargs": "^4.0.1", 834 | "lodash.template": "^4.0.2", 835 | "meow": "^4.0.0", 836 | "split2": "^2.0.0", 837 | "through2": "^2.0.0" 838 | }, 839 | "dependencies": { 840 | "meow": { 841 | "version": "4.0.1", 842 | "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", 843 | "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", 844 | "dev": true, 845 | "requires": { 846 | "camelcase-keys": "^4.0.0", 847 | "decamelize-keys": "^1.0.0", 848 | "loud-rejection": "^1.0.0", 849 | "minimist": "^1.1.3", 850 | "minimist-options": "^3.0.1", 851 | "normalize-package-data": "^2.3.4", 852 | "read-pkg-up": "^3.0.0", 853 | "redent": "^2.0.0", 854 | "trim-newlines": "^2.0.0" 855 | } 856 | }, 857 | "readable-stream": { 858 | "version": "2.3.7", 859 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 860 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 861 | "dev": true, 862 | "requires": { 863 | "core-util-is": "~1.0.0", 864 | "inherits": "~2.0.3", 865 | "isarray": "~1.0.0", 866 | "process-nextick-args": "~2.0.0", 867 | "safe-buffer": "~5.1.1", 868 | "string_decoder": "~1.1.1", 869 | "util-deprecate": "~1.0.1" 870 | } 871 | }, 872 | "safe-buffer": { 873 | "version": "5.1.2", 874 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 875 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 876 | "dev": true 877 | }, 878 | "string_decoder": { 879 | "version": "1.1.1", 880 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 881 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 882 | "dev": true, 883 | "requires": { 884 | "safe-buffer": "~5.1.0" 885 | } 886 | }, 887 | "through2": { 888 | "version": "2.0.5", 889 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 890 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 891 | "dev": true, 892 | "requires": { 893 | "readable-stream": "~2.3.6", 894 | "xtend": "~4.0.1" 895 | } 896 | } 897 | } 898 | }, 899 | "git-remote-origin-url": { 900 | "version": "2.0.0", 901 | "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", 902 | "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", 903 | "dev": true, 904 | "requires": { 905 | "gitconfiglocal": "^1.0.0", 906 | "pify": "^2.3.0" 907 | }, 908 | "dependencies": { 909 | "pify": { 910 | "version": "2.3.0", 911 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 912 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 913 | "dev": true 914 | } 915 | } 916 | }, 917 | "git-semver-tags": { 918 | "version": "3.0.1", 919 | "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-3.0.1.tgz", 920 | "integrity": "sha512-Hzd1MOHXouITfCasrpVJbRDg9uvW7LfABk3GQmXYZByerBDrfrEMP9HXpNT7RxAbieiocP6u+xq20DkvjwxnCA==", 921 | "dev": true, 922 | "requires": { 923 | "meow": "^5.0.0", 924 | "semver": "^6.0.0" 925 | }, 926 | "dependencies": { 927 | "semver": { 928 | "version": "6.3.0", 929 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 930 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 931 | "dev": true 932 | } 933 | } 934 | }, 935 | "gitconfiglocal": { 936 | "version": "1.0.0", 937 | "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", 938 | "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", 939 | "dev": true, 940 | "requires": { 941 | "ini": "^1.3.2" 942 | } 943 | }, 944 | "graceful-fs": { 945 | "version": "4.2.4", 946 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 947 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 948 | "dev": true 949 | }, 950 | "handlebars": { 951 | "version": "4.7.6", 952 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", 953 | "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", 954 | "dev": true, 955 | "requires": { 956 | "minimist": "^1.2.5", 957 | "neo-async": "^2.6.0", 958 | "source-map": "^0.6.1", 959 | "uglify-js": "^3.1.4", 960 | "wordwrap": "^1.0.0" 961 | } 962 | }, 963 | "has-flag": { 964 | "version": "3.0.0", 965 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 966 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 967 | "dev": true 968 | }, 969 | "hosted-git-info": { 970 | "version": "2.8.8", 971 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 972 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 973 | "dev": true 974 | }, 975 | "indent-string": { 976 | "version": "3.2.0", 977 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", 978 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", 979 | "dev": true 980 | }, 981 | "inherits": { 982 | "version": "2.0.4", 983 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 984 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 985 | "dev": true 986 | }, 987 | "ini": { 988 | "version": "1.3.5", 989 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 990 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", 991 | "dev": true 992 | }, 993 | "is-arrayish": { 994 | "version": "0.2.1", 995 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 996 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 997 | "dev": true 998 | }, 999 | "is-finite": { 1000 | "version": "1.1.0", 1001 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", 1002 | "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", 1003 | "dev": true 1004 | }, 1005 | "is-fullwidth-code-point": { 1006 | "version": "3.0.0", 1007 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1008 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1009 | "dev": true 1010 | }, 1011 | "is-obj": { 1012 | "version": "1.0.1", 1013 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1014 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", 1015 | "dev": true 1016 | }, 1017 | "is-plain-obj": { 1018 | "version": "1.1.0", 1019 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 1020 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 1021 | "dev": true 1022 | }, 1023 | "is-text-path": { 1024 | "version": "1.0.1", 1025 | "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", 1026 | "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", 1027 | "dev": true, 1028 | "requires": { 1029 | "text-extensions": "^1.0.0" 1030 | } 1031 | }, 1032 | "is-utf8": { 1033 | "version": "0.2.1", 1034 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1035 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1036 | "dev": true 1037 | }, 1038 | "isarray": { 1039 | "version": "1.0.0", 1040 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1041 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1042 | "dev": true 1043 | }, 1044 | "json-parse-better-errors": { 1045 | "version": "1.0.2", 1046 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1047 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1048 | "dev": true 1049 | }, 1050 | "json-stringify-safe": { 1051 | "version": "5.0.1", 1052 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1053 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 1054 | "dev": true 1055 | }, 1056 | "jsonparse": { 1057 | "version": "1.3.1", 1058 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 1059 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", 1060 | "dev": true 1061 | }, 1062 | "load-json-file": { 1063 | "version": "4.0.0", 1064 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 1065 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 1066 | "dev": true, 1067 | "requires": { 1068 | "graceful-fs": "^4.1.2", 1069 | "parse-json": "^4.0.0", 1070 | "pify": "^3.0.0", 1071 | "strip-bom": "^3.0.0" 1072 | } 1073 | }, 1074 | "locate-path": { 1075 | "version": "2.0.0", 1076 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1077 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1078 | "dev": true, 1079 | "requires": { 1080 | "p-locate": "^2.0.0", 1081 | "path-exists": "^3.0.0" 1082 | } 1083 | }, 1084 | "lodash": { 1085 | "version": "4.17.15", 1086 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1087 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 1088 | "dev": true 1089 | }, 1090 | "lodash._reinterpolate": { 1091 | "version": "3.0.0", 1092 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 1093 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", 1094 | "dev": true 1095 | }, 1096 | "lodash.ismatch": { 1097 | "version": "4.4.0", 1098 | "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", 1099 | "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", 1100 | "dev": true 1101 | }, 1102 | "lodash.template": { 1103 | "version": "4.5.0", 1104 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", 1105 | "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", 1106 | "dev": true, 1107 | "requires": { 1108 | "lodash._reinterpolate": "^3.0.0", 1109 | "lodash.templatesettings": "^4.0.0" 1110 | } 1111 | }, 1112 | "lodash.templatesettings": { 1113 | "version": "4.2.0", 1114 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", 1115 | "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", 1116 | "dev": true, 1117 | "requires": { 1118 | "lodash._reinterpolate": "^3.0.0" 1119 | } 1120 | }, 1121 | "loud-rejection": { 1122 | "version": "1.6.0", 1123 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 1124 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 1125 | "dev": true, 1126 | "requires": { 1127 | "currently-unhandled": "^0.4.1", 1128 | "signal-exit": "^3.0.0" 1129 | } 1130 | }, 1131 | "map-obj": { 1132 | "version": "2.0.0", 1133 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", 1134 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", 1135 | "dev": true 1136 | }, 1137 | "meow": { 1138 | "version": "5.0.0", 1139 | "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", 1140 | "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", 1141 | "dev": true, 1142 | "requires": { 1143 | "camelcase-keys": "^4.0.0", 1144 | "decamelize-keys": "^1.0.0", 1145 | "loud-rejection": "^1.0.0", 1146 | "minimist-options": "^3.0.1", 1147 | "normalize-package-data": "^2.3.4", 1148 | "read-pkg-up": "^3.0.0", 1149 | "redent": "^2.0.0", 1150 | "trim-newlines": "^2.0.0", 1151 | "yargs-parser": "^10.0.0" 1152 | } 1153 | }, 1154 | "minimatch": { 1155 | "version": "3.0.4", 1156 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1157 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1158 | "dev": true, 1159 | "requires": { 1160 | "brace-expansion": "^1.1.7" 1161 | } 1162 | }, 1163 | "minimist": { 1164 | "version": "1.2.5", 1165 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1166 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1167 | "dev": true 1168 | }, 1169 | "minimist-options": { 1170 | "version": "3.0.2", 1171 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", 1172 | "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", 1173 | "dev": true, 1174 | "requires": { 1175 | "arrify": "^1.0.1", 1176 | "is-plain-obj": "^1.1.0" 1177 | } 1178 | }, 1179 | "modify-values": { 1180 | "version": "1.0.1", 1181 | "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", 1182 | "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", 1183 | "dev": true 1184 | }, 1185 | "neo-async": { 1186 | "version": "2.6.1", 1187 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", 1188 | "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", 1189 | "dev": true 1190 | }, 1191 | "normalize-package-data": { 1192 | "version": "2.5.0", 1193 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1194 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1195 | "dev": true, 1196 | "requires": { 1197 | "hosted-git-info": "^2.1.4", 1198 | "resolve": "^1.10.0", 1199 | "semver": "2 || 3 || 4 || 5", 1200 | "validate-npm-package-license": "^3.0.1" 1201 | }, 1202 | "dependencies": { 1203 | "semver": { 1204 | "version": "5.7.1", 1205 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1206 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1207 | "dev": true 1208 | } 1209 | } 1210 | }, 1211 | "null-check": { 1212 | "version": "1.0.0", 1213 | "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", 1214 | "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", 1215 | "dev": true 1216 | }, 1217 | "number-is-nan": { 1218 | "version": "1.0.1", 1219 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1220 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1221 | "dev": true 1222 | }, 1223 | "object-assign": { 1224 | "version": "4.1.1", 1225 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1226 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1227 | "dev": true 1228 | }, 1229 | "p-limit": { 1230 | "version": "1.3.0", 1231 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1232 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1233 | "dev": true, 1234 | "requires": { 1235 | "p-try": "^1.0.0" 1236 | } 1237 | }, 1238 | "p-locate": { 1239 | "version": "2.0.0", 1240 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1241 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1242 | "dev": true, 1243 | "requires": { 1244 | "p-limit": "^1.1.0" 1245 | } 1246 | }, 1247 | "p-try": { 1248 | "version": "1.0.0", 1249 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1250 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1251 | "dev": true 1252 | }, 1253 | "parse-github-repo-url": { 1254 | "version": "1.4.1", 1255 | "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", 1256 | "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", 1257 | "dev": true 1258 | }, 1259 | "parse-json": { 1260 | "version": "4.0.0", 1261 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 1262 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 1263 | "dev": true, 1264 | "requires": { 1265 | "error-ex": "^1.3.1", 1266 | "json-parse-better-errors": "^1.0.1" 1267 | } 1268 | }, 1269 | "path-exists": { 1270 | "version": "3.0.0", 1271 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1272 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1273 | "dev": true 1274 | }, 1275 | "path-parse": { 1276 | "version": "1.0.6", 1277 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1278 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1279 | "dev": true 1280 | }, 1281 | "path-type": { 1282 | "version": "3.0.0", 1283 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 1284 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 1285 | "dev": true, 1286 | "requires": { 1287 | "pify": "^3.0.0" 1288 | } 1289 | }, 1290 | "pify": { 1291 | "version": "3.0.0", 1292 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1293 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1294 | "dev": true 1295 | }, 1296 | "pinkie": { 1297 | "version": "2.0.4", 1298 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1299 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1300 | "dev": true 1301 | }, 1302 | "pinkie-promise": { 1303 | "version": "2.0.1", 1304 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1305 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1306 | "dev": true, 1307 | "requires": { 1308 | "pinkie": "^2.0.0" 1309 | } 1310 | }, 1311 | "process-nextick-args": { 1312 | "version": "2.0.1", 1313 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1314 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1315 | "dev": true 1316 | }, 1317 | "q": { 1318 | "version": "1.5.1", 1319 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 1320 | "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", 1321 | "dev": true 1322 | }, 1323 | "quick-lru": { 1324 | "version": "1.1.0", 1325 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", 1326 | "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", 1327 | "dev": true 1328 | }, 1329 | "read-pkg": { 1330 | "version": "3.0.0", 1331 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 1332 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 1333 | "dev": true, 1334 | "requires": { 1335 | "load-json-file": "^4.0.0", 1336 | "normalize-package-data": "^2.3.2", 1337 | "path-type": "^3.0.0" 1338 | } 1339 | }, 1340 | "read-pkg-up": { 1341 | "version": "3.0.0", 1342 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", 1343 | "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", 1344 | "dev": true, 1345 | "requires": { 1346 | "find-up": "^2.0.0", 1347 | "read-pkg": "^3.0.0" 1348 | }, 1349 | "dependencies": { 1350 | "find-up": { 1351 | "version": "2.1.0", 1352 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1353 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1354 | "dev": true, 1355 | "requires": { 1356 | "locate-path": "^2.0.0" 1357 | } 1358 | } 1359 | } 1360 | }, 1361 | "readable-stream": { 1362 | "version": "3.6.0", 1363 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1364 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1365 | "dev": true, 1366 | "requires": { 1367 | "inherits": "^2.0.3", 1368 | "string_decoder": "^1.1.1", 1369 | "util-deprecate": "^1.0.1" 1370 | } 1371 | }, 1372 | "redent": { 1373 | "version": "2.0.0", 1374 | "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", 1375 | "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", 1376 | "dev": true, 1377 | "requires": { 1378 | "indent-string": "^3.0.0", 1379 | "strip-indent": "^2.0.0" 1380 | } 1381 | }, 1382 | "repeating": { 1383 | "version": "2.0.1", 1384 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 1385 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 1386 | "dev": true, 1387 | "requires": { 1388 | "is-finite": "^1.0.0" 1389 | } 1390 | }, 1391 | "require-directory": { 1392 | "version": "2.1.1", 1393 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1394 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1395 | "dev": true 1396 | }, 1397 | "require-main-filename": { 1398 | "version": "2.0.0", 1399 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1400 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 1401 | "dev": true 1402 | }, 1403 | "resolve": { 1404 | "version": "1.17.0", 1405 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 1406 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 1407 | "dev": true, 1408 | "requires": { 1409 | "path-parse": "^1.0.6" 1410 | } 1411 | }, 1412 | "safe-buffer": { 1413 | "version": "5.2.0", 1414 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", 1415 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", 1416 | "dev": true 1417 | }, 1418 | "semver": { 1419 | "version": "7.1.1", 1420 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.1.tgz", 1421 | "integrity": "sha512-WfuG+fl6eh3eZ2qAf6goB7nhiCd7NPXhmyFxigB/TOkQyeLP8w8GsVehvtGNtnNmyboz4TgeK40B1Kbql/8c5A==", 1422 | "dev": true 1423 | }, 1424 | "set-blocking": { 1425 | "version": "2.0.0", 1426 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1427 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 1428 | "dev": true 1429 | }, 1430 | "signal-exit": { 1431 | "version": "3.0.3", 1432 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1433 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 1434 | "dev": true 1435 | }, 1436 | "source-map": { 1437 | "version": "0.6.1", 1438 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1439 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1440 | "dev": true 1441 | }, 1442 | "spdx-correct": { 1443 | "version": "3.1.0", 1444 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 1445 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 1446 | "dev": true, 1447 | "requires": { 1448 | "spdx-expression-parse": "^3.0.0", 1449 | "spdx-license-ids": "^3.0.0" 1450 | } 1451 | }, 1452 | "spdx-exceptions": { 1453 | "version": "2.3.0", 1454 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 1455 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 1456 | "dev": true 1457 | }, 1458 | "spdx-expression-parse": { 1459 | "version": "3.0.0", 1460 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 1461 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 1462 | "dev": true, 1463 | "requires": { 1464 | "spdx-exceptions": "^2.1.0", 1465 | "spdx-license-ids": "^3.0.0" 1466 | } 1467 | }, 1468 | "spdx-license-ids": { 1469 | "version": "3.0.5", 1470 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 1471 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 1472 | "dev": true 1473 | }, 1474 | "split": { 1475 | "version": "1.0.1", 1476 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 1477 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 1478 | "dev": true, 1479 | "requires": { 1480 | "through": "2" 1481 | } 1482 | }, 1483 | "split2": { 1484 | "version": "2.2.0", 1485 | "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", 1486 | "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", 1487 | "dev": true, 1488 | "requires": { 1489 | "through2": "^2.0.2" 1490 | }, 1491 | "dependencies": { 1492 | "readable-stream": { 1493 | "version": "2.3.7", 1494 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1495 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1496 | "dev": true, 1497 | "requires": { 1498 | "core-util-is": "~1.0.0", 1499 | "inherits": "~2.0.3", 1500 | "isarray": "~1.0.0", 1501 | "process-nextick-args": "~2.0.0", 1502 | "safe-buffer": "~5.1.1", 1503 | "string_decoder": "~1.1.1", 1504 | "util-deprecate": "~1.0.1" 1505 | } 1506 | }, 1507 | "safe-buffer": { 1508 | "version": "5.1.2", 1509 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1510 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1511 | "dev": true 1512 | }, 1513 | "string_decoder": { 1514 | "version": "1.1.1", 1515 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1516 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1517 | "dev": true, 1518 | "requires": { 1519 | "safe-buffer": "~5.1.0" 1520 | } 1521 | }, 1522 | "through2": { 1523 | "version": "2.0.5", 1524 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 1525 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 1526 | "dev": true, 1527 | "requires": { 1528 | "readable-stream": "~2.3.6", 1529 | "xtend": "~4.0.1" 1530 | } 1531 | } 1532 | } 1533 | }, 1534 | "standard-version": { 1535 | "version": "8.0.0", 1536 | "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-8.0.0.tgz", 1537 | "integrity": "sha512-cS/U9yhYPHfyokFce6e/H3U8MaKwZKSGzH25J776sChrae/doDQjsl3vCQ0hW1MSzdrUTb7pir4ApjnbDt/TAg==", 1538 | "dev": true, 1539 | "requires": { 1540 | "chalk": "2.4.2", 1541 | "conventional-changelog": "3.1.18", 1542 | "conventional-changelog-config-spec": "2.1.0", 1543 | "conventional-changelog-conventionalcommits": "4.2.3", 1544 | "conventional-recommended-bump": "6.0.5", 1545 | "detect-indent": "6.0.0", 1546 | "detect-newline": "3.1.0", 1547 | "dotgitignore": "2.1.0", 1548 | "figures": "3.1.0", 1549 | "find-up": "4.1.0", 1550 | "fs-access": "1.0.1", 1551 | "git-semver-tags": "3.0.1", 1552 | "semver": "7.1.1", 1553 | "stringify-package": "1.0.1", 1554 | "yargs": "15.3.1" 1555 | } 1556 | }, 1557 | "string-width": { 1558 | "version": "4.2.0", 1559 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1560 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1561 | "dev": true, 1562 | "requires": { 1563 | "emoji-regex": "^8.0.0", 1564 | "is-fullwidth-code-point": "^3.0.0", 1565 | "strip-ansi": "^6.0.0" 1566 | } 1567 | }, 1568 | "string_decoder": { 1569 | "version": "1.3.0", 1570 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1571 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1572 | "dev": true, 1573 | "requires": { 1574 | "safe-buffer": "~5.2.0" 1575 | } 1576 | }, 1577 | "stringify-package": { 1578 | "version": "1.0.1", 1579 | "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", 1580 | "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", 1581 | "dev": true 1582 | }, 1583 | "strip-ansi": { 1584 | "version": "6.0.0", 1585 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1586 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1587 | "dev": true, 1588 | "requires": { 1589 | "ansi-regex": "^5.0.0" 1590 | } 1591 | }, 1592 | "strip-bom": { 1593 | "version": "3.0.0", 1594 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1595 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1596 | "dev": true 1597 | }, 1598 | "strip-indent": { 1599 | "version": "2.0.0", 1600 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", 1601 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", 1602 | "dev": true 1603 | }, 1604 | "supports-color": { 1605 | "version": "5.5.0", 1606 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1607 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1608 | "dev": true, 1609 | "requires": { 1610 | "has-flag": "^3.0.0" 1611 | } 1612 | }, 1613 | "text-extensions": { 1614 | "version": "1.9.0", 1615 | "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", 1616 | "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", 1617 | "dev": true 1618 | }, 1619 | "through": { 1620 | "version": "2.3.8", 1621 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1622 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1623 | "dev": true 1624 | }, 1625 | "through2": { 1626 | "version": "3.0.1", 1627 | "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", 1628 | "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", 1629 | "dev": true, 1630 | "requires": { 1631 | "readable-stream": "2 || 3" 1632 | } 1633 | }, 1634 | "trim-newlines": { 1635 | "version": "2.0.0", 1636 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", 1637 | "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", 1638 | "dev": true 1639 | }, 1640 | "trim-off-newlines": { 1641 | "version": "1.0.1", 1642 | "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", 1643 | "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", 1644 | "dev": true 1645 | }, 1646 | "typedarray": { 1647 | "version": "0.0.6", 1648 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1649 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 1650 | "dev": true 1651 | }, 1652 | "uglify-js": { 1653 | "version": "3.9.2", 1654 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.2.tgz", 1655 | "integrity": "sha512-zGVwKslUAD/EeqOrD1nQaBmXIHl1Vw371we8cvS8I6mYK9rmgX5tv8AAeJdfsQ3Kk5mGax2SVV/AizxdNGhl7Q==", 1656 | "dev": true, 1657 | "optional": true, 1658 | "requires": { 1659 | "commander": "~2.20.3" 1660 | } 1661 | }, 1662 | "util-deprecate": { 1663 | "version": "1.0.2", 1664 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1665 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1666 | "dev": true 1667 | }, 1668 | "validate-npm-package-license": { 1669 | "version": "3.0.4", 1670 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 1671 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 1672 | "dev": true, 1673 | "requires": { 1674 | "spdx-correct": "^3.0.0", 1675 | "spdx-expression-parse": "^3.0.0" 1676 | } 1677 | }, 1678 | "which-module": { 1679 | "version": "2.0.0", 1680 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1681 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 1682 | "dev": true 1683 | }, 1684 | "wordwrap": { 1685 | "version": "1.0.0", 1686 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 1687 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 1688 | "dev": true 1689 | }, 1690 | "wrap-ansi": { 1691 | "version": "6.2.0", 1692 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 1693 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 1694 | "dev": true, 1695 | "requires": { 1696 | "ansi-styles": "^4.0.0", 1697 | "string-width": "^4.1.0", 1698 | "strip-ansi": "^6.0.0" 1699 | }, 1700 | "dependencies": { 1701 | "ansi-styles": { 1702 | "version": "4.2.1", 1703 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 1704 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 1705 | "dev": true, 1706 | "requires": { 1707 | "@types/color-name": "^1.1.1", 1708 | "color-convert": "^2.0.1" 1709 | } 1710 | }, 1711 | "color-convert": { 1712 | "version": "2.0.1", 1713 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1714 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1715 | "dev": true, 1716 | "requires": { 1717 | "color-name": "~1.1.4" 1718 | } 1719 | }, 1720 | "color-name": { 1721 | "version": "1.1.4", 1722 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1723 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1724 | "dev": true 1725 | } 1726 | } 1727 | }, 1728 | "xtend": { 1729 | "version": "4.0.2", 1730 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1731 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1732 | "dev": true 1733 | }, 1734 | "y18n": { 1735 | "version": "4.0.0", 1736 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 1737 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 1738 | "dev": true 1739 | }, 1740 | "yargs": { 1741 | "version": "15.3.1", 1742 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", 1743 | "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", 1744 | "dev": true, 1745 | "requires": { 1746 | "cliui": "^6.0.0", 1747 | "decamelize": "^1.2.0", 1748 | "find-up": "^4.1.0", 1749 | "get-caller-file": "^2.0.1", 1750 | "require-directory": "^2.1.1", 1751 | "require-main-filename": "^2.0.0", 1752 | "set-blocking": "^2.0.0", 1753 | "string-width": "^4.2.0", 1754 | "which-module": "^2.0.0", 1755 | "y18n": "^4.0.0", 1756 | "yargs-parser": "^18.1.1" 1757 | }, 1758 | "dependencies": { 1759 | "camelcase": { 1760 | "version": "5.3.1", 1761 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 1762 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 1763 | "dev": true 1764 | }, 1765 | "yargs-parser": { 1766 | "version": "18.1.3", 1767 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 1768 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 1769 | "dev": true, 1770 | "requires": { 1771 | "camelcase": "^5.0.0", 1772 | "decamelize": "^1.2.0" 1773 | } 1774 | } 1775 | } 1776 | }, 1777 | "yargs-parser": { 1778 | "version": "10.1.0", 1779 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", 1780 | "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", 1781 | "dev": true, 1782 | "requires": { 1783 | "camelcase": "^4.1.0" 1784 | } 1785 | } 1786 | } 1787 | } 1788 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "docker-terraform-ci", 3 | "version": "0.3.9", 4 | "description": "Dockerfile for Terraform CI related tasks.", 5 | "scripts": { 6 | "release": "standard-version" 7 | }, 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/dwmkerr/docker-terraform-ci.git" 11 | }, 12 | "author": "Dave Kerr ", 13 | "license": "MIT", 14 | "bugs": { 15 | "url": "https://github.com/dwmkerr/docker-terraform-ci/issues" 16 | }, 17 | "homepage": "https://github.com/dwmkerr/docker-terraform-ci#readme", 18 | "devDependencies": { 19 | "standard-version": "^8.0.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Bomb if anything fails. 4 | set -e 5 | 6 | IMAGE_NAME="dwmkerr/terraform-ci" # For CI 7 | 8 | function assert_installed { 9 | program=$1 10 | command=$2 11 | 12 | echo "Checking ${program} is installed..." 13 | result=$(eval "docker run ${IMAGE_NAME} command -v ${command}") 14 | if ! [ -x "${result}" ]; then 15 | echo "Error: Expected ${program} to be installed" >&2 16 | exit 1 17 | else 18 | echo "Success: ${program} is installed" 19 | fi 20 | } 21 | function assert_version { 22 | program=$1 23 | command=$2 24 | version=$3 25 | 26 | echo "Checking ${program} version..." 27 | result=$(eval "docker run ${IMAGE_NAME} ${command}" 2>&1) 28 | if [[ ${result} != *"${version}"* ]]; then 29 | echo "Error: Expected ${program} ${version}, but got: ${result}" >&2 30 | exit 1 31 | else 32 | echo "Success: Found ${program} ${version}" 33 | fi 34 | } 35 | 36 | # Assert the versions of tools we need. 37 | assert_version "terraform" "terraform -v" "0.13.0" 38 | assert_version "tflint" "tflint -v" "0.18.0" 39 | assert_version "awscli" "aws --version" "1.16" 40 | assert_version "checkov" "checkov -v" "1.0.484" 41 | --------------------------------------------------------------------------------