diff --git a/.github/workflows/anchore-analysis.yml b/.github/workflows/anchore-analysis.yml deleted file mode 100644 index c4d6baca9..000000000 --- a/.github/workflows/anchore-analysis.yml +++ /dev/null @@ -1,29 +0,0 @@ -# This workflow checks out code, performs an Anchore container image -# vulnerability and compliance scan, and integrates the results with -# GitHub Advanced Security code scanning feature. For more information on -# the Anchore scan action usage and parameters, see -# https://github.com/anchore/scan-action. For more information on -# Anchore container image scanning in general, see -# https://docs.anchore.com. - -name: Anchore Container Scan - -on: push - -jobs: - Anchore-Build-Scan: - runs-on: ubuntu-latest - steps: - - name: Checkout the code - uses: actions/checkout@v2 - - name: Build the Docker image - run: docker build . --file Dockerfile --tag localbuild/testimage:latest - - name: Run the local Anchore scan action itself with GitHub Advanced Security code scanning integration enabled - uses: anchore/scan-action@v2 - with: - image: "localbuild/testimage:latest" - acs-report-enable: true - - name: Upload Anchore Scan Report - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: results.sarif diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 3f74a8797..000000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: [master] - pull_request: - # The branches below must be a subset of the branches above - branches: [master] - schedule: - - cron: "0 6 * * 4" - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - # Override language selection by uncommenting this and choosing your languages - # with: - # languages: go, javascript, csharp, python, cpp, java - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..ae01ba788 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,796 @@ +name: Test + +on: + push: + branches: + - master + pull_request: + branches: + - master + release: + types: + - published + +jobs: + test-go: + name: Test Go code + if: github.event_name != 'release' + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Cache Go modules + id: cache-go-modules + uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-go-modules-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-master-go-modules- + + - name: Fetch all Go modules + if: steps.cache-go-modules.outputs.cache-hit != 'true' + run: make download-deps-go + + - name: Mock web assets + run: make mock-assets + + - name: Test Go code + run: make test-go + + - name: Report code coverage + uses: codecov/codecov-action@v1 + with: + flags: backend + + lint-go: + name: Lint Go code + needs: test-go + if: github.event_name != 'release' + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Cache Go modules + id: cache-go-modules + uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-go-modules-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-master-go-modules- + + - name: Fetch all Go modules + if: steps.cache-go-modules.outputs.cache-hit != 'true' + run: make download-deps-go + + - name: Mock web assets + run: make mock-assets + + - name: Lint Go code + run: make make lint-go + + format-go: + name: Check Go code formatting + needs: lint-go + if: github.event_name != 'release' + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Format Go code + run: make format-go + + - name: Check for local changes + run: git diff --exit-code + + go-mod-tidy: + name: Verify go.sum + if: github.event_name != 'release' + needs: lint-go + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Mock web assets + run: make mock-assets + + - name: Fetch code + run: go get -d -v ./cmd/karma + + - name: Run go mod tidy + run: go mod tidy + + - name: Tidy tools + run: make tools-go-mod-tidy + + - name: Check for local changes + run: git diff --exit-code + + openapi: + name: Verify OpenAPI client code + if: github.event_name != 'release' + needs: + - lint-go + - go-mod-tidy + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Generate OpenAPI code + run: make openapi-client + + - name: Check for local changes + run: git diff --exit-code + + test-js: + name: Test JS code + if: github.event_name != 'release' + runs-on: ubuntu-latest + strategy: + matrix: + env: + - "" + - "env TZ=Pacific/Easter" + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Cache NPM modules + id: cache-npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-master-npm- + + - name: Fetch all NPM dependencies + if: steps.cache-npm.outputs.cache-hit != 'true' + run: make -C ui npm-fetch + + - name: Test Node JS code + run: ${{ matrix.env }} make -C ui test-js + env: + NODE_ENV: test + + - name: Report code coverage + uses: codecov/codecov-action@v1 + with: + flags: ui + + lint-js: + name: Lint JS code + if: github.event_name != 'release' + needs: test-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Cache NPM modules + id: cache-npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-master-npm- + + - name: Fetch all NPM dependencies + if: steps.cache-npm.outputs.cache-hit != 'true' + run: make -C ui npm-fetch + + - name: Lint Node JS code + run: make -C ui lint-js + + format-js: + name: Check JS code formatting + if: github.event_name != 'release' + needs: lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Cache NPM modules + id: cache-npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-master-npm- + + - name: Fetch all NPM dependencies + if: steps.cache-npm.outputs.cache-hit != 'true' + run: make -C ui npm-fetch + + - name: Lint Node JS code + run: make -C ui format + + - name: Check for local changes + run: git diff --exit-code + + deps-js: + name: Check JS dependencies + if: github.event_name != 'release' + needs: lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Cache NPM modules + id: cache-npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-master-npm- + + - name: Fetch all NPM dependencies + if: steps.cache-npm.outputs.cache-hit != 'true' + run: make -C ui npm-fetch + + - name: Lint Node JS dependencies + run: make -C ui lint-deps + + lint-versions: + name: Lint Versions + if: github.event_name != 'release' + needs: lint-go + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Lint Go Versions + run: make lint-golang-version + + - name: Lint Node JS Versions + run: make lint-nodejs-version + + - name: Lint Bootstrap Version + run: make lint-bootstrap-version + + typescript: + name: Check for non-typescript components + if: github.event_name != 'release' + needs: lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Check for non-typescript UI components + run: make -C ui lint-typescript + + changelog: + name: Generate Changelog + if: github.event_name != 'release' + needs: + - lint-go + - lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Cache Go modules + id: cache-go-modules + uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-go-modules-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-master-go-modules- + + - name: Fetch all Go modules + if: steps.cache-go-modules.outputs.cache-hit != 'true' + run: make download-deps-go + + - name: Generate Changelog + run: make changelog + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + git-commit: + name: Lint git commit + if: github.event_name != 'release' + needs: + - lint-go + - lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + with: + fetch-depth: 100 + + - name: Lint git commit + uses: wagoid/commitlint-github-action@v2.0.3 + with: + configFile: .commitlintrc.js + + docs: + name: Lint documentation + if: github.event_name != 'release' + needs: + - lint-go + - lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Run markdown-lint + uses: avto-dev/markdown-lint@v1.4.0 + with: + args: "*.md docs" + + benchmark-go: + name: Benchmark Go code compare + if: github.event_name == 'pull_request' + needs: + - lint-go + - lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + with: + fetch-depth: 200 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Cache Go modules + id: cache-go-modules + uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-go-modules-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-master-go-modules- + + - name: Fetch all Go modules + if: steps.cache-go-modules.outputs.cache-hit != 'true' + run: make download-deps-go + + - name: Mock web assets + run: make mock-assets + + - name: Run benchmark + run: ./scripts/have-backend-changes.sh || ./scripts/ci-diff-benchmark-go.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PULL_REQUEST_NUMBER: ${{ github.event.number }} + + webpack-bundle-size: + name: Webpack bundle size compare + if: github.event_name == 'pull_request' + needs: + - lint-go + - lint-js + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + with: + fetch-depth: 200 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Cache NPM modules + id: cache-npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-master-npm- + + - name: Fetch all NPM dependencies + if: steps.cache-npm.outputs.cache-hit != 'true' + run: make -C ui npm-fetch + + - name: Diff bundle size + run: ./scripts/have-ui-changes.sh || ./scripts/ci-diff-webpack.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PULL_REQUEST_NUMBER: ${{ github.event.number }} + + percy: + name: Percy UI snapshots + if: github.event_name != 'release' + needs: + - test-go + - test-js + - format-go + - format-js + - lint-go + - lint-js + - go-mod-tidy + - openapi + - git-commit + - lint-versions + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + with: + fetch-depth: 200 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Cache NPM modules + id: cache-npm + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-master-npm- + + - name: Fetch all NPM dependencies + if: steps.cache-npm.outputs.cache-hit != 'true' + run: make -C ui npm-fetch + + - name: Run Percy + shell: bash + run: ./scripts/percy-skip-deps.sh || make -C ui test-percy + env: + NODE_ENV: test + PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} + + cross-compile: + name: Cross compile binaries + needs: + - test-go + - test-js + - format-go + - format-js + - lint-go + - lint-js + - go-mod-tidy + - openapi + - git-commit + - lint-versions + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + with: + fetch-depth: 200 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.5 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Cache Go modules and build cache + uses: actions/cache@v2 + with: + path: | + ~/go/pkg/mod + ~/.cache/go-build + ~/.npm + key: ${{ runner.os }}-${{ env.GITHUB_REF_SLUG }}-go-cc-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-master-go-cc- + + - name: Cross compile binaries + run: make crosscompile -j 2 + env: + NODE_ENV: production + + - name: Compress binaries + run: | + mkdir -p artifacts + export SOURCE_DATE_EPOCH=$(git show -s --format=%ci ${GITHUB_SHA}) + for i in karma-*; do tar --mtime="${SOURCE_DATE_EPOCH}" --owner=0 --group=0 --numeric-owner -c $i | gzip -n - > artifacts/$i.tar.gz; done + shasum -a 512 artifacts/karma-*.tar.gz | tee artifacts/sha512sum.txt + - name: Get release + if: github.event_name == 'release' + id: get_release + uses: bruceadams/get-release@v1.2.2 + env: + GITHUB_TOKEN: ${{ github.token }} + + - name: Upload binaries to GitHub release + if: github.event_name == 'release' + uses: AButler/upload-release-assets@v2.0 + with: + files: "artifacts/*" + repo-token: ${{ secrets.GITHUB_TOKEN }} + + docker: + name: Build docker image + needs: + - test-go + - test-js + - format-go + - format-js + - lint-go + - lint-js + - go-mod-tidy + - openapi + - git-commit + - lint-versions + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + with: + fetch-depth: 200 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Build Docker image + run: make docker-image + + - name: "Tag :latest for Docker Hub" + run: docker tag karma:latest lmierzwa/karma:latest + + - name: "Tag :vX.Y for Docker Hub" + if: github.event_name == 'release' + run: docker tag karma:latest lmierzwa/karma:${{ env.GITHUB_REF_SLUG }} + + - name: Login to Docker Hub + if: github.event_name != 'pull_request' + shell: bash + run: echo "${DOCKER_HUB_PASSWORD}" | docker login -u lmierzwa --password-stdin + env: + DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} + + - name: Push Docker image to Docker Hub + if: github.event_name != 'pull_request' + run: docker push lmierzwa/karma + + - name: "Tag :latest for GitHub Container Registry" + run: docker tag karma:latest ghcr.io/prymitive/karma:latest + + - name: "Tag :vX.Y for GitHub Container Registry" + if: github.event_name == 'release' + run: docker tag karma:latest ghcr.io/prymitive/karma:${{ env.GITHUB_REF_SLUG }} + + - name: Login to GitHub Container Registry + if: github.event_name != 'pull_request' + shell: bash + run: echo "${GITHUB_PKG_TOKEN}" | docker login ghcr.io -u prymitive --password-stdin + env: + GITHUB_PKG_TOKEN: ${{ secrets.GITHUB_PKG_TOKEN }} + + - name: Push Docker image to GitHub Container Registry + if: github.event_name != 'pull_request' + run: docker push ghcr.io/prymitive/karma + + demo-deploy: + name: Deploy demo app to Heroku + needs: + - test-go + - test-js + - format-go + - format-js + - lint-go + - lint-js + - go-mod-tidy + - openapi + - git-commit + - lint-versions + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + with: + fetch-depth: 200 + + - name: Set git slug envs + uses: rlespinasse/github-slug-action@3.1.0 + + - name: Get version + run: | + echo "::stop-commands::`echo -n ${{ github.token }} | sha256sum | head -c 64`" + VERSION=$(make show-version) + echo "::set-env name=VERSION::${VERSION}" + echo "::`echo -n ${{ github.token }} | sha256sum | head -c 64`::" + + - name: Build Docker image + run: docker build --build-arg VERSION=${VERSION} -t registry.heroku.com/karma-demo/web -f demo/Dockerfile . + + - name: Write .netrc + run: | + echo "machine api.heroku.com" >> $HOME/.netrc + echo " login l.mierzwa@gmail.com" >> $HOME/.netrc + echo " password ${HEROKU_API_KEY}" >> $HOME/.netrc + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + + - name: Login to Heroku + run: echo "${HEROKU_API_KEY}" | docker login registry.heroku.com -u _ --password-stdin + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + + - name: Push docker image to Heroku + run: docker push registry.heroku.com/karma-demo/web + + - name: Install Heroku CLI + run: curl -s --connect-timeout 30 --fail https://cli-assets.heroku.com/install.sh | sh + + - name: Trigger Heroku release + run: /usr/local/bin/heroku container:release web --app karma-demo + + demo-e2e: + name: Test demo app + needs: demo-deploy + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Node JS + uses: actions/setup-node@v1 + with: + node-version: 14.15.1 + + - name: Run e2e test + run: make -C ui test-demo + + codeql: + name: CodeQL + if: github.event_name != 'release' + needs: + - cross-compile + - docker + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: github.event_name == 'pull_request' + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + # Override language selection by uncommenting this and choosing your languages + # with: + # languages: go, javascript, csharp, python, cpp, java + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 + + anchore: + name: Anchore Container Scan + if: github.event_name != 'release' + needs: + - cross-compile + - docker + runs-on: ubuntu-latest + steps: + - name: Checkout the code + uses: actions/checkout@v2 + + - name: Build the Docker image + run: docker build . --file Dockerfile --tag localbuild/testimage:latest + + - name: Run the local Anchore scan action itself with GitHub Advanced Security code scanning integration enabled + uses: anchore/scan-action@v2 + with: + image: "localbuild/testimage:latest" + acs-report-enable: true + + - name: Upload Anchore Scan Report + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: results.sarif diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e35f3ab35..000000000 --- a/.travis.yml +++ /dev/null @@ -1,322 +0,0 @@ -__defaults_go: &DEFAULTS_GO - language: go - go: "1.15.5" - cache: - directories: - - "$HOME/.npm" - # https://restic.net/blog/2018-09-02/travis-build-cache - - $HOME/.cache/go-build - - $HOME/gopath/pkg/mod - before_cache: - # this log file is updated on every get/set operation - # so it forces new cache archive on every build - # remove it before creating cache archive - - rm -vf $HOME/.cache/go-build/log.txt - env: - - GO111MODULE=on - -__defaults_js: &DEFAULTS_JS - language: node_js - # we run make to install everything - install: [] - cache: - directories: - - "$HOME/.npm" - env: - - NODE_ENV=test - -git: - depth: 100 - -os: linux -language: shell - -jobs: - allow_failures: - - name: Percy UI snapshots - - name: Webpack bundle size compare - - name: Benchmark Go code compare - include: - - stage: Stats - name: Webpack bundle size compare - if: (repo = prymitive/karma AND type = pull_request AND fork = false) - <<: *DEFAULTS_JS - env: - # GITHUB_TOKEN for CI Bundle size diff comments and gist uploads - - secure: "Or5fiXZfgIsXvzoOdEprRwJ0uwUjMvxGHE3LG+h3OsIBO6WA8vgOqVOjqVHV2dgC9cSjm5A7MX52S7cDqfkQDkgnVHpVxRwDC9n9O4vnaFdCZ4nC+d18z8dikbiwgdeWQ+Wi6RhZENye1Lu5sBaAJ09wYgx9lNdEVpRaTUvUw6grSlESJZSXoxfxWWpmTyx+yPH4sxuWjZ7gCspDX9s9k4fjpY4LkhQQwLlk8wPc2hfDg48e+K1OR6sYB8uRS33Xc4fQtzElzazmaZ0fn77h5ysDgC1g/ko+E2j8HHMbZvFpzYpm1bCpIv1G/0A2ItH7gT3HsuwkDvfH/it56JTCbBWJJ+hTDeswCQNu0h797QM6jv0o5wgKpHR1t+AeM9vDe4Ds0pAXouJz0LJewNOdNvi5O1BZA9OooKc34hwTJs/zj5NwiZuOyPSMhDBGa++Vhsr9K3rPD9+97M2hac6NO6TBVWZjvqJilmkjJs+bKrl//ClBvdhDGkJNDbB+2emdD1/wzpPVJPp3IRhzeEF89IVE58qE+OQnIwtbEZ2W1ct6Ep7ZJdrXWc/VBdJB1ELfUtNmkvWFZD5IJfnb/Z5MS6iespXlV5alPQ7eZ2jNl3tn7uDaCStuQN1tO2wthNnsSU/OkfFRch/Ks3gYC5+v7n8aJMkTYFmHr4Y/xlXBsrA=" - script: - - ./scripts/have-ui-changes.sh || ./scripts/ci-diff-webpack.sh - - - stage: Stats - name: Benchmark Go code compare - if: (repo = prymitive/karma AND type = pull_request AND fork = false) - <<: *DEFAULTS_GO - env: - # GITHUB_TOKEN for CI Bundle size diff comments and gist uploads - - secure: "Or5fiXZfgIsXvzoOdEprRwJ0uwUjMvxGHE3LG+h3OsIBO6WA8vgOqVOjqVHV2dgC9cSjm5A7MX52S7cDqfkQDkgnVHpVxRwDC9n9O4vnaFdCZ4nC+d18z8dikbiwgdeWQ+Wi6RhZENye1Lu5sBaAJ09wYgx9lNdEVpRaTUvUw6grSlESJZSXoxfxWWpmTyx+yPH4sxuWjZ7gCspDX9s9k4fjpY4LkhQQwLlk8wPc2hfDg48e+K1OR6sYB8uRS33Xc4fQtzElzazmaZ0fn77h5ysDgC1g/ko+E2j8HHMbZvFpzYpm1bCpIv1G/0A2ItH7gT3HsuwkDvfH/it56JTCbBWJJ+hTDeswCQNu0h797QM6jv0o5wgKpHR1t+AeM9vDe4Ds0pAXouJz0LJewNOdNvi5O1BZA9OooKc34hwTJs/zj5NwiZuOyPSMhDBGa++Vhsr9K3rPD9+97M2hac6NO6TBVWZjvqJilmkjJs+bKrl//ClBvdhDGkJNDbB+2emdD1/wzpPVJPp3IRhzeEF89IVE58qE+OQnIwtbEZ2W1ct6Ep7ZJdrXWc/VBdJB1ELfUtNmkvWFZD5IJfnb/Z5MS6iespXlV5alPQ7eZ2jNl3tn7uDaCStuQN1tO2wthNnsSU/OkfFRch/Ks3gYC5+v7n8aJMkTYFmHr4Y/xlXBsrA=" - before_script: - - travis_retry make mock-assets - script: - - ./scripts/have-backend-changes.sh || ./scripts/ci-diff-benchmark-go.sh - - - stage: Test and Lint - name: Test Go code - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_GO - before_script: - - travis_retry make mock-assets - script: make test-go - after_success: - - travis_retry curl -s --connect-timeout 30 --fail https://codecov.io/bash | bash -s -- -F backend - - - stage: Test and Lint - name: Test JavaScript code - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_JS - script: make -C ui test-js - after_success: - - travis_retry curl -s --connect-timeout 30 --fail https://codecov.io/bash | bash -s -- -F ui - - # duplicate js test but with a different time zone, to ensure that tests/code work with non-UTC time zone - - stage: Test and Lint - name: Test JavaScript code with Pacific/Easter time zone - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_JS - script: env TZ=Pacific/Easter make -C ui test-js - after_success: - - travis_retry curl -s --connect-timeout 30 --fail https://codecov.io/bash | bash -s -- -F ui - - - stage: Test and Lint - name: Check for non-typescript UI components - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - script: make -C ui lint-typescript - - - stage: Test and Lint - name: Lint git commit - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_JS - script: make -C ui lint-git-ci - - - stage: Test and Lint - name: Lint Go code - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_GO - before_script: - - travis_retry make mock-assets - script: travis_retry make lint-go - - - stage: Test and Lint - name: Check Go code formatting - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_GO - before_script: - - travis_retry make mock-assets - script: - - make format-go - - git diff --exit-code - - - stage: Test and Lint - name: Verify go.sum - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_GO - script: - - travis_retry make mock-assets - - travis_retry go get -d -v ./cmd/karma - - travis_retry go mod tidy - - make tools-go-mod-tidy - - git diff --exit-code - - - stage: Test and Lint - name: Lint JavaScript code - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_JS - script: make -C ui lint-js - - - stage: Test and Lint - name: Check JavaScript code formatting - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_JS - script: - - make -C ui format - - git diff --exit-code - - - stage: Test and Lint - name: Check JavaScript dependencies - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_JS - script: - - make -C ui lint-deps - - - stage: Test and Lint - name: Lint documentation - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_JS - script: make -C ui lint-docs - - - stage: Test and Lint - name: Verify OpenAPI client code - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - language: shell - addons: - apt: - packages: - - docker-ce - script: - - travis_retry make openapi-client - - git diff --exit-code - - - stage: Test and Lint - name: Lint Golang Version - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - language: shell - script: make lint-golang-version - - - stage: Test and Lint - name: Lint Node Version - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - language: shell - script: make lint-nodejs-version - - - stage: Test and Lint - name: Lint Bootstrap Version - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - language: shell - script: make lint-bootstrap-version - - - stage: Test and Lint - name: Generate Changelog - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_GO - env: - - GO111MODULE=on - # GITHUB_TOKEN - - secure: "QsPAMhX52+jx8OZXmeZ0eDekHGdRmDbrWp48L4CbaTjgyZX+TSYIqsg6gTVDaHXW6b/AOFFdr8xvInelO2I0M1LV6mmbnzLslxfOxGo87qf9gVZk3VJry+qp2yJAd6s8CiO2GOUYzjOxk8Vd5R76ZpL1or10++tFojvCgYBzmIBFWpeVLyz6iJEgcqPowI/7cicITkEh67vx2DrVjiYptq42+f4fI2oeOf1U7nxd3YQFDtl00VyzacQJ7rVqONPWlagZPdn0w/qWTRkw4ynglVF4FufzCE5L6Bbe7xqbp9wxWhssmNCgC2xwIOu23ODLxSpYFqrYkdu6nLzBsPMxEBcc4O4oqx6IzUc1NMDhXwRmoFY4PQjmC8Rf0Q7oK0HIq+ZsYL0GxztOy0dWSXwoGwQvDLJyuoBtaN2lOKSGhAEeJqqpQaVIPbn3/cORAWXVJjuaFrIsU1Z2lSb60ENIcEHxTpBkbjAfPkk5u5jN4fck8tJMga4argi00fV14gHp4VGpq6o5UvoB+YdEJnPlypUW/8VY+EQhSoW98+b9QXBksL8g8/iezHAjIpwDfMTimSzTy7wd8wV/HR7pqpd9pNlKAhbCWNRa0YGrIoPff1YETRAZsI39lDMvrWjoMJWEDxoR/JAeYXX8V1JyCeX0uiLNisehfCfybc0kDM6Yv6Y=" - script: - - travis_retry make changelog - - - stage: Build and Deploy - name: Cross compile binaries - if: (repo = prymitive/karma AND type != pull_request) OR (fork = true AND type = pull_request) - <<: *DEFAULTS_GO - env: - # add an extra env so we don't push cross compilation cache into the main archive - # as it slows down other jobs - - JOB=cc - - GO111MODULE=on - - NODE_ENV=production - before_script: - # this stage needs to build everything including assets file and that - # requires running webpack, so we need nodejs here - - travis_retry nvm install $(< .nvmrc) - script: - # prune GOCACHE if it gets too big - - ./scripts/prune-go-cache.sh - - export SOURCE_DATE_EPOCH=$(git show -s --format=%ci ${TRAVIS_TAG:-${TRAVIS_COMMIT}}^{commit}) - - make crosscompile -j 2 - - for i in karma-*; do tar --mtime="${SOURCE_DATE_EPOCH}" --owner=0 --group=0 --numeric-owner -c $i | gzip -n - > $i.tar.gz; done - - shasum -a 512 karma-*.tar.gz | tee sha512sum.txt - # verify that there are no uncommited changes - - git diff --exit-code - # print GOCACHE size - - ./scripts/prune-go-cache.sh --dry-run - deploy: - provider: releases - api_key: - secure: "J0TR1UEjE/6dK/qRGhti/IYqrAI9cMYDt+UKhU7zcZgmurIRzOL1KXzMMQ30ZZJe++zY9m2zwyX/1hanHKXI97QNR94QaPmvVRHnBp8fZMKooKMh2vPSbU5LrkTxa4XDETsj+iH9o7UrVY2paaQFjNdJXfYoMSAP1TNpWNvZvS2Mq4jEopnr/5hZicXfkxkZq6K5/MoqkfjPj5bt8ULj2okk+9H+x0a3AMGsyp9YQ/QLL3v9wNSTOU33cQPmDGS84E5R+NX6/5ty4HJoFDwYudYYIyx9wun7rulxjxD6OB1htplqvpvP0SgCd1ah6ikTHI05Mil3QbkVjTnaQ48F2Y4R0H1qQ9jhIGRciqTuebS1WWm6t6XKAthwXm5/MO6YMNAWeLQ/eK6wIdPYfamWkkxOKsHJ8nI8YszMruW6b53DmNc7yh25fjJR7BL4p1zOXLUWJTOZVRoMjf4v9rW2A5hhPPPcDmVK59BQTPlqgP5Kh8lCLA5Hgm577oMfVt4gKPAlyni3iCkxW+pSn3bOVDafFk+3sTMmqGgcwcVBSWG5hMjGx0y2lTO5ElSwmloGoWUmJgco5+eoVp6yFYBdoY4ogrT8mhadovGBORavUQDxAhN9QJT6NqAJUzBOGf3iVyyCsKvERavOn2zo8yC1pTEwzjSekDB1NLRJ+pHF50k=" - skip_cleanup: true - file_glob: true - file: - - karma-*.tar.gz - - sha512sum.txt - on: - repo: prymitive/karma - tags: true - - - stage: Build and Deploy - name: Build docker image - # we build and push docker image on merge and tag, so this should only - # run for new branches, to test that they don't break docker builds - if: (repo = prymitive/karma AND type != pull_request AND branch != master AND tag IS NOT present) OR (fork = true AND type = pull_request) - language: shell - addons: - apt: - packages: - - docker-ce - script: travis_retry make docker-image - - - stage: Build and Deploy - name: Build and push docker image - if: repo = prymitive/karma AND ((type = push AND branch = master) OR tag IS present) - language: shell - addons: - apt: - packages: - - docker-ce - env: - # DOCKER_PASSWORD - - secure: "iCMjE3Andg+pDnEUXqrlN+6pQ6RNxXARnovrwYb26Fz57tz/sJQGGmcRv4Ac3As/by+f7HEFsMb81CzGq2SCcDJ99jqROo4WzCCcjiI7q5E/0ltsBT1ElL4z3GLG5iaofPnJK7tW8Cq7HO30ZoSB57hS1BwaXfbIicw4XyZSG5TYHZgH6iO+LM2HAuxqthyZlK5O+CmTslamSDw/wiuBzilKNaX+mzdPuVfNd8m91MX/Fq+L3Oj9e7yH42In/PYUdN6S9bFgJQewG/CRRP+MBDK45ET63aQxqvgJchs45rTIdvcXjPMzb5xF8oHdjB3z7GdALbKDxa05sBu+SD8ElyerVFF3G+uFicDsdXoIR+NeTVzwwqrk2YmqOVz6jHaTw5WApttPayMbq3zzyH5zezbMROF0/rogaAHsW38xHktwMmEJ+eR1kdWSEYVDrRrTYPNPZJAcBsF4di+PIfjZ/6Ih5k4n4bFEQsvdXp0hRbx3DLHHusKihKvONW6ckp8tvyT+72aWvCehB5XuasgOzMXxHtBG4XPcPt8EoHOs/0bszTWpP5Nt98OvOSZaX7oZuvhVS0s9JfgVUFhqj1I/uO8KQxOpKsQBTCV0pBW8T6CGeJFXQHgMfFe8auIzzmFQzgHpIrcr6tjrgsadAl0wG4EmheNI2PJMs09+rZxDgX4=" - # GITHUB_PACKAGES_TOKEN / personal token for uploading to github docker repo - - secure: "khmlnFdDKac2rAqnRgvTvxQh7KTcneB547AU3SmPmdSe4SdA9fqfi9Gd+gqe3jC+gqnuPC3Gmkr16B6m3/+aC0Hw4yPnKfQ+jePTNvcxkqDzjTAVg4+qa6k5qGnMMDRyY/1UKvTOA040BVfjtXbq7qCQAaFrgbZ5qmAOBML/CS11UBpZ2UblXREp73owidLD9A7x5FVqJ/l1x3CLV0ymoeatcZ3c3S34gzQ2BmdG5wAR2TpzR4rPGjDNEt94VQ1ZAxWOP0CDra83ymytFZvDxpRrfmbZGea0RkiJjyjC9boWxUiRB3CoXHku9eyOU5PJas0MOMZXEnhxVF9Zlxtj9rfYX+TEdhtXkRgtLiiGy5+QitbxLOia0G4AetvlulGTQV33Mn9FND9FTXb/AnRxX0R4lZ2pdejPnzQIH7XQBdJvliL1ywuletsuraFWFz0p1VQIkkEaiwpaWYMYORnYOq+eQ/Yd43hPQwDRLCHMYAjDOtAbDT9p1XC7yIDdtyE2FOeE6pnEQQbYgFL2GPSXXIhYrjMVfirKjiQ5NjEPiGHuuydzBpZ89VoFAQcwO4zw0pNvAseZjgNr0Iq7MqSBQbto1beglZptfsyLNJ5w1/es8wy3hirNLYP8PosaWccoWNQdzdbvkWrS9ipgJ/h6OskS3ehR7RXZvyD8yhTw3wM=" - script: - - export VERSION=$(make show-version) - - export LOCAL_IMAGE="karma:${VERSION}" - - export DOCKER_USERNAME=lmierzwa - - export DOCKER_IMAGE=karma - - export IMAGE_NAME="${DOCKER_USERNAME}/${DOCKER_IMAGE}" - - travis_retry make docker-image - ### Docker Hub - - travis_retry docker login -u "${DOCKER_USERNAME}" -p "${DOCKER_PASSWORD}" - - docker tag "${LOCAL_IMAGE}" "${IMAGE_NAME}:latest" - # tag with the version only if we have a git tag (new release was pushed) - - if [ -n "$TRAVIS_TAG" ]; then docker tag "${LOCAL_IMAGE}" "${IMAGE_NAME}:${VERSION}" ; fi - - travis_retry docker push "${IMAGE_NAME}" - ### GitHub - - travis_retry docker login ghcr.io -u prymitive -p "${GITHUB_PACKAGES_TOKEN}" - - docker tag "${LOCAL_IMAGE}" "ghcr.io/prymitive/karma:latest" - # tag with the version only if we have a git tag (new release was pushed) - - if [ -n "$TRAVIS_TAG" ]; then docker tag "${LOCAL_IMAGE}" "ghcr.io/prymitive/karma:${VERSION}" ; fi - - travis_retry docker push "ghcr.io/prymitive/karma" - - - stage: Build and Deploy - name: Deploy demo app to Heroku - # deploy on every job that isn't a PR, this way we: - # * don't deploy on PRs send from forks, only internal - # * deploy only once per PR - since we will deploy on branch job - if: repo = prymitive/karma AND type != pull_request - env: - # HEROKU_TOKEN, valid forever, needed to push docker image and release - # it on heroku app - - secure: "EJnXjoZ0K9JxZWk16kpmxYk/fez7OP9VlUUZfXctSK5TIov9VE/tMLsM/azZETZXE+bANgwsFtBAm+Jd45XffSYNy5shli5G7r/BR0ZhTQAPKVwUMpkroFvN4NbGvw/XGE51CPaQjqTKxrsf8JCrXgqVg6bPRt/wt0K0yP16ffPidQnpyBsZJtRX7ccUS/bEs7PxpMo8zCzFuhvC4SqQud7TDPBC+3S09jt1M92AsDTV1hUnuVSgW9/BLBTXL1GlHuVWIrE6A6Wbw5k89KZXTt+GUNNomZ4IfB70wHuuWF67vMCuBM8kC2ZzAlyDmCLevSPzsk8KTOu1lZL7UOqf2W0Oqk/lSaehT2rVX7ffJFOKKb8t62+pAI9V8excLlfYCJElb+ADKfH3L4CSODohVEnQex6Sz6cFwsSGrvGTt0Hq+U2CX3Tu0u3SauWHqdu1zqysfJLHBGiDyrqQ39JoAJQQTJ2adUiFj54GA9Ob8MDJglv7qPJcaZpkikiNLb80Wm2nbN/TBe0x4tsV1ntSouHpuYA7KZeKat11ZslO7vu1Z5fPy3FpMwYFkAlN2PCnsynCdxiJQwVf/fKguu6MZ2FUEWpSOspLWwooBrIH1N43n6eKs/dyk4yNmpQlGXe/cOY0mVfXwzZNi40k7CDkEj5plxyft25lBaKzEwibC30=" - language: shell - addons: - apt: - packages: - - docker-ce - before_script: - # a safe and boring version of cat > .netrc < EOF - - echo "machine api.heroku.com" >> $HOME/.netrc - - echo " login l.mierzwa@gmail.com" >> $HOME/.netrc - - echo " password $HEROKU_TOKEN" >> $HOME/.netrc - script: - - travis_retry docker build --build-arg VERSION=$(make show-version) -t registry.heroku.com/karma-demo/web -f demo/Dockerfile . - - travis_retry docker login -u _ -p "$HEROKU_TOKEN" registry.heroku.com - - travis_retry docker push registry.heroku.com/karma-demo/web - # bundled heroku cli doesn't know anything about containers, update it - - travis_retry curl -s --connect-timeout 30 --fail https://cli-assets.heroku.com/install.sh | sh - - travis_retry /usr/local/bin/heroku container:release web --app karma-demo - - - stage: Build and Deploy - name: Percy UI snapshots - if: (repo = prymitive/karma AND type != pull_request AND type != cron AND fork = false) - <<: *DEFAULTS_JS - env: - - NODE_ENV=test - - secure: "Fx290FkiIG0iVV+gXG22g5kEQs+bM7RkPZvM7q3nUp+8CNW0H627YVX/9WmthFRMmR2gWOltjZLYBGFL1lUaF/Qbvs+xjWibyNGuBJN3ODDTs56ywYg5Ege4ewQFH1XToV1WEwJ6ET0mREo5LSW4o1TBmZtGNzNldeM+aRScOMW6T8sUh2cYY+nHF5sQXN2UM3BtXZVY2kRQbRy5CxLql7l4keGO6anmD+AI3jn8Wj9bbY/CJxSLnXvWbw66Uj37lv7wlEzO4GKqtBYMMbmGBwjgrwSfVH42tq6PxabzFzZLUmnIr62EyBwfTQG2JoPXLC6AIouH2erM2fd2Qg4WF8yIOqPAJki0vw6VQS0VRHGvwrq/OXmiTWgpqTCXrIvrs45b2FsXGec10G/rFrS3ayoutXMNOwjBGYIkyxPP8ngfa2jinOWG05OMuOHPRDqCsAYL5jTIqUwp0VkoDNvp8aibQeKTKl7y5xkJtOstWaa1uMirRVFpi4SUCWvylt1sTR2VF2bzmuRFkQQ1xX2LvMtPKk86CriLSch2jeke90f4Ygl4fJV5+H3CsMION5WiTWFvPf0ncxzZKPCQ/SFnNQUjoo87YHg0aI9UgvOfd3Ca1k9Fxw5qC919eHFPF4Qz8z85WN58VXJVCEb1w2opPWoeiqMtabq9fCusxR8Y43Q=" - script: ./scripts/percy-skip-deps.sh || make -C ui test-percy - - - stage: E2E - name: Test demo site - if: (repo = prymitive/karma AND type != pull_request AND fork = false) - <<: *DEFAULTS_JS - script: - - travis_retry make -C ui test-demo diff --git a/cmd/karma/exporter.go b/cmd/karma/exporter.go index a2c81d43b..0f05b2b5a 100644 --- a/cmd/karma/exporter.go +++ b/cmd/karma/exporter.go @@ -1,7 +1,5 @@ package main -// stripped down version of https://github.com/chenjiandongx/ginprom - import ( "fmt" "net/http" diff --git a/make/docker.mk b/make/docker.mk index 78052aef2..8f2756a9d 100644 --- a/make/docker.mk +++ b/make/docker.mk @@ -2,7 +2,7 @@ include make/vars.mk .PHONY: docker-image docker-image: - docker build --build-arg VERSION=$(VERSION) -t $(NAME):$(VERSION) . + docker build --build-arg VERSION=$(VERSION) -t $(NAME):latest . .PHONY: run-demo run-demo: diff --git a/make/go.mk b/make/go.mk index 78424a542..70d101df1 100644 --- a/make/go.mk +++ b/make/go.mk @@ -62,6 +62,7 @@ format-go: .PHONY: download-deps-go download-deps-go: + @for f in $(wildcard tools/*/go.mod) ; do echo ">>> $$f" && cd $(CURDIR)/`dirname "$$f"` && $(GO) mod download && cd $(CURDIR) ; done $(GO) mod download .PHONY: install-deps-build-go diff --git a/make/lint-versions.mk b/make/lint-versions.mk index 873d1f0c1..be1228b8a 100644 --- a/make/lint-versions.mk +++ b/make/lint-versions.mk @@ -1,22 +1,24 @@ +.PHONY: find-golang-versions +find-golang-versions: + @find $(CURDIR) -name Dockerfile -exec grep 'FROM golang' {} \; | cut -d: -f2 | cut -d'-' -f1 + @grep go-version $(CURDIR)/.github/workflows/* | awk '{print $$3}' + .PHONY: lint-golang-version lint-golang-version: - $(eval CI_VERSION := $(shell grep -E '^(\ +)go:' .travis.yml | awk '{print $$2}' | tr -d "'\"" | sed -E s_'^([0-9]+\.[0-9]+)$$'_'\1.0'_g)) - $(eval BUILD_VERSION := $(shell grep -E '^FROM golang:' Dockerfile | cut -d : -f 2 | awk '{print $1}' | cut -d '-' -f 1)) - $(eval DEMO_VERSION := $(shell grep -E '^FROM golang:' demo/Dockerfile | cut -d : -f 2 | awk '{print $1}' | cut -d '-' -f 1)) - @if [ "$(CI_VERSION)" != "$(BUILD_VERSION)" ] || [ "$(CI_VERSION)" != "$(DEMO_VERSION)" ] || [ "$(BUILD_VERSION)" != "$(DEMO_VERSION)" ]; then \ - echo "Golang version mismatch: CI_VERSION=$(CI_VERSION) BUILD_VERSION=$(BUILD_VERSION) DEMO_VERSION=$(DEMO_VERSION)"; \ - exit 1; \ - fi + $(eval VERSIONS := $(shell make find-golang-versions | sort | uniq)) + $(eval COUNT := $(shell echo "$(VERSIONS)" | wc -w)) + @if [ $(COUNT) -gt 1 ]; then echo "Multiple Go versions: $(VERSIONS)" ; exit 1 ; fi + +.PHONY: find-nodejs-versions +find-nodejs-versions: + @find $(CURDIR) -name Dockerfile -exec grep 'FROM node' {} \; | cut -d: -f2 | cut -d'-' -f1 + @grep node-version $(CURDIR)/.github/workflows/* | awk '{print $$3}' .PHONY: lint-nodejs-version lint-nodejs-version: - $(eval CI_VERSION := $(shell cat .nvmrc)) - $(eval BUILD_VERSION := $(shell grep -E '^FROM node:' Dockerfile | cut -d : -f 2 | awk '{print $1}' | cut -d '-' -f 1)) - $(eval DEMO_VERSION := $(shell grep -E '^FROM node:' demo/Dockerfile | cut -d : -f 2 | awk '{print $1}' | cut -d '-' -f 1)) - @if [ "$(CI_VERSION)" != "$(BUILD_VERSION)" ] || [ "$(CI_VERSION)" != "$(DEMO_VERSION)" ] || [ "$(BUILD_VERSION)" != "$(DEMO_VERSION)" ]; then \ - echo "Node version mismatch: CI_VERSION=$(CI_VERSION) BUILD_VERSION=$(BUILD_VERSION) DEMO_VERSION=$(DEMO_VERSION)"; \ - exit 1; \ - fi + $(eval VERSIONS := $(shell make find-nodejs-versions | sort | uniq)) + $(eval COUNT := $(shell echo "$(VERSIONS)" | wc -w)) + @if [ $(COUNT) -gt 1 ]; then echo "Multiple NodeJS versions: $(VERSIONS)" ; exit 1 ; fi .PHONY: lint-bootstrap-version lint-bootstrap-version: diff --git a/renovate.json b/renovate.json index 96baea3e8..5da3a0af0 100644 --- a/renovate.json +++ b/renovate.json @@ -2,7 +2,6 @@ "extends": ["config:base"], "prHourlyLimit": 1, "rebaseStalePrs": false, - "travis": { "enabled": true }, "masterIssue": true, "postUpdateOptions": ["gomodTidy"], "packageRules": [ diff --git a/scripts/ci-diff-benchmark-go.sh b/scripts/ci-diff-benchmark-go.sh index 9a9209b52..04ba41e17 100755 --- a/scripts/ci-diff-benchmark-go.sh +++ b/scripts/ci-diff-benchmark-go.sh @@ -8,7 +8,7 @@ git reset --hard FETCH_HEAD make benchmark-go | tee master.txt -git reset --hard ${TRAVIS_PULL_REQUEST_SHA} +git reset --hard ${GITHUB_SHA} make benchmark-go | tee new.txt make benchmark-compare-go | tee benchstat.txt diff --git a/scripts/ci-diff-webpack.sh b/scripts/ci-diff-webpack.sh index 0c1dc59cf..633fbeeca 100755 --- a/scripts/ci-diff-webpack.sh +++ b/scripts/ci-diff-webpack.sh @@ -10,7 +10,7 @@ make -C ui build/stats.json mv ui/build/stats.json master.json make clean -git reset --hard ${TRAVIS_PULL_REQUEST_SHA} +git reset --hard ${GITHUB_SHA} make -C ui build/stats.json ./scripts/cra-bundle-stats-diff.py master.json ui/build/stats.json | tee diff.html diff --git a/scripts/have-backend-changes.sh b/scripts/have-backend-changes.sh index d5e23477c..7333b92d1 100755 --- a/scripts/have-backend-changes.sh +++ b/scripts/have-backend-changes.sh @@ -4,11 +4,11 @@ set -o errexit set -o pipefail -if [ "${TRAVIS_BRANCH}" == "master" ] && [ -n ${TRAVIS_COMMIT_RANGE} ]; then - RANGE="${TRAVIS_COMMIT_RANGE}" +if [ "${GITHUB_HEAD_REF_SLUG}" == "master" ]; then + RANGE="HEAD~.." else git fetch origin master - RANGE="FETCH_HEAD...${TRAVIS_COMMIT}" + RANGE="FETCH_HEAD...${GITHUB_SHA}" fi diff --git a/scripts/have-ui-changes.sh b/scripts/have-ui-changes.sh index a8a30f839..5b944d87d 100755 --- a/scripts/have-ui-changes.sh +++ b/scripts/have-ui-changes.sh @@ -4,11 +4,11 @@ set -o errexit set -o pipefail -if [ "${TRAVIS_BRANCH}" == "master" ] && [ -n ${TRAVIS_COMMIT_RANGE} ]; then - RANGE="${TRAVIS_COMMIT_RANGE}" +if [ "${GITHUB_HEAD_REF_SLUG}" == "master" ]; then + RANGE="HEAD~.." else git fetch origin master - RANGE="FETCH_HEAD...${TRAVIS_COMMIT}" + RANGE="FETCH_HEAD...${GITHUB_SHA}" fi diff --git a/scripts/percy-skip-deps.sh b/scripts/percy-skip-deps.sh index 1a6e87f6a..9762b23fd 100755 --- a/scripts/percy-skip-deps.sh +++ b/scripts/percy-skip-deps.sh @@ -4,11 +4,11 @@ set -o errexit set -o pipefail -if [ "${TRAVIS_BRANCH}" == "master" ] && [ -n ${TRAVIS_COMMIT_RANGE} ]; then - RANGE="${TRAVIS_COMMIT_RANGE}" +if [ "${GITHUB_HEAD_REF_SLUG}" == "master" ]; then + RANGE="HEAD~.." else git fetch origin master - RANGE="FETCH_HEAD...${TRAVIS_COMMIT}" + RANGE="FETCH_HEAD...${GITHUB_SHA}" fi diff --git a/scripts/pr-comment.py b/scripts/pr-comment.py index bc351bad1..934a27e5d 100755 --- a/scripts/pr-comment.py +++ b/scripts/pr-comment.py @@ -78,7 +78,7 @@ if __name__ == '__main__': sys.exit(1) token = os.getenv('GITHUB_TOKEN') - pr = os.getenv('TRAVIS_PULL_REQUEST') + pr = os.getenv('PULL_REQUEST_NUMBER') commentName = sys.argv[1] commentFile = sys.argv[2] format = sys.argv[3] @@ -87,7 +87,7 @@ if __name__ == '__main__': print('GITHUB_TOKEN env variable is missing') sys.exit(1) if not pr: - print('TRAVIS_PULL_REQUEST env variable is missing') + print('PULL_REQUEST_NUMBER env variable is missing') sys.exit(1) if not commentName or not commentFile or not format: print('Usage: NAME PATH FORMAT') diff --git a/scripts/prune-go-cache.sh b/scripts/prune-go-cache.sh deleted file mode 100755 index b1adcc65e..000000000 --- a/scripts/prune-go-cache.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit -set -o pipefail - - -DRY_RUN="$1" - -GOCACHE=$(go env GOCACHE) -SIZE=`du -sxm ${GOCACHE} | awk '{print $1}'` -echo "GOCACHE size: ${SIZE}MB" - -if [ "${DRY_RUN}" == "" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ $SIZE -gt 4200 ]; then - echo "Pruning GOCACHE at ${GOCACHE}" - find "${GOCACHE}" -type f -delete -fi diff --git a/ui/.depcheckrc.yaml b/ui/.depcheckrc.yaml index 309df18c7..7ee08199a 100644 --- a/ui/.depcheckrc.yaml +++ b/ui/.depcheckrc.yaml @@ -8,7 +8,5 @@ ignores: # devDeps - "@types/jest" - "@types/node" - - "@commitlint/travis-cli" - "@storybook/preset-create-react-app" - depcheck - - markdownlint-cli diff --git a/ui/Makefile b/ui/Makefile index 0c0938fcb..1c15cbd88 100644 --- a/ui/Makefile +++ b/ui/Makefile @@ -16,6 +16,9 @@ $(NODE_INSTALL): package.json package-lock.json @if [ -e $(NODE_INSTALL) ]; then npm install ; else npm ci; fi touch $@ +.PHONY: npm-fetch +npm-fetch: $(NODE_INSTALL) + $(NODE_PATH)/%: $(NODE_INSTALL) @if [ ! -x $@ ]; then echo "missing script: $@" ; exit 1; fi @@ -43,14 +46,6 @@ lint-js: $(NODE_PATH)/eslint @rm -fr node_modules/.cache/eslint-loader eslint --ext .js,.jsx,.ts,.tsx src -.PHONY: lint-git-ci -lint-git-ci: $(NODE_PATH)/commitlint-travis - commitlint-travis - -.PHONY: lint-docs -lint-docs: $(NODE_PATH)/markdownlint - markdownlint ../*.md ../docs - .PHONY: lint-deps lint-deps: $(NODE_PATH)/depcheck depcheck $(CURDIR) diff --git a/ui/package-lock.json b/ui/package-lock.json index 554c06c0f..f0e35b221 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -1175,523 +1175,6 @@ "minimist": "^1.2.0" } }, - "@commitlint/cli": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-11.0.0.tgz", - "integrity": "sha512-YWZWg1DuqqO5Zjh7vUOeSX76vm0FFyz4y0cpGMFhrhvUi5unc4IVfCXZ6337R9zxuBtmveiRuuhQqnRRer+13g==", - "dev": true, - "requires": { - "@babel/runtime": "^7.11.2", - "@commitlint/format": "^11.0.0", - "@commitlint/lint": "^11.0.0", - "@commitlint/load": "^11.0.0", - "@commitlint/read": "^11.0.0", - "chalk": "4.1.0", - "core-js": "^3.6.1", - "get-stdin": "8.0.0", - "lodash": "^4.17.19", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^15.1.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" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.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 - }, - "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 - }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "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 - }, - "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 - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "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" - } - }, - "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" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "@commitlint/ensure": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-11.0.0.tgz", - "integrity": "sha512-/T4tjseSwlirKZdnx4AuICMNNlFvRyPQimbZIOYujp9DSO6XRtOy9NrmvWujwHsq9F5Wb80QWi4WMW6HMaENug==", - "dev": true, - "requires": { - "@commitlint/types": "^11.0.0", - "lodash": "^4.17.19" - } - }, - "@commitlint/execute-rule": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-11.0.0.tgz", - "integrity": "sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ==", - "dev": true - }, - "@commitlint/format": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-11.0.0.tgz", - "integrity": "sha512-bpBLWmG0wfZH/svzqD1hsGTpm79TKJWcf6EXZllh2J/LSSYKxGlv967lpw0hNojme0sZd4a/97R3qA2QHWWSLg==", - "dev": true, - "requires": { - "@commitlint/types": "^11.0.0", - "chalk": "^4.0.0" - }, - "dependencies": { - "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" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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 - }, - "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": { - "has-flag": "^4.0.0" - } - } - } - }, - "@commitlint/is-ignored": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-11.0.0.tgz", - "integrity": "sha512-VLHOUBN+sOlkYC4tGuzE41yNPO2w09sQnOpfS+pSPnBFkNUUHawEuA44PLHtDvQgVuYrMAmSWFQpWabMoP5/Xg==", - "dev": true, - "requires": { - "@commitlint/types": "^11.0.0", - "semver": "7.3.2" - }, - "dependencies": { - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } - } - }, - "@commitlint/lint": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-11.0.0.tgz", - "integrity": "sha512-Q8IIqGIHfwKr8ecVZyYh6NtXFmKw4YSEWEr2GJTB/fTZXgaOGtGFZDWOesCZllQ63f1s/oWJYtVv5RAEuwN8BQ==", - "dev": true, - "requires": { - "@commitlint/is-ignored": "^11.0.0", - "@commitlint/parse": "^11.0.0", - "@commitlint/rules": "^11.0.0", - "@commitlint/types": "^11.0.0" - } - }, - "@commitlint/load": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-11.0.0.tgz", - "integrity": "sha512-t5ZBrtgvgCwPfxmG811FCp39/o3SJ7L+SNsxFL92OR4WQxPcu6c8taD0CG2lzOHGuRyuMxZ7ps3EbngT2WpiCg==", - "dev": true, - "requires": { - "@commitlint/execute-rule": "^11.0.0", - "@commitlint/resolve-extends": "^11.0.0", - "@commitlint/types": "^11.0.0", - "chalk": "4.1.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "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" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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 - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "requires": { - "@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" - } - }, - "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": { - "has-flag": "^4.0.0" - } - } - } - }, - "@commitlint/message": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-11.0.0.tgz", - "integrity": "sha512-01ObK/18JL7PEIE3dBRtoMmU6S3ecPYDTQWWhcO+ErA3Ai0KDYqV5VWWEijdcVafNpdeUNrEMigRkxXHQLbyJA==", - "dev": true - }, - "@commitlint/parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-11.0.0.tgz", - "integrity": "sha512-DekKQAIYWAXIcyAZ6/PDBJylWJ1BROTfDIzr9PMVxZRxBPc1gW2TG8fLgjZfBP5mc0cuthPkVi91KQQKGri/7A==", - "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-parser": "^3.0.0" - } - }, - "@commitlint/read": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-11.0.0.tgz", - "integrity": "sha512-37V0V91GSv0aDzMzJioKpCoZw6l0shk7+tRG8RkW1GfZzUIytdg3XqJmM+IaIYpaop0m6BbZtfq+idzUwJnw7g==", - "dev": true, - "requires": { - "@commitlint/top-level": "^11.0.0", - "fs-extra": "^9.0.0", - "git-raw-commits": "^2.0.0" - } - }, - "@commitlint/resolve-extends": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-11.0.0.tgz", - "integrity": "sha512-WinU6Uv6L7HDGLqn/To13KM1CWvZ09VHZqryqxXa1OY+EvJkfU734CwnOEeNlSCK7FVLrB4kmodLJtL1dkEpXw==", - "dev": true, - "requires": { - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" - } - }, - "@commitlint/rules": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-11.0.0.tgz", - "integrity": "sha512-2hD9y9Ep5ZfoNxDDPkQadd2jJeocrwC4vJ98I0g8pNYn/W8hS9+/FuNpolREHN8PhmexXbkjrwyQrWbuC0DVaA==", - "dev": true, - "requires": { - "@commitlint/ensure": "^11.0.0", - "@commitlint/message": "^11.0.0", - "@commitlint/to-lines": "^11.0.0", - "@commitlint/types": "^11.0.0" - } - }, - "@commitlint/to-lines": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-11.0.0.tgz", - "integrity": "sha512-TIDTB0Y23jlCNubDROUVokbJk6860idYB5cZkLWcRS9tlb6YSoeLn1NLafPlrhhkkkZzTYnlKYzCVrBNVes1iw==", - "dev": true - }, - "@commitlint/top-level": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-11.0.0.tgz", - "integrity": "sha512-O0nFU8o+Ws+py5pfMQIuyxOtfR/kwtr5ybqTvR+C2lUPer2x6lnQU+OnfD7hPM+A+COIUZWx10mYQvkR3MmtAA==", - "dev": true, - "requires": { - "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.0.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", - "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", - "dev": true, - "requires": { - "p-try": "^2.0.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" - } - } - } - }, - "@commitlint/travis-cli": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/travis-cli/-/travis-cli-11.0.0.tgz", - "integrity": "sha512-ZohGBnXeXv8hcba13fNz0HaCGy3CA4bz1A0PbyqwAzJA6Q85lBvLf1Wa78+Yxwo+PCZx85Vt8tpSrooHaHf2SA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.11.2", - "@commitlint/cli": "^11.0.0", - "execa": "^4.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" - } - }, - "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 - }, - "npm-run-path": { - "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": { - "path-key": "^3.0.0" - } - } - } - }, - "@commitlint/types": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-11.0.0.tgz", - "integrity": "sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ==", - "dev": true - }, "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", @@ -3874,12 +3357,6 @@ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, - "@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/node": { "version": "14.14.8", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.8.tgz", @@ -3894,12 +3371,6 @@ "form-data": "^3.0.0" } }, - "@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/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.2.tgz", @@ -4544,16 +4015,6 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -4896,12 +4357,6 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true - }, "array-includes": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", @@ -7142,16 +6597,6 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, - "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" - } - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -7266,207 +6711,6 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, - "conventional-changelog-angular": { - "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" - } - }, - "conventional-commits-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.0.tgz", - "integrity": "sha512-XmJiXPxsF0JhAKyfA2Nn+rZwYKJ60nanlbSWwwkGwLQFbugsc0gv1rzc7VbbUWAzJfR1qR87/pNgv9NgmxtBMQ==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^2.0.0", - "through2": "^4.0.0", - "trim-off-newlines": "^1.0.0" - }, - "dependencies": { - "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" - } - }, - "hosted-git-info": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", - "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", - "dev": true - }, - "meow": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz", - "integrity": "sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg==", - "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" - } - }, - "normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", - "dev": true, - "requires": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - } - }, - "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.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "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 - } - } - }, - "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" - } - }, - "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" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - }, - "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 - }, - "type-fest": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.0.tgz", - "integrity": "sha512-fbDukFPnJBdn2eZ3RR+5mK2slHLFd6gYHY7jna1KWWy4Yr4XysHuCdXRzy+RiG/HwG4WJat00vdC2UHky5eKiQ==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } - } - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -7981,12 +7225,6 @@ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" }, - "dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -8041,16 +7279,6 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - } - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -8074,12 +7302,6 @@ "regexp.prototype.flags": "^1.2.0" } }, - "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 - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -10785,195 +10007,6 @@ "assert-plus": "^1.0.0" } }, - "git-raw-commits": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.8.tgz", - "integrity": "sha512-6Gk7tQHGMLEL1bSnrMJTCVt2AQl4EmCcJDtzs/JJacCb2+TNEyHM67Gp7Ri9faF7OcGpjGGRjHLvs/AG7QKZ2Q==", - "dev": true, - "requires": { - "dargs": "^7.0.0", - "lodash.template": "^4.0.2", - "meow": "^8.0.0", - "split2": "^2.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "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" - } - }, - "hosted-git-info": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", - "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", - "dev": true - }, - "meow": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz", - "integrity": "sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg==", - "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" - } - }, - "normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", - "dev": true, - "requires": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", - "validate-npm-package-license": "^3.0.1" - } - }, - "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.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "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 - } - } - }, - "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" - } - }, - "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" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - } - }, - "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 - }, - "type-fest": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.0.tgz", - "integrity": "sha512-fbDukFPnJBdn2eZ3RR+5mK2slHLFd6gYHY7jna1KWWy4Yr4XysHuCdXRzy+RiG/HwG4WJat00vdC2UHky5eKiQ==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } - } - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -11026,15 +10059,6 @@ "process": "^0.11.10" } }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -11159,12 +10183,6 @@ "har-schema": "^2.0.0" } }, - "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 - }, "harmony-reflect": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", @@ -11563,12 +10581,6 @@ } } }, - "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 - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -12261,15 +11273,6 @@ "has-symbols": "^1.0.1" } }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -14036,12 +13039,6 @@ "minimist": "^1.2.5" } }, - "jsonc-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", - "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", - "dev": true - }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", @@ -14055,12 +13052,6 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -14328,24 +13319,12 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, - "lodash.differencewith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz", - "integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=", - "dev": true - }, "lodash.escape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", "dev": true }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -14525,36 +13504,6 @@ "object-visit": "^1.0.0" } }, - "markdown-it": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.0.tgz", - "integrity": "sha512-+CvOnmbSubmQFSA9dKz1BRiaSMV7rhexl3sngKqFyXSagoA3fBdJQ8oZWtRy2knXdpDXaBw44euz37DeJQ9asg==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true - }, - "linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - } - } - }, "markdown-to-jsx": { "version": "6.11.4", "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", @@ -14564,63 +13513,6 @@ "unquote": "^1.1.0" } }, - "markdownlint": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.21.1.tgz", - "integrity": "sha512-8kc88w5dyEzlmOWIElp8J17qBgzouOQfJ0LhCcpBFrwgyYK6JTKvILsk4FCEkiNqHkTxwxopT2RS2DYb/10qqg==", - "dev": true, - "requires": { - "markdown-it": "11.0.0" - } - }, - "markdownlint-cli": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.25.0.tgz", - "integrity": "sha512-pmiXJgPQtAx6YOMXPCCO3AudMWv8Gnhfrprn0raqevofOhO95nJZ6bTEXkUVbzEwvYhvGxE0Yl888aZwuRGMGw==", - "dev": true, - "requires": { - "commander": "~6.2.0", - "deep-extend": "~0.6.0", - "get-stdin": "~8.0.0", - "glob": "~7.1.6", - "ignore": "~5.1.8", - "js-yaml": "~3.14.0", - "jsonc-parser": "~2.3.1", - "lodash.differencewith": "~4.5.0", - "lodash.flatten": "~4.4.0", - "markdownlint": "~0.21.1", - "markdownlint-rule-helpers": "~0.12.0", - "minimatch": "~3.0.4", - "minimist": "~1.2.5", - "rc": "~1.2.8" - }, - "dependencies": { - "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", - "dev": true - }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "markdownlint-rule-helpers": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.12.0.tgz", - "integrity": "sha512-Q7qfAk+AJvx82ZY52OByC4yjoQYryOZt6D8TKrZJIwCfhZvcj8vCQNuwDqILushtDBTvGFmUPq+uhOb1KIMi6A==", - "dev": true - }, "material-colors": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", @@ -14641,12 +13533,6 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -14874,17 +13760,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "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" - } - }, "minipass": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", @@ -17675,12 +16550,6 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, - "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 - }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -17774,26 +16643,6 @@ } } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } - } - }, "react": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", @@ -19476,15 +18325,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, - "resolve-global": { - "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.1" - } - }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -20668,15 +19508,6 @@ "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", @@ -21006,12 +19837,6 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, "strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -21491,12 +20316,6 @@ } } }, - "text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -21658,12 +20477,6 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, - "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 - }, "true-case-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", diff --git a/ui/package.json b/ui/package.json index 2c9cc8025..c04a5e620 100644 --- a/ui/package.json +++ b/ui/package.json @@ -79,7 +79,6 @@ "typescript": "4.0.5" }, "devDependencies": { - "@commitlint/travis-cli": "11.0.0", "@percy-io/percy-storybook": "2.1.0", "@storybook/preset-create-react-app": "3.1.5", "@testing-library/react-hooks": "3.4.2", @@ -89,7 +88,6 @@ "enzyme": "3.11.0", "jest-canvas-mock": "2.3.0", "jest-date-mock": "1.0.8", - "markdownlint-cli": "0.25.0", "puppeteer": "5.5.0", "react-test-renderer": "17.0.1", "source-map-explorer": "2.5.0"