diff --git a/.circleci/config.yml b/.circleci/config.yml index 931b3112bb..188b82c9e4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,6 +16,57 @@ orbs: win: circleci/windows@2.4.0 executorType: docker jobs: + yarn: + <<: *defaults + steps: + - checkout + - run: &yarn_setup + name: Setup Yarn config + command: | + mkdir -p /cli/.yarn + mkdir -p /cli/.yarn/offline-mirror + yarn config set cache-folder /cli/.yarn/cache + yarn config set yarn-offline-mirror /cli/.yarn/offline-mirror + + mkdir -p .cache-keys + yarn --version >> .cache-keys/yarn-version + sha256sum yarn.lock >> .cache-keys/yarn-lock + node --version >> .cache-keys/node-version + sha256sum .circleci/config.yml >> .cache-keys/circleci-config + + # offline mirror cache file + cat \ + .cache-keys/yarn-version \ + .cache-keys/yarn-lock \ + .cache-keys/circleci-config \ + > .cache-keys/yarn-offline-mirror + + # yarn cache (which is separate from offline mirror) cache file + # but dependent on node version. + # Represents the final directories in yarn's cache after it un-tars + # tarballs from the offline-mirror AND runs install scripts. + cat \ + .cache-keys/yarn-offline-mirror \ + .cache-keys/node-version + > .cache-keys/yarn-cache + - restore_cache: &yarn_restore_cache + keys: + - v5-yarn-offline-mirror-{{checksum ".cache-keys/yarn-offline-mirror"}}-master + - v5-yarn-offline-mirror-{{checksum ".cache-keys/yarn-offline-mirror"}}-{{.Branch}} + - v5-yarn-cache-{{checksum ".cache-keys/yarn-cache"}}-master + - v5-yarn-cache-{{checksum ".cache-keys/yarn-cache"}}-{{.Branch}} + - run: &yarn_install + name: Installing dependencies + command: yarn --frozen-lockfile --prefer-offline + - save_cache: + key: v5-yarn-offline-mirror-{{checksum ".cache-keys/yarn-offline-mirror"}}-{{.Branch}} + paths: + - /cli/.yarn/offline-mirror + - save_cache: + key: v5-yarn-cache-{{checksum ".cache-keys/yarn-cache"}}-{{.Branch}} + paths: + - /cli/node_modules + - /cli/.yarn/cache acceptance-test: <<: *defaults docker: @@ -28,14 +79,9 @@ jobs: type: "string" steps: - checkout - - restore_cache: &yarn_restore_cache - keys: - - v4-yarn-{{ checksum ".circleci/config.yml" }}-{{ checksum "yarn.lock" }} - - v4-yarn-{{ checksum ".circleci/config.yml" }} - - v4-yarn - - run: - name: Installing dependencies - command: yarn --frozen-lockfile + - run: *yarn_setup + - restore_cache: *yarn_restore_cache + - run: *yarn_install - run: name: heroku whoami command: ./bin/run whoami @@ -159,11 +205,13 @@ jobs: resource_class: xlarge steps: - checkout + - run: *yarn_setup - restore_cache: &yarn_restore_cache keys: - - v4-yarn-{{ checksum ".circleci/config.yml" }}-{{ checksum "yarn.lock" }} - - v4-yarn-{{ checksum ".circleci/config.yml" }} - - v4-yarn + - v5-yarn-{{ checksum ".circleci/config.yml" }}-{{ checksum "yarn.lock" }} + - v5-yarn-{{ checksum ".circleci/config.yml" }} + - v5-yarn + - run: *yarn_install - run: name: Installing dependencies command: yarn --frozen-lockfile @@ -184,6 +232,8 @@ jobs: <<: *defaults steps: - checkout + - run: *yarn_setup + - run: *yarn_install - restore_cache: *yarn_restore_cache - run: | mkdir -p /build @@ -201,7 +251,9 @@ jobs: <<: *defaults steps: - checkout + - run: *yarn_setup - restore_cache: *yarn_restore_cache + - run: *yarn_install - run: | mkdir -p /build cp yarn.lock packages/cli @@ -214,62 +266,79 @@ jobs: root: /cli/packages/cli paths: - dist - store-artifacts: + pack-deb: <<: *defaults steps: - - attach_workspace: - at: /build - checkout + - run: *yarn_setup - restore_cache: *yarn_restore_cache - - run: - name: "Create SHA256 artifacts" - command: ./scripts/hash-artifacts - - store_artifacts: - path: /build/dist - destination: / - release_tarballs: - <<: *defaults - steps: - - add_ssh_keys - - checkout + - run: *yarn_install - run: | + mkdir -p /build cp yarn.lock packages/cli cd packages/cli yarn --frozen-lockfile - ./scripts/release/tarballs - - save_cache: - key: v4-yarn-{{ checksum ".circleci/config.yml" }}-{{ checksum "yarn.lock" }} + - run: + name: Building Deb package + command: ./scripts/pack/deb + - persist_to_workspace: + root: /cli/packages/cli paths: - - /cli/node_modules - - /cli/tmp/cache - - /usr/local/share/.cache/yarn - - run: | - mkdir /persisted - cp -r /cli/packages/cli/dist /persisted - cp -r /cli/packages/cli/tmp /persisted + - dist + sign-deb: + <<: *defaults + steps: + - attach_workspace: + at: /build + - checkout + - run: *yarn_setup + - restore_cache: *yarn_restore_cache + - run: + name: "Signing debian" + command: cd /build/dist/deb && /cli/scripts/sign/deb - persist_to_workspace: - root: /persisted + root: /build paths: - dist - - tmp - release_win: + store-artifacts: <<: *defaults steps: + - attach_workspace: + at: /build - checkout - - run: | - cp yarn.lock packages/cli - cd packages/cli - yarn --frozen-lockfile - ./scripts/release/win - release_deb: + - run: *yarn_setup + - restore_cache: *yarn_restore_cache + - run: *yarn_install + - run: + name: "Create SHA256 artifacts" + command: ./scripts/hash-artifacts + - store_artifacts: + path: /build/dist + destination: / + release_deb_and_tarballs: <<: *defaults steps: - checkout - - run: | - cp yarn.lock packages/cli - cd packages/cli - yarn --frozen-lockfile - ./scripts/release/deb + - run: *yarn_setup + - restore_cache: *yarn_restore_cache + - run: *yarn_install + - attach_workspace: + at: /cli/packages/cli + - run: + name: packages/cli yarn install + command: | + cp yarn.lock packages/cli + cd packages/cli + yarn --frozen-lockfile --prefer-offline + - run: + name: Upload production artifacts + command: | + cd packages/cli + ./scripts/release/tarballs + ./scripts/release/deb + - run: + name: Publish Install Scripts + command: /cli/scripts/postrelease/install_scripts trigger_macos: <<: *defaults steps: @@ -296,12 +365,6 @@ jobs: - checkout - run: yarn --frozen-lockfile - run: ./scripts/postrelease/invalidate_cdn_cache - install_scripts: - <<: *defaults - steps: - - checkout - - run: yarn --frozen-lockfile - - run: ./scripts/postrelease/install_scripts change_management: <<: *defaults steps: @@ -322,31 +385,23 @@ jobs: - run: cd packages/cli && ./scripts/postrelease/dev_center_docs - store_artifacts: path: /tmp/heroku-cli-commands.md - release_snap: - docker: - - image: snapcore/snapcraft:stable - environment: - LC_ALL: C.UTF-8 - steps: - # the snapcraft image does not include git - - run: apt-get -qq update; apt-get -y install git - - checkout - - run: ./scripts/release/snap workflows: version: 2.1 - heroku_cli_tests: + heroku_cli: jobs: - - windows-test: &windows_test - filters: - tags: &version_tags + - yarn: + filters: &always_run_filter + tags: only: /^v.*/ - branches: - ignore: - - master + - windows-test: &windows_test + filters: *always_run_filter + requires: + - yarn - node14-test: *windows_test - node12-test: *windows_test - node10-test: *windows_test - acceptance-test: + filters: *always_run_filter context: - heroku-cli-acceptance-tests matrix: @@ -355,7 +410,10 @@ workflows: - "10" - "12" - "14" + requires: + - yarn - pack-windows: + filters: *always_run_filter requires: &pack-requires - node14-test - node12-test @@ -363,86 +421,48 @@ workflows: - windows-test - acceptance-test - pack-tarballs: + filters: *always_run_filter requires: *pack-requires + - pack-deb: + filters: *always_run_filter + requires: *pack-requires + - sign-deb: + filters: *always_run_filter + context: + - heroku-cli-sign-deb + requires: + - pack-deb - store-artifacts: + filters: *always_run_filter requires: - pack-windows - pack-tarballs -# heroku_cli_release: -# jobs: -# - node14-test: &node14_test -# filters: -# branches: -# only: -# - master -# tags: &version_tags -# only: /^v.*/ -# - node12-test: *node14_test -# - node10-test: *node14_test -# - windows-test: *node14_test -# - acceptance-test: -# context: -# - heroku-cli-acceptance-tests -# matrix: -# parameters: -# node-version: -# - "10" -# - "12" -# - "14" -# - release_tarballs: &release_tarballs -# requires: -# - node12-test -# - node10-test -# - windows-test -# - acceptance-test -# filters: &master_dev_and_version_tags -# tags: -# <<: *version_tags -# branches: -# only: -# - master -# - dev -# - release_deb: *release_tarballs -# - release_win: *release_tarballs -# - release_homebrew: -# requires: -# - release_tarballs -# filters: &only_version_tags -# branches: -# ignore: /.*/ -# tags: -# <<: *version_tags -# # - trigger_macos: &trigger_macos -# # requires: -# # - node12-test -# # - node10-test -# # - windows-test -# # filters: -# # <<: *only_version_tags -# # - release_snap: -# # requires: -# # - node12-test -# # - node10-test -# # - windows-test -# # filters: -# # <<: *only_version_tags -# - invalidate_cdn_cache: -# requires: -# - install_scripts -# filters: -# <<: *master_dev_and_version_tags -# - install_scripts: &install_scripts -# requires: -# - release_tarballs -# - release_deb -# - release_win -# filters: -# <<: *master_dev_and_version_tags -# - change_management: &change_management -# requires: -# - release_tarballs -# - release_deb -# - release_win -# filters: -# <<: *only_version_tags -# - dev_center_docs: *change_management + - sign-deb + - release_deb_and_tarballs: + context: + - heroku-cli-s3 + requires: + - sign-deb + - pack-tarballs + filters: &master_dev_and_version_tags + tags: + only: /^v.*/ + branches: + only: + - master + # - release_homebrew: + # requires: + # - release_deb_and_tarballs + # filters: *master_dev_and_version_tags + # - invalidate_cdn_cache: + # requires: + # - release_deb_and_tarballs + # filters: *master_dev_and_version_tags + # - change_management: &change_management + # context: + # - heroku-cli-tps + # requires: + # - release_deb_and_tarballs + # filters: + # <<: *only_version_tags + # - dev_center_docs: *change_management diff --git a/packages/cli/package.json b/packages/cli/package.json index 213551407c..295b503b97 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -57,7 +57,7 @@ "uuid": "3.3.2" }, "devDependencies": { - "@oclif/dev-cli": "^1.21.3", + "@oclif/dev-cli": "^1.23", "@oclif/test": "^1.2.4", "@types/ansi-styles": "^3.2.1", "@types/chai": "^4.1.7", @@ -244,7 +244,6 @@ }, "s3": { "xz": true, - "bucket": "heroku-cli-assets", "host": "https://cli-assets.heroku.com" } }, diff --git a/packages/run-v5/test/init.js b/packages/run-v5/test/init.js index 02431c75b2..73255ce9d7 100644 --- a/packages/run-v5/test/init.js +++ b/packages/run-v5/test/init.js @@ -6,6 +6,5 @@ cli.raiseErrors = true global.commands = require('../index').commands global.apikey = process.env.HEROKU_API_KEY -if (!global.apikey) global.apikey = require('netrc')()['api.heroku.com'].password process.stdout.isTTY = false diff --git a/scripts/pack/deb b/scripts/pack/deb new file mode 100755 index 0000000000..30e4da0761 --- /dev/null +++ b/scripts/pack/deb @@ -0,0 +1,17 @@ +#!/usr/bin/env node + +const execa = require('execa') +const path = require('path') + +const root = path.join(__dirname, '..', '..') +const CLI_ROOT = path.join(root, 'packages', 'cli') + +async function main() { + await require('../utils/_update_channel')() + await execa('./node_modules/.bin/oclif-dev', ['pack:deb'], { + cwd: CLI_ROOT, + stdio: 'inherit' + }) +} + +main() diff --git a/scripts/postrelease/install_scripts b/scripts/postrelease/install_scripts index c2d0e33dc5..bc3256b6f7 100755 --- a/scripts/postrelease/install_scripts +++ b/scripts/postrelease/install_scripts @@ -4,9 +4,9 @@ set -ex if [[ ! -z "${CIRCLE_TAG}" ]]; then echo "Pushing install scripts to s3..." - aws s3 cp --content-type text/plain --cache-control "max-age: 604800" ./install-standalone.sh s3://heroku-cli-assets/install-standalone.sh - aws s3 cp --content-type text/plain --cache-control "max-age: 604800" ./install-standalone.sh s3://heroku-cli-assets/install.sh - aws s3 cp --content-type text/plain --cache-control "max-age: 604800" ./install-ubuntu.sh s3://heroku-cli-assets/install-ubuntu.sh + aws s3 cp --content-type text/plain --cache-control "max-age: 604800" ./install-standalone.sh "s3://${HEROKU_S3_BUCKET}/install-standalone.sh" + aws s3 cp --content-type text/plain --cache-control "max-age: 604800" ./install-standalone.sh "s3://${HEROKU_S3_BUCKET}/install.sh" + aws s3 cp --content-type text/plain --cache-control "max-age: 604800" ./install-ubuntu.sh "s3://${HEROKU_S3_BUCKET}/install-ubuntu.sh" else echo "Not on stable release, skipping updating install scripts" fi diff --git a/scripts/release/deb b/scripts/release/deb index 9f318853ea..e1080b3b14 100755 --- a/scripts/release/deb +++ b/scripts/release/deb @@ -5,7 +5,6 @@ const qq = require('qqjs') qq.config.silent = false qq.run(async () => { await require('../utils/_update_channel')() - await qq.x('echo "$HEROKU_DEB_SECRET_KEY" | base64 -d | gpg --import') - await qq.x('./node_modules/.bin/oclif-dev pack:deb') await qq.x('./node_modules/.bin/oclif-dev publish:deb') + await qq.x(`aws s3 cp --content-type text/plain --cache-control "max-age: 604800" /cli/packages/cli/dist/apt/release.key "s3://${process.env.HEROKU_S3_BUCKET}/apt/release.key"`) }) diff --git a/scripts/release/tarballs b/scripts/release/tarballs index 4ed1637d82..e6770cbda7 100755 --- a/scripts/release/tarballs +++ b/scripts/release/tarballs @@ -5,6 +5,5 @@ const qq = require('qqjs') qq.config.silent = false qq.run(async () => { await require('../utils/_update_channel')() - await qq.x('./node_modules/.bin/oclif-dev pack') await qq.x('./node_modules/.bin/oclif-dev publish') }) diff --git a/scripts/sign/deb b/scripts/sign/deb new file mode 100755 index 0000000000..1b7fd89b56 --- /dev/null +++ b/scripts/sign/deb @@ -0,0 +1,14 @@ +#!/bin/bash +set -e -o pipefail + +# This will sign files after `oclif-dev pack:deb`, this script should be ran from +# the `dist/deb` folder +echo "$HEROKU_DEB_SECRET_KEY" | base64 -d 2> /dev/null | gpg --import --batch --passphrase "$HEROKU_DEB_SIGNING_PASSWORD" 2> /dev/null +gpg --digest-algo SHA512 --clearsign --batch --passphrase "$HEROKU_DEB_SIGNING_PASSWORD" -u $HEROKU_DEB_KEY_ID -o InRelease Release 2> /dev/null +gpg --digest-algo SHA512 -abs --batch --passphrase "$HEROKU_DEB_SIGNING_PASSWORD" -u $HEROKU_DEB_KEY_ID -o Release.gpg Release 2> /dev/null +echo "Signed debian packages successfully" +echo "sha256 sums:" +sha256sum *Release* + +mkdir -p /build/dist/apt +echo $HEROKU_DEB_PUBLIC_KEY | base64 --decode > /build/dist/apt/release.key diff --git a/yarn.lock b/yarn.lock index 83fc99b6ea..5331bb65ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1115,7 +1115,7 @@ debug "^4.1.1" semver "^5.6.0" -"@oclif/command@^1.5.20", "@oclif/command@^1.5.4", "@oclif/command@^1.6.0": +"@oclif/command@^1.5.20", "@oclif/command@^1.5.4", "@oclif/command@^1.6.0", "@oclif/command@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.0.tgz#c1a499b10d26e9d1a611190a81005589accbb339" integrity sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw== @@ -1146,7 +1146,7 @@ debug "^4.1.1" tslib "^1.9.3" -"@oclif/config@^1.15.1", "@oclif/config@^1.8.7": +"@oclif/config@^1.15.1", "@oclif/config@^1.17.0", "@oclif/config@^1.8.7": version "1.17.0" resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.17.0.tgz#ba8639118633102a7e481760c50054623d09fcab" integrity sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA== @@ -1202,6 +1202,25 @@ qqjs "^0.3.10" tslib "^1.9.3" +"@oclif/dev-cli@^1.23": + version "1.26.0" + resolved "https://registry.npmjs.org/@oclif/dev-cli/-/dev-cli-1.26.0.tgz#e3ec294b362c010ffc8948003d3770955c7951fd" + integrity sha512-272udZP+bG4qahoAcpWcMTJKiA+V42kRMqQM7n4tgW35brYb2UP5kK+p08PpF8sgSfRTV8MoJVJG9ax5kY82PA== + dependencies: + "@oclif/command" "^1.8.0" + "@oclif/config" "^1.17.0" + "@oclif/errors" "^1.3.3" + "@oclif/plugin-help" "^3.2.0" + cli-ux "^5.2.1" + debug "^4.1.1" + find-yarn-workspace-root "^2.0.0" + fs-extra "^8.1" + github-slugger "^1.2.1" + lodash "^4.17.11" + normalize-package-data "^3.0.0" + qqjs "^0.3.10" + tslib "^2.0.3" + "@oclif/errors@1.2.2", "@oclif/errors@^1.2.1": version "1.2.2" resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.2.2.tgz#9d8f269b15f13d70aa93316fed7bebc24688edc2" @@ -1296,7 +1315,7 @@ widest-line "^2.0.1" wrap-ansi "^4.0.0" -"@oclif/plugin-help@^3": +"@oclif/plugin-help@^3", "@oclif/plugin-help@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-3.2.0.tgz#b2c1112f49202ebce042f86b2e42e49908172ef1" integrity sha512-7jxtpwVWAVbp1r46ZnTK/uF+FeZc6y4p1XcGaIUuPAp7wx6NJhIRN/iMT9UfNFX/Cz7mq+OyJz+E+i0zrik86g== @@ -4558,6 +4577,13 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + fixture-stdout@0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fixture-stdout/-/fixture-stdout-0.2.1.tgz#0b7966535ab87cf03f8dcbefabdac3effe195a24" @@ -5315,6 +5341,13 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== +hosted-git-info@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" + integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + dependencies: + lru-cache "^6.0.0" + http-cache-semantics@3.8.1, http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -5735,6 +5768,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6603,6 +6643,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + macos-release@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" @@ -7213,6 +7260,16 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" + integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== + dependencies: + hosted-git-info "^4.0.1" + resolve "^1.20.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + normalize-url@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" @@ -8571,6 +8628,14 @@ resolve@^1.11.1: dependencies: path-parse "^1.0.6" +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1, resolve@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" @@ -8754,6 +8819,13 @@ semver@^7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@^7.3.4: + version "7.3.5" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -9891,6 +9963,11 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== +tslib@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tslint-config-prettier@*: version "1.17.0" resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.17.0.tgz#946ed6117f98f3659a65848279156d87628c33dc" @@ -10497,6 +10574,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"