From fece1bc105d46f3b3969bd524f74854112b17b99 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 10 Sep 2024 13:45:13 -0700 Subject: [PATCH 01/67] feat(cli): Update node version to 20 (#2989) * Update node version to 20 * Fix oclif node version * Fix container push test * Update checkout version to v4 * Update setup-node to v3 * Switch to setup-node@v4, clean up warnings * Fix some lint warnings * Fix linting warnings * Fix more lints * Fix issue with sinon, fix more lints * Fix flaky test due multiple Date creations * remove .only * Fix test --- .../get-version-and-channel/action.yml | 2 +- .github/workflows/cache-invalidation.yml | 2 +- .github/workflows/ci.yml | 24 +++++++++---------- .github/workflows/create-cli-release.yml | 2 +- .github/workflows/ctc.yml | 2 +- .github/workflows/devcenter-doc-update.yml | 2 +- .github/workflows/direwolf.yml | 2 +- .github/workflows/empty-stampy-buckets.yml | 2 +- .github/workflows/get-signed-from-stampy.yml | 2 +- .github/workflows/pack-upload-windows.yml | 2 +- .github/workflows/pack-upload.yml | 8 +++---- .github/workflows/promote-release.yml | 2 +- .github/workflows/promote-windows.yml | 8 +++---- .github/workflows/promote.yml | 8 +++---- .github/workflows/publish-npm.yml | 8 +++---- .../workflows/publish-to-fig-autocomplete.yml | 8 +++---- .github/workflows/release-homebrew.yml | 2 +- .github/workflows/snyk.yml | 6 ++--- .github/workflows/start-gh-release.yml | 2 +- .github/workflows/start-prerelease.yml | 10 ++++---- .../workflows/tag-create-github-release.yml | 8 +++---- .github/workflows/test-installed-cli.yml | 6 ++--- .github/workflows/upload-to-stampy.yml | 2 +- .tool-versions | 2 +- cspell-dictionary.txt | 3 ++- packages/cli/package.json | 6 ++--- packages/cli/src/commands/access/index.ts | 2 +- packages/cli/src/commands/apps/errors.ts | 2 +- .../cli/src/commands/apps/favorites/add.ts | 2 +- packages/cli/src/commands/buildpacks/add.ts | 2 +- packages/cli/src/commands/buildpacks/info.ts | 2 +- packages/cli/src/commands/buildpacks/set.ts | 2 +- .../cli/src/commands/buildpacks/versions.ts | 2 +- packages/cli/src/commands/keys/clear.ts | 5 ++-- packages/cli/src/commands/keys/index.ts | 2 +- packages/cli/src/commands/keys/remove.ts | 2 +- packages/cli/src/commands/members/index.ts | 2 +- packages/cli/src/commands/orgs/open.ts | 2 +- packages/cli/src/commands/pg/copy.ts | 2 +- packages/cli/src/commands/pg/info.ts | 2 +- .../cli/src/commands/pipelines/promote.ts | 6 ++--- packages/cli/src/commands/ps/scale.ts | 1 - packages/cli/src/commands/ps/type.ts | 6 ++--- packages/cli/src/file.ts | 2 -- .../unit/commands/addons/index.unit.test.ts | 11 ++++++--- .../unit/commands/addons/open.unit.test.ts | 6 +++-- .../commands/certs/auto/enable.unit.test.ts | 2 +- .../commands/certs/auto/index.unit.test.ts | 2 +- .../commands/container/login.unit.test.ts | 2 +- .../unit/commands/container/pull.unit.test.ts | 2 +- .../unit/commands/container/push.unit.test.ts | 1 - .../authorizations.unit.test.ts | 9 +++---- .../unit/utils/keyValueParser.unit.test.ts | 4 ++-- yarn.lock | 12 ++++++---- 54 files changed, 116 insertions(+), 112 deletions(-) diff --git a/.github/actions/get-version-and-channel/action.yml b/.github/actions/get-version-and-channel/action.yml index 8102cf1088..78807cc17e 100644 --- a/.github/actions/get-version-and-channel/action.yml +++ b/.github/actions/get-version-and-channel/action.yml @@ -14,5 +14,5 @@ outputs: description: full version from package.json runs: - using: 'node16' + using: 'node20' main: 'dist/index.js' diff --git a/.github/workflows/cache-invalidation.yml b/.github/workflows/cache-invalidation.yml index 56ee9d1f44..23604cb4bc 100644 --- a/.github/workflows/cache-invalidation.yml +++ b/.github/workflows/cache-invalidation.yml @@ -12,7 +12,7 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_EC2_METADATA_DISABLED: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: | sudo apt-get update sudo apt-get install -y awscli diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ef445341bf..86ee0b59c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,12 +8,12 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [16.x] + node-version: [20.x] os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: yarn @@ -27,16 +27,16 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [16.x] + node-version: [20.x] os: [ubuntu-latest] environment: AcceptanceTests env: HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} ENABLE_NET_CONNECT: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: yarn @@ -50,16 +50,16 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [16.x] + node-version: [20.x] os: [ubuntu-latest] environment: AcceptanceTests env: HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} ENABLE_NET_CONNECT: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: yarn @@ -77,14 +77,14 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [16.x] + node-version: [20.x] os: [ubuntu-latest] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: yarn add cspell@7.3.9 diff --git a/.github/workflows/create-cli-release.yml b/.github/workflows/create-cli-release.yml index edd591cccb..8b0d5d805f 100644 --- a/.github/workflows/create-cli-release.yml +++ b/.github/workflows/create-cli-release.yml @@ -25,7 +25,7 @@ jobs: # final check to ensure package.json doesn't have a dist tag, ex: '-beta' isStableRelease: ${{ fromJSON(inputs.isStableCandidate) && !steps.getVersion.outputs.channel }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - id: getVersion uses: ./.github/actions/get-version-and-channel/ with: diff --git a/.github/workflows/ctc.yml b/.github/workflows/ctc.yml index 53f80352e5..a46fc61808 100644 --- a/.github/workflows/ctc.yml +++ b/.github/workflows/ctc.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest environment: ChangeManagement steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Call CTC API TO Create Lock id: create-lock run: | diff --git a/.github/workflows/devcenter-doc-update.yml b/.github/workflows/devcenter-doc-update.yml index d750d14939..fe813a72e9 100644 --- a/.github/workflows/devcenter-doc-update.yml +++ b/.github/workflows/devcenter-doc-update.yml @@ -9,7 +9,7 @@ jobs: name: Update Devcenter command docs runs-on: pub-hk-ubuntu-22.04-small steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install package deps run: yarn --immutable --network-timeout 1000000 - name: Install Devcenter CLI diff --git a/.github/workflows/direwolf.yml b/.github/workflows/direwolf.yml index 7ef3e1411c..cdb8b91b4a 100644 --- a/.github/workflows/direwolf.yml +++ b/.github/workflows/direwolf.yml @@ -27,7 +27,7 @@ jobs: timeout-minutes: 20 environment: direwolf steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install jq run: | sudo apt-get update diff --git a/.github/workflows/empty-stampy-buckets.yml b/.github/workflows/empty-stampy-buckets.yml index 1dce119506..ee48dd9858 100644 --- a/.github/workflows/empty-stampy-buckets.yml +++ b/.github/workflows/empty-stampy-buckets.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest environment: Stampy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Empty Stampy signed and unsigned buckets env: STAMPY_ARN: ${{ secrets.STAMPY_ARN }} diff --git a/.github/workflows/get-signed-from-stampy.yml b/.github/workflows/get-signed-from-stampy.yml index 69c102582b..2c56658110 100644 --- a/.github/workflows/get-signed-from-stampy.yml +++ b/.github/workflows/get-signed-from-stampy.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest environment: Stampy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: download signed Windows installer from from Stampy env: STAMPY_ARN: ${{ secrets.STAMPY_ARN }} diff --git a/.github/workflows/pack-upload-windows.yml b/.github/workflows/pack-upload-windows.yml index ca234d1914..b6fce7f08b 100644 --- a/.github/workflows/pack-upload-windows.yml +++ b/.github/workflows/pack-upload-windows.yml @@ -12,7 +12,7 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_EC2_METADATA_DISABLED: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Homebrew id: set-up-homebrew uses: Homebrew/actions/setup-homebrew@41775cf0c82ef066f1eb39cea1bd74697ca5b735 diff --git a/.github/workflows/pack-upload.yml b/.github/workflows/pack-upload.yml index db3edbd183..bd00ff9b0e 100644 --- a/.github/workflows/pack-upload.yml +++ b/.github/workflows/pack-upload.yml @@ -12,7 +12,7 @@ jobs: env: HEROKU_AUTHOR: 'Heroku' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install system deps run: | sudo apt-get update @@ -30,7 +30,7 @@ jobs: pack_tarballs: runs-on: pub-hk-ubuntu-22.04-2xlarge steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install system deps run: | sudo apt-get update @@ -55,7 +55,7 @@ jobs: HEROKU_DEB_KEY_ID: ${{ secrets.HEROKU_DEB_KEY_ID }} HEROKU_DEB_PUBLIC_KEY: ${{ secrets.HEROKU_DEB_PUBLIC_KEY }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: sudo mkdir -p /build - uses: actions/download-artifact@v3 with: @@ -79,7 +79,7 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_EC2_METADATA_DISABLED: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: sudo mkdir -p /build - uses: actions/download-artifact@v3 with: diff --git a/.github/workflows/promote-release.yml b/.github/workflows/promote-release.yml index 68b981142e..2bc1a5582d 100644 --- a/.github/workflows/promote-release.yml +++ b/.github/workflows/promote-release.yml @@ -67,7 +67,7 @@ jobs: TPS_API_TOKEN_PARAM: ${{ secrets.TPS_API_TOKEN_PARAM }} TPS_API_URL_PARAM: ${{ secrets.TPS_API_URL_PARAM }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: yarn --immutable --network-timeout 1000000 - run: ./scripts/postrelease/change_management diff --git a/.github/workflows/promote-windows.yml b/.github/workflows/promote-windows.yml index 481fc43584..3213714dbc 100644 --- a/.github/workflows/promote-windows.yml +++ b/.github/workflows/promote-windows.yml @@ -30,11 +30,11 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_EC2_METADATA_DISABLED: true steps: - - uses: actions/checkout@v3 - - name: Use Node.js 16.x - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Use Node.js 20.x + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x cache: yarn - run: yarn --immutable --network-timeout 1000000 - name: install apt-get dependencies diff --git a/.github/workflows/promote.yml b/.github/workflows/promote.yml index 9d75182bfe..c3d29ee02c 100644 --- a/.github/workflows/promote.yml +++ b/.github/workflows/promote.yml @@ -43,11 +43,11 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_EC2_METADATA_DISABLED: true steps: - - uses: actions/checkout@v3 - - name: Use Node.js 16.x - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Use Node.js 20.x + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x cache: yarn - run: yarn --immutable --network-timeout 1000000 - name: install apt-get dependencies diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 2b5a43aa78..f33e807d0c 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -32,11 +32,11 @@ jobs: # pub-hk-ubuntu-22.04- due to IP allow list issues with public repos: https://salesforce.quip.com/bu6UA0KImOxJ runs-on: pub-hk-ubuntu-22.04-small steps: - - uses: actions/checkout@v3 - - name: Use Node.js 16.x - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Use Node.js 20.x + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x cache: yarn - run: yarn --immutable --network-timeout 1000000 - name: set NPM auth diff --git a/.github/workflows/publish-to-fig-autocomplete.yml b/.github/workflows/publish-to-fig-autocomplete.yml index 00a1b73220..f23a3aae34 100644 --- a/.github/workflows/publish-to-fig-autocomplete.yml +++ b/.github/workflows/publish-to-fig-autocomplete.yml @@ -8,11 +8,11 @@ jobs: push-to-fig-autocomplete: runs-on: pub-hk-ubuntu-22.04-small steps: - - uses: actions/checkout@v3 - - name: Use Node.js 16.x - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - name: Use Node.js 20.x + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x cache: yarn - name: Install Fig Oclif Plugin run: cd packages/cli && yarn add @fig/complete-oclif && jq '.oclif.plugins += ["@fig/complete-oclif"]' package.json > temp.json && mv temp.json package.json diff --git a/.github/workflows/release-homebrew.yml b/.github/workflows/release-homebrew.yml index 61c9abc762..77f332f04e 100644 --- a/.github/workflows/release-homebrew.yml +++ b/.github/workflows/release-homebrew.yml @@ -15,7 +15,7 @@ jobs: runs-on: pub-hk-ubuntu-22.04-small environment: ReleaseHomebrew steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: webfactory/ssh-agent@v0.5.4 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} diff --git a/.github/workflows/snyk.yml b/.github/workflows/snyk.yml index b10bf4d08f..483be4cf45 100644 --- a/.github/workflows/snyk.yml +++ b/.github/workflows/snyk.yml @@ -12,10 +12,10 @@ jobs: env: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x - run: yarn --immutable --network-timeout 1000000 - run: yarn dlx -p snyk test --all-projects --fail-on=all - run: yarn dlx -p snyk monitor --all-projects --org=hit diff --git a/.github/workflows/start-gh-release.yml b/.github/workflows/start-gh-release.yml index a9313e6c3a..6c1c3ce705 100644 --- a/.github/workflows/start-gh-release.yml +++ b/.github/workflows/start-gh-release.yml @@ -15,7 +15,7 @@ jobs: outputs: sourceName: ${{ steps.sourceName.outputs.sourceName }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Remove 'refs/heads/' from GITHUB_HEAD_REF shell: bash id: sourceName diff --git a/.github/workflows/start-prerelease.yml b/.github/workflows/start-prerelease.yml index e8738cec71..6b8a1d30e7 100644 --- a/.github/workflows/start-prerelease.yml +++ b/.github/workflows/start-prerelease.yml @@ -13,7 +13,7 @@ jobs: channel: ${{ steps.getVersion.outputs.channel }} version: ${{ steps.getVersion.outputs.version }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - id: getVersion uses: ./.github/actions/get-version-and-channel/ with: @@ -28,7 +28,7 @@ jobs: VERSION: ${{ needs.get-version-channel.outputs.version }} CURRENT_BRANCH_NAME: ${{ github.ref_name }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: yarn --immutable --network-timeout 1000000 - run: ./scripts/release/validate-prerelease @@ -40,10 +40,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAG_NAME: ${{ format('v{0}', needs.get-version-channel.outputs.version) }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x - name: set git user run: | git config user.name "GitHub Actions Bot" diff --git a/.github/workflows/tag-create-github-release.yml b/.github/workflows/tag-create-github-release.yml index 1d9fed8a14..f5eea081f9 100644 --- a/.github/workflows/tag-create-github-release.yml +++ b/.github/workflows/tag-create-github-release.yml @@ -11,7 +11,7 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # fetch entire repo, not just this branch. Tags & commits are needed for release notes fetch-depth: 0 @@ -19,10 +19,10 @@ jobs: uses: webfactory/ssh-agent@v0.7.0 with: ssh-private-key: ${{ secrets.SSH_RELEASE_PRIVATE_KEY }} - - name: Use Node.js 16.x - uses: actions/setup-node@v3 + - name: Use Node.js 20.x + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: 20.x cache: yarn - name: set git user run: | diff --git a/.github/workflows/test-installed-cli.yml b/.github/workflows/test-installed-cli.yml index f3d590598f..4077e84255 100644 --- a/.github/workflows/test-installed-cli.yml +++ b/.github/workflows/test-installed-cli.yml @@ -21,10 +21,10 @@ jobs: env: HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: - node-version: '16.x' + node-version: '20.x' registry-url: 'https://registry.npmjs.org' - name: install dependencies run: | diff --git a/.github/workflows/upload-to-stampy.yml b/.github/workflows/upload-to-stampy.yml index 8ffa107110..2e954a5438 100644 --- a/.github/workflows/upload-to-stampy.yml +++ b/.github/workflows/upload-to-stampy.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest environment: Stampy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: download Windows installers from s3 env: AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}} diff --git a/.tool-versions b/.tool-versions index 3f74418ca2..ffb152ed46 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 16.20.0 +nodejs 20.17.0 diff --git a/cspell-dictionary.txt b/cspell-dictionary.txt index 573bccbd71..7961abc9c6 100644 --- a/cspell-dictionary.txt +++ b/cspell-dictionary.txt @@ -345,4 +345,5 @@ xact xlarge xvzf yetanotherapp -yourdomain \ No newline at end of file +yourdomain +ztestdomain7 \ No newline at end of file diff --git a/packages/cli/package.json b/packages/cli/package.json index 0b9f4c4fbf..7a98685ac1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -94,7 +94,7 @@ "@types/inquirer": "^8.2.10", "@types/lodash": "^4.14.123", "@types/mocha": "^10.0.6", - "@types/node": "16.11.7", + "@types/node": "20.14.8", "@types/node-fetch": "^2.1.6", "@types/phoenix": "^1.4.0", "@types/proxyquire": "^1.3.28", @@ -134,7 +134,7 @@ "typescript": "4.8.4" }, "engines": { - "node": "~16.20.0" + "node": "~20.x" }, "files": [ "/autocomplete-scripts", @@ -337,7 +337,7 @@ }, "update": { "node": { - "version": "16.20.2" + "version": "20.17.0" }, "s3": { "xz": true, diff --git a/packages/cli/src/commands/access/index.ts b/packages/cli/src/commands/access/index.ts index 3335b52c5d..9d76109d0d 100644 --- a/packages/cli/src/commands/access/index.ts +++ b/packages/cli/src/commands/access/index.ts @@ -78,7 +78,7 @@ export default class AccessIndex extends Command { } public async run(): Promise { - const {flags, argv, args} = await this.parse(AccessIndex) + const {flags} = await this.parse(AccessIndex) const {app: appName, json} = flags const {body: app} = await this.heroku.get(`/apps/${appName}`) let {body: collaborators} = await this.heroku.get(`/apps/${appName}/collaborators`) diff --git a/packages/cli/src/commands/apps/errors.ts b/packages/cli/src/commands/apps/errors.ts index 4755a8d690..77f9a2eaa1 100644 --- a/packages/cli/src/commands/apps/errors.ts +++ b/packages/cli/src/commands/apps/errors.ts @@ -57,7 +57,7 @@ export default class Errors extends Command { async run() { const {flags} = await this.parse(Errors) - const hours = Number.parseInt(flags.hours) + const hours = Number.parseInt(flags.hours, 10) const NOW = new Date().toISOString() const YESTERDAY = new Date(Date.now() - (hours * 60 * 60 * 1000)).toISOString() const DATE_QUERY = `start_time=${YESTERDAY}&end_time=${NOW}&step=1h` diff --git a/packages/cli/src/commands/apps/favorites/add.ts b/packages/cli/src/commands/apps/favorites/add.ts index 1911923b3e..3d40397fc0 100644 --- a/packages/cli/src/commands/apps/favorites/add.ts +++ b/packages/cli/src/commands/apps/favorites/add.ts @@ -22,7 +22,7 @@ export default class Add extends Command { {hostname: 'particleboard.heroku.com'}, ) - if (favorites.find(f => f.resource_name === app)) { + if (favorites.some(f => f.resource_name === app)) { throw new Error(`${color.app(app)} is already a favorite app.`) } diff --git a/packages/cli/src/commands/buildpacks/add.ts b/packages/cli/src/commands/buildpacks/add.ts index 4ed0a2d5e2..0835960330 100644 --- a/packages/cli/src/commands/buildpacks/add.ts +++ b/packages/cli/src/commands/buildpacks/add.ts @@ -37,7 +37,7 @@ export default class Add extends Command { if (flags.index === undefined) { spliceIndex = buildpacks.length } else { - // eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument + // eslint-disable-next-line unicorn/no-array-method-this-argument const foundIndex = buildpackCommand.findIndex(buildpacks, flags.index) spliceIndex = (foundIndex === -1) ? buildpacks.length : foundIndex } diff --git a/packages/cli/src/commands/buildpacks/info.ts b/packages/cli/src/commands/buildpacks/info.ts index 912178b1e5..69d374d012 100644 --- a/packages/cli/src/commands/buildpacks/info.ts +++ b/packages/cli/src/commands/buildpacks/info.ts @@ -19,7 +19,7 @@ export default class Info extends Command { const registry = new BuildpackRegistry() Result.match({ - Ok: _ => {}, + Ok: () => {}, Err: err => { this.error(`Could not publish the buildpack.\n${err}`) }, diff --git a/packages/cli/src/commands/buildpacks/set.ts b/packages/cli/src/commands/buildpacks/set.ts index a3bee80c7a..b4151c417f 100644 --- a/packages/cli/src/commands/buildpacks/set.ts +++ b/packages/cli/src/commands/buildpacks/set.ts @@ -38,7 +38,7 @@ export default class Set extends Command { if (flags.index === undefined) { spliceIndex = 0 } else { - // eslint-disable-next-line unicorn/no-array-callback-reference, unicorn/no-array-method-this-argument + // eslint-disable-next-line unicorn/no-array-method-this-argument const foundIndex = buildpackCommand.findIndex(buildpacks, flags.index) spliceIndex = (foundIndex === -1) ? buildpacks.length : foundIndex } diff --git a/packages/cli/src/commands/buildpacks/versions.ts b/packages/cli/src/commands/buildpacks/versions.ts index a7aea32502..baacb7c463 100644 --- a/packages/cli/src/commands/buildpacks/versions.ts +++ b/packages/cli/src/commands/buildpacks/versions.ts @@ -24,7 +24,7 @@ export default class Versions extends Command { const registry = new BuildpackRegistry() Result.match({ - Ok: _ => {}, + Ok: () => {}, Err: err => { this.error(`Could not find the buildpack.\n${err}`) }, diff --git a/packages/cli/src/commands/keys/clear.ts b/packages/cli/src/commands/keys/clear.ts index b514c7800d..70c00a954e 100644 --- a/packages/cli/src/commands/keys/clear.ts +++ b/packages/cli/src/commands/keys/clear.ts @@ -1,7 +1,6 @@ -import {Args, ux} from '@oclif/core' -import color from '@heroku-cli/color' +import {ux} from '@oclif/core' import * as Heroku from '@heroku-cli/schema' -import {flags, Command} from '@heroku-cli/command' +import {Command} from '@heroku-cli/command' export default class Clear extends Command { static description = 'remove all SSH keys for current user' diff --git a/packages/cli/src/commands/keys/index.ts b/packages/cli/src/commands/keys/index.ts index a5f9f7b64a..8d91445aa3 100644 --- a/packages/cli/src/commands/keys/index.ts +++ b/packages/cli/src/commands/keys/index.ts @@ -1,4 +1,4 @@ -import {Args, ux} from '@oclif/core' +import {ux} from '@oclif/core' import color from '@heroku-cli/color' import * as Heroku from '@heroku-cli/schema' import {flags, Command} from '@heroku-cli/command' diff --git a/packages/cli/src/commands/keys/remove.ts b/packages/cli/src/commands/keys/remove.ts index 804447db8f..7a3070dd73 100644 --- a/packages/cli/src/commands/keys/remove.ts +++ b/packages/cli/src/commands/keys/remove.ts @@ -1,7 +1,7 @@ import {Args, ux} from '@oclif/core' import color from '@heroku-cli/color' import * as Heroku from '@heroku-cli/schema' -import {flags, Command} from '@heroku-cli/command' +import {Command} from '@heroku-cli/command' export default class Remove extends Command { static description = 'remove an SSH key from the user' diff --git a/packages/cli/src/commands/members/index.ts b/packages/cli/src/commands/members/index.ts index fd87e09c17..45364b9424 100644 --- a/packages/cli/src/commands/members/index.ts +++ b/packages/cli/src/commands/members/index.ts @@ -47,7 +47,7 @@ export default class MembersIndex extends Command { let teamInvites: Heroku.TeamInvitation[] = [] if (teamInfo.type === 'team') { const {body: orgFeatures} = await this.heroku.get(`/teams/${team}/features`) - if (orgFeatures.find((feature => feature.name === 'team-invite-acceptance' && feature.enabled))) { + if (orgFeatures.some((feature => feature.name === 'team-invite-acceptance' && feature.enabled))) { const invitesResponse = await this.heroku.get( `/teams/${team}/invitations`, {headers: { diff --git a/packages/cli/src/commands/orgs/open.ts b/packages/cli/src/commands/orgs/open.ts index f752ffe48a..3d39182645 100644 --- a/packages/cli/src/commands/orgs/open.ts +++ b/packages/cli/src/commands/orgs/open.ts @@ -17,7 +17,7 @@ export default class OrgsOpen extends Command { } public async run(): Promise { - const {flags, argv, args} = await this.parse(OrgsOpen) + const {flags} = await this.parse(OrgsOpen) const team = flags.team const {body: org} = await this.heroku.get(`/teams/${team}`) await OrgsOpen.openUrl(`https://dashboard.heroku.com/teams/${org.name}`) diff --git a/packages/cli/src/commands/pg/copy.ts b/packages/cli/src/commands/pg/copy.ts index 3bf67d1599..b2efa4144d 100644 --- a/packages/cli/src/commands/pg/copy.ts +++ b/packages/cli/src/commands/pg/copy.ts @@ -61,7 +61,7 @@ export default class Copy extends Command { const {flags, args} = await this.parse(Copy) const {'wait-interval': waitInterval, verbose, confirm, app} = flags const pgbackups = backupsFactory(app, this.heroku) - const interval = Math.max(3, Number.parseInt(waitInterval || '0')) || 3 + const interval = Math.max(3, Number.parseInt(waitInterval || '0', 10)) || 3 const [source, target] = await Promise.all([getAttachmentInfo(this.heroku, args.source, app), getAttachmentInfo(this.heroku, args.target, app)]) if (source.url === target.url) diff --git a/packages/cli/src/commands/pg/info.ts b/packages/cli/src/commands/pg/info.ts index 75f4feae21..3b575f92eb 100644 --- a/packages/cli/src/commands/pg/info.ts +++ b/packages/cli/src/commands/pg/info.ts @@ -5,7 +5,7 @@ import * as Heroku from '@heroku-cli/schema' import pghost from '../../lib/pg/host' import {getAddon, all} from '../../lib/pg/fetcher' import {configVarNamesFromValue, databaseNameFromUrl} from '../../lib/pg/util' -import {AddOnAttachmentWithConfigVarsAndPlan, AddOnWithRelatedData, PgDatabaseTenant, TenantInfo} from '../../lib/pg/types' +import {AddOnAttachmentWithConfigVarsAndPlan, AddOnWithRelatedData, PgDatabaseTenant} from '../../lib/pg/types' type DBObject = { addon: AddOnAttachmentWithConfigVarsAndPlan | AddOnWithRelatedData, diff --git a/packages/cli/src/commands/pipelines/promote.ts b/packages/cli/src/commands/pipelines/promote.ts index aa52223fdd..ed283006d1 100644 --- a/packages/cli/src/commands/pipelines/promote.ts +++ b/packages/cli/src/commands/pipelines/promote.ts @@ -43,7 +43,7 @@ function isFailed(promotionTarget: Heroku.PipelinePromotionTarget) { function pollPromotionStatus(heroku: APIClient, id: string, needsReleaseCommand: boolean): Promise> { return heroku.get>(`/pipeline-promotions/${id}/promotion-targets`).then(function ({body: targets}) { - if (targets.every(isComplete)) { // eslint-disable-line unicorn/no-array-callback-reference + if (targets.every(isComplete)) { return targets } @@ -116,7 +116,7 @@ async function getRelease(heroku: APIClient, app: string, releaseId: string): Pr } async function streamReleaseCommand(heroku: APIClient, targets: Array, promotion: any) { - if (targets.length !== 1 || targets.every(isComplete)) { // eslint-disable-line unicorn/no-array-callback-reference + if (targets.length !== 1 || targets.every(isComplete)) { return pollPromotionStatus(heroku, promotion.id, false) } @@ -254,7 +254,7 @@ export default class Promote extends Command { return memo }, {}) - if (promotionTargets.every(isSucceeded)) { // eslint-disable-line unicorn/no-array-callback-reference + if (promotionTargets.every(isSucceeded)) { ux.log('\nPromotion successful') } else { ux.warn('\nPromotion to some apps failed') diff --git a/packages/cli/src/commands/ps/scale.ts b/packages/cli/src/commands/ps/scale.ts index 547ff0edb4..33085ba986 100644 --- a/packages/cli/src/commands/ps/scale.ts +++ b/packages/cli/src/commands/ps/scale.ts @@ -4,7 +4,6 @@ import {ux} from '@oclif/core' import * as Heroku from '@heroku-cli/schema' import {compact} from 'lodash' import heredoc from 'tsheredoc' -import {HTTPError} from 'http-call' const emptyFormationErr = (app: string) => { return new Error(`No process types on ${color.magenta(app)}.\nUpload a Procfile to add process types.\nhttps://devcenter.heroku.com/articles/procfile`) diff --git a/packages/cli/src/commands/ps/type.ts b/packages/cli/src/commands/ps/type.ts index f807eaceb5..68f1d4151a 100644 --- a/packages/cli/src/commands/ps/type.ts +++ b/packages/cli/src/commands/ps/type.ts @@ -3,7 +3,6 @@ import {APIClient, Command, flags} from '@heroku-cli/command' import {ux} from '@oclif/core' import * as Heroku from '@heroku-cli/schema' import {sortBy, compact} from 'lodash' -import {HTTPError} from 'http-call' import heredoc from 'tsheredoc' const COST_MONTHLY: Record = { @@ -57,7 +56,6 @@ const displayFormation = async (heroku: APIClient, app: string) => { return { // this rule does not realize `size` isn't used on an array - /* eslint-disable unicorn/explicit-length-check */ type: color.green(d.type || ''), size: color.cyan(d.size), qty: color.yellow(`${d.quantity}`), @@ -129,12 +127,12 @@ export default class Type extends Command { if (!argv || argv.length === 0) return [] const {body: formation} = await this.heroku.get(`/apps/${app}/formation`) - if (argv.find(a => a.match(/=/))) { + if (argv.some(a => a.match(/=/))) { return compact(argv.map(arg => { const match = arg.match(/^([a-zA-Z0-9_]+)=([\w-]+)$/) const type = match && match[1] const size = match && match[2] - if (!type || !size || !formation.find(p => p.type === type)) { + if (!type || !size || !formation.some(p => p.type === type)) { throw new Error(`Type ${color.red(type || '')} not found in process formation.\nTypes: ${color.yellow(formation.map(f => f.type) .join(', '))}`) } diff --git a/packages/cli/src/file.ts b/packages/cli/src/file.ts index b7af39cd2b..fbda71cd26 100644 --- a/packages/cli/src/file.ts +++ b/packages/cli/src/file.ts @@ -10,7 +10,6 @@ export function exists(f: string): Promise { } export async function stat(file: string): Promise { - // debug('stat', file) return deps.fs.stat(file) } @@ -41,7 +40,6 @@ export async function removeEmptyDirs(dir: string): Promise { } const dirs = files.filter(f => f.stat.isDirectory()).map(f => f.path) - // eslint-disable-next-line unicorn/no-array-callback-reference for (const p of dirs.map(removeEmptyDirs)) await p files = await ls(dir) if (files.length === 0) await remove(dir) diff --git a/packages/cli/test/unit/commands/addons/index.unit.test.ts b/packages/cli/test/unit/commands/addons/index.unit.test.ts index 73f3cc2e4d..a9d9de22db 100644 --- a/packages/cli/test/unit/commands/addons/index.unit.test.ts +++ b/packages/cli/test/unit/commands/addons/index.unit.test.ts @@ -9,9 +9,14 @@ import * as Heroku from '@heroku-cli/schema' describe('addons', function () { describe('--all', function () { - const addons = [ - fixtures.addons['www-db'], fixtures.addons['www-redis'], fixtures.addons['api-redis'], - ] + let addons: Heroku.AddOn[] + + beforeEach(function () { + addons = [ + fixtures.addons['www-db'], fixtures.addons['www-redis'], fixtures.addons['api-redis'], + ] + }) + context('with add-ons', function () { beforeEach(function () { nock('https://api.heroku.com', {reqheaders: {'Accept-Expansion': 'addon_service,plan'}}) diff --git a/packages/cli/test/unit/commands/addons/open.unit.test.ts b/packages/cli/test/unit/commands/addons/open.unit.test.ts index 624e2d6484..9adaece698 100644 --- a/packages/cli/test/unit/commands/addons/open.unit.test.ts +++ b/packages/cli/test/unit/commands/addons/open.unit.test.ts @@ -9,13 +9,15 @@ import Cmd from '../../../../src/commands/addons/open' import * as path from 'node:path' describe('The addons:open command', function () { - const urlOpenerStub = sinon.stub(Cmd, 'urlOpener').callsFake(async (_: string) => {}) + let urlOpenerStub: sinon.SinonStub beforeEach(function () { - urlOpenerStub.reset() + urlOpenerStub = sinon.stub(Cmd, 'urlOpener').callsFake(async () => {}) }) afterEach(function () { + urlOpenerStub.reset() + urlOpenerStub.restore() nock.cleanAll() }) diff --git a/packages/cli/test/unit/commands/certs/auto/enable.unit.test.ts b/packages/cli/test/unit/commands/certs/auto/enable.unit.test.ts index 8e45bc472d..cf3feaa76d 100644 --- a/packages/cli/test/unit/commands/certs/auto/enable.unit.test.ts +++ b/packages/cli/test/unit/commands/certs/auto/enable.unit.test.ts @@ -117,7 +117,7 @@ describe('heroku certs:auto:enable', function () { beforeEach(function () { clock = lolex.install() - clock.setTimeout = function (fn, _timeout) { + clock.setTimeout = function (fn) { fn() return 1 } diff --git a/packages/cli/test/unit/commands/certs/auto/index.unit.test.ts b/packages/cli/test/unit/commands/certs/auto/index.unit.test.ts index 30abc3086a..d72da1d365 100644 --- a/packages/cli/test/unit/commands/certs/auto/index.unit.test.ts +++ b/packages/cli/test/unit/commands/certs/auto/index.unit.test.ts @@ -577,7 +577,7 @@ describe('heroku certs:auto', function () { beforeEach(function () { clock = lolex.install() - clock.setTimeout = function (fn, _timeout) { + clock.setTimeout = function (fn) { fn() return 1 } diff --git a/packages/cli/test/unit/commands/container/login.unit.test.ts b/packages/cli/test/unit/commands/container/login.unit.test.ts index ea53723274..58b3e99e24 100644 --- a/packages/cli/test/unit/commands/container/login.unit.test.ts +++ b/packages/cli/test/unit/commands/container/login.unit.test.ts @@ -30,7 +30,7 @@ describe('container:login', function () { }) it('logs to the docker registry with an old version', async function () { - const version = sandbox.stub(DockerHelper, 'version').returns(new Promise(function (resolve, _) { + const version = sandbox.stub(DockerHelper, 'version').returns(new Promise(function (resolve) { resolve([17, 0]) })) diff --git a/packages/cli/test/unit/commands/container/pull.unit.test.ts b/packages/cli/test/unit/commands/container/pull.unit.test.ts index 77ce9f0697..1254b18916 100644 --- a/packages/cli/test/unit/commands/container/pull.unit.test.ts +++ b/packages/cli/test/unit/commands/container/pull.unit.test.ts @@ -1,4 +1,4 @@ -import {stdout, stderr} from 'stdout-stderr' +import {stdout} from 'stdout-stderr' import Cmd from '../../../../src/commands/container/pull' import runCommand from '../../../helpers/runCommand' import * as sinon from 'sinon' diff --git a/packages/cli/test/unit/commands/container/push.unit.test.ts b/packages/cli/test/unit/commands/container/push.unit.test.ts index 5976997743..dc2c8772ab 100644 --- a/packages/cli/test/unit/commands/container/push.unit.test.ts +++ b/packages/cli/test/unit/commands/container/push.unit.test.ts @@ -210,7 +210,6 @@ describe('container push', function () { resource: 'registry.heroku.com/testapp/web', buildArgs: [], }) - const push = sandbox.stub(DockerHelper, 'pushImage') push.withArgs('registry.heroku.com/testapp/web') push.withArgs('registry.heroku.com/testapp/worker') diff --git a/packages/cli/test/unit/lib/authorizations/authorizations.unit.test.ts b/packages/cli/test/unit/lib/authorizations/authorizations.unit.test.ts index 5952f30d3b..5e6f21ec96 100644 --- a/packages/cli/test/unit/lib/authorizations/authorizations.unit.test.ts +++ b/packages/cli/test/unit/lib/authorizations/authorizations.unit.test.ts @@ -35,11 +35,12 @@ describe('display', function () { }) context('with an auth access token', function () { + const updatedAt = new Date(0) const auth: Heroku.OAuthAuthorization = { id: authId, description: authDesc, scope: ['global', 'app'], - updated_at: `${new Date(0)}`, + updated_at: `${updatedAt}`, access_token: { token: '1234abcd-129f-42d2-854b-EfGhIjKlMn12', expires_in: 10000, @@ -48,6 +49,7 @@ describe('display', function () { setupDisplay(auth) .it('prints the styled authorization with access token info', ctx => { + const expirationDate = addSeconds(new Date(), 10000) expect(ctx.stdout).to.contain(`ID: ${authId}\n`) expect(ctx.stdout).to.contain('Scope: global,app\n') expect(ctx.stdout).to.contain('Description: a cool auth\n') @@ -56,10 +58,9 @@ describe('display', function () { expect(ctx.stdout).to.not.contain('Redirect URI') expect(ctx.stdout).to.contain(`ID: ${authId}\n`) - expect(ctx.stdout).to.contain(`Updated at: ${new Date(0)}`) - expect(ctx.stdout).to.contain(`(${formatDistanceToNow(new Date(0))} ago)`) + expect(ctx.stdout).to.contain(`Updated at: ${updatedAt}`) + expect(ctx.stdout).to.contain(`(${formatDistanceToNow(updatedAt)} ago)`) - const expirationDate = addSeconds(new Date(), 10000) expect(ctx.stdout).to.contain(`Expires at: ${expirationDate}`) expect(ctx.stdout).to.contain(`(in ${formatDistanceToNow(expirationDate)})`) }) diff --git a/packages/cli/test/unit/utils/keyValueParser.unit.test.ts b/packages/cli/test/unit/utils/keyValueParser.unit.test.ts index e9d8d34243..010a23fca2 100644 --- a/packages/cli/test/unit/utils/keyValueParser.unit.test.ts +++ b/packages/cli/test/unit/utils/keyValueParser.unit.test.ts @@ -5,8 +5,8 @@ const exampleInput1 = 'Domain Name=ztestdomain7' const exampleInput2 = 'exampleKey=value' const exampleInput3 = 'example key=example value' -describe('keyValueParser', () => { - it('parses and extracts key/value pairs', () => { +describe('keyValueParser', function () { + it('parses and extracts key/value pairs', function () { const {key: exampleKey1, value: exampleValue1} = parseKeyValue(exampleInput1) const {key: exampleKey2, value: exampleValue2} = parseKeyValue(exampleInput2) const {key: exampleKey3, value: exampleValue3} = parseKeyValue(exampleInput3) diff --git a/yarn.lock b/yarn.lock index b3e637e64e..1d727899f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5374,10 +5374,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:16.11.7": - version: 16.11.7 - resolution: "@types/node@npm:16.11.7" - checksum: 2706403e6efc4aa40fdce8f0b5d9884d5600c3c8610aedc7fa5e7e298d30366f7e8b7296028d52898dca3edef4c3e827b03bf20952c4780f13fa4e79864f7a86 +"@types/node@npm:20.14.8": + version: 20.14.8 + resolution: "@types/node@npm:20.14.8" + dependencies: + undici-types: ~5.26.4 + checksum: a9128840005d4a0aba68826e22ac0fdd86bb9073f1d274217d3509b52f969d1aab83415c85a8461259f33cf34f9eee02fb13dca059865bed2ba2e728bc936a76 languageName: node linkType: hard @@ -11177,7 +11179,7 @@ __metadata: "@types/js-yaml": ^3.12.5 "@types/lodash": ^4.14.123 "@types/mocha": ^10.0.6 - "@types/node": 16.11.7 + "@types/node": 20.14.8 "@types/node-fetch": ^2.1.6 "@types/phoenix": ^1.4.0 "@types/proxyquire": ^1.3.28 From 0990d0c3485e36a9ac7a07d7322d535839af2b1f Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Tue, 8 Oct 2024 12:37:00 -0400 Subject: [PATCH 02/67] chore: add fir types (#3028) --- cspell-dictionary.txt | 10 +- packages/cli/src/lib/types/fir.d.ts | 8315 +++++++++++++++++++++++++++ 2 files changed, 8324 insertions(+), 1 deletion(-) create mode 100644 packages/cli/src/lib/types/fir.d.ts diff --git a/cspell-dictionary.txt b/cspell-dictionary.txt index 7961abc9c6..847c6be2bc 100644 --- a/cspell-dictionary.txt +++ b/cspell-dictionary.txt @@ -31,6 +31,8 @@ bindkey binrun blocklisted boop +Bpcy +Braintree brewhook buildpack buildpacks @@ -52,6 +54,7 @@ credname creds crtfile csrfile +currentpassword CWORD daservice datahdr @@ -71,6 +74,7 @@ dynos dynosize ECCN echoerr +Edmonds elif envfile envl @@ -90,7 +94,9 @@ fpath fragilistic fruby ftest +Gdvb getreqs +Ghpcy githuborg hamurai herokai @@ -99,6 +105,7 @@ herokudns herokumanager herokussl histfile +HRKU howmany htcat iname @@ -194,6 +201,7 @@ myworker ncalls netrc newname +newpassword nodir noeviction notaninteger @@ -346,4 +354,4 @@ xlarge xvzf yetanotherapp yourdomain -ztestdomain7 \ No newline at end of file +ztestdomain7 diff --git a/packages/cli/src/lib/types/fir.d.ts b/packages/cli/src/lib/types/fir.d.ts new file mode 100644 index 0000000000..e0604bc3de --- /dev/null +++ b/packages/cli/src/lib/types/fir.d.ts @@ -0,0 +1,8315 @@ +/** + * + * [Heroku Platform API - account-delinquency](https://devcenter.heroku.com/articles/platform-api-reference#account-delinquency) + * A Heroku account becomes delinquent due to non-payment. We [suspend and delete](https://help.heroku.com/EREVRILX/what-happens-if-i-have-unpaid-heroku-invoices) delinquent accounts if their invoices remain unpaid. + */ +export interface AccountDelinquency { + /** + * scheduled time of when we will suspend your account due to delinquency + * + * @example "2024-01-01T12:00:00Z" + */ + readonly scheduled_suspension_time: string | null; + /** + * scheduled time of when we will delete your account due to delinquency + * + * @example "2024-01-01T12:00:00Z" + */ + readonly scheduled_deletion_time: string | null; +} +/** + * + * [Heroku Platform API - account-feature](https://devcenter.heroku.com/articles/platform-api-reference#account-feature) + * An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku. + */ +export interface AccountFeature { + /** + * when account feature was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * description of account feature + * + * @example "Causes account to example." + */ + readonly description: string; + /** + * documentation URL of account feature + * + * @example "http://devcenter.heroku.com/articles/example" + */ + readonly doc_url: string; + /** + * whether or not account feature has been enabled + * + * @example true + */ + enabled: boolean; + /** + * unique identifier of account feature + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of account feature + * + * @example "name" + */ + readonly name: string; + /** + * state of account feature + * + * @example "public" + */ + readonly state: string; + /** + * when account feature was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * user readable feature name + * + * @example "My Feature" + */ + readonly display_name: string; + /** + * e-mail to send feedback about the feature + * + * @example "feedback@heroku.com" + */ + readonly feedback_email: string; +} +export interface AccountFeatureUpdatePayload { + /** + * whether or not account feature has been enabled + * + * @example true + */ + enabled: boolean; +} +/** + * + * [Heroku Platform API - account](https://devcenter.heroku.com/articles/platform-api-reference#account) + * An account represents an individual signed up to use the Heroku platform. + */ +export interface Account { + /** + * whether to allow third party web activity tracking + * + * @example true + */ + allow_tracking: boolean; + /** + * whether allowed to utilize beta Heroku features + */ + beta: boolean; + /** + * when account was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * whether the user is federated and belongs to an Identity Provider + */ + readonly federated: boolean; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * Identity Provider details for federated users. + */ + identity_provider: IdentityProvider | null; + /** + * when account last authorized with Heroku + * + * @example "2012-01-01T12:00:00Z" + */ + readonly last_login: string | null; + /** + * full name of the account owner + * + * @example "Tina Edmonds" + */ + name: string | null; + /** + * SMS number of account + * + * @example "+1 ***-***-1234" + */ + readonly sms_number: string | null; + /** + * when account was suspended + * + * @example "2012-01-01T12:00:00Z" + */ + readonly suspended_at: string | null; + /** + * when account became delinquent + * + * @example "2012-01-01T12:00:00Z" + */ + readonly delinquent_at: string | null; + /** + * whether two-factor auth is enabled on the account + */ + readonly two_factor_authentication: boolean; + /** + * when account was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * whether account has been verified with billing information + */ + readonly verified: boolean; + /** + * country where account owner resides + * + * @example "United States" + */ + country_of_residence: string | null; + /** + * team selected by default + */ + default_organization: DefaultOrganization | null; + /** + * team selected by default + */ + default_team: DefaultTeam | null; +} +/** + * + * [Heroku Platform API - identity-provider](https://devcenter.heroku.com/articles/platform-api-reference#identity-provider) + * Identity Providers represent the SAML configuration of teams or an Enterprise account + */ +export interface IdentityProvider { + /** + * raw contents of the public certificate (eg: .crt or .pem file) + * + * @example "-----BEGIN CERTIFICATE----- ..." + */ + certificate: string; + /** + * when provider record was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * URL identifier provided by the identity provider + * + * @example "https://customer-domain.idp.com" + */ + entity_id: string; + /** + * unique identifier of this identity provider + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * single log out URL for this identity provider + * + * @example "https://example.com/idp/logout" + */ + slo_target_url: string; + /** + * single sign on URL for this identity provider + * + * @example "https://example.com/idp/login" + */ + sso_target_url: string; + /** + * team associated with this identity provider + */ + organization: null | Organization; + /** + * when the identity provider record was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * entity that owns this identity provider + */ + owner: Owner; +} +/** + * + * [Heroku Platform API - team](https://devcenter.heroku.com/articles/platform-api-reference#team) + * Teams allow you to manage access to a shared group of applications and other resources. + */ +export interface Team { + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * when the team was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * whether charges incurred by the team are paid by credit card. + * + * @example true + */ + readonly credit_card_collections: boolean; + /** + * whether to use this team when none is specified + * + * @example true + */ + default: boolean; + enterprise_account: null | TeamEnterpriseAccount; + /** + * Identity Provider associated with the Team + */ + identity_provider: null | TeamIdentityProvider; + /** + * upper limit of members allowed in a team. + * + * @example 25 + */ + readonly membership_limit: number | null; + /** + * unique name of team + * + * @example "example" + */ + readonly name: string; + /** + * whether the team is provisioned licenses by salesforce. + * + * @example true + */ + readonly provisioned_licenses: boolean; + /** + * role in the team + * + * @example "admin" + */ + readonly role: null | 'admin' | 'collaborator' | 'member' | 'owner' | ''; + /** + * type of team. + * + * @example "team" + */ + readonly type: 'enterprise' | 'team'; + /** + * when the team was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +export interface Organization { + /** + * unique name of team + * + * @example "example" + */ + readonly name?: string; +} +/** + * + * entity that owns this identity provider + */ +export interface Owner { + /** + * unique identifier of the owner + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * name of the owner + * + * @example "acme" + */ + readonly name?: string; + /** + * type of the owner + * + * @example "team" + */ + readonly type: 'team' | 'enterprise-account'; +} +/** + * + * team selected by default + */ +export interface DefaultOrganization { + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of team + * + * @example "example" + */ + readonly name: string; +} +/** + * + * team selected by default + */ +export interface DefaultTeam { + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of team + * + * @example "example" + */ + readonly name: string; +} +export interface AccountUpdatePayload { + /** + * whether to allow third party web activity tracking + * + * @example true + */ + allow_tracking?: boolean; + /** + * whether allowed to utilize beta Heroku features + */ + beta?: boolean; + /** + * full name of the account owner + * + * @example "Tina Edmonds" + */ + name?: string | null; +} +export interface AccountUpdateByUserPayload { + /** + * whether to allow third party web activity tracking + * + * @example true + */ + allow_tracking?: boolean; + /** + * whether allowed to utilize beta Heroku features + */ + beta?: boolean; + /** + * full name of the account owner + * + * @example "Tina Edmonds" + */ + name?: string | null; +} +/** + * + * [Heroku Platform API - add-on-action](https://devcenter.heroku.com/articles/platform-api-reference#add-on-action) + * Add-on Actions are lifecycle operations for add-on provisioning and deprovisioning. They allow add-on providers to (de)provision add-ons in the background and then report back when (de)provisioning is complete. + */ +export interface AddOnAction { + +} +/** + * + * Add-ons represent add-ons that have been provisioned and attached to one or more apps. + */ +export interface AddOn { + /** + * provider actions for this specific add-on + */ + readonly actions: Array>; + /** + * identity of add-on serviceAdd-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication. + */ + addon_service: { + /** + * unique identifier of this add-on-service + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of this add-on-service + * + * @example "heroku-postgresql" + */ + readonly name: string; +} | AddOnService; + /** + * billing entity associated with this add-on + */ + billing_entity: BillingEntity; + /** + * billing application associated with this add-on + */ + app: App; + /** + * billed price + */ + billed_price: BilledPrice | null; + /** + * config vars exposed to the owning app by this add-on + * + * @example ["FOO","BAZ"] + */ + readonly config_vars: string[]; + /** + * when add-on was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of add-on + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * globally unique name of the add-on + * + * @example "acme-inc-primary-database" + */ + name: string; + /** + * identity of add-on planPlans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication. + */ + plan: { + /** + * unique identifier of this plan + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of this plan + * + * @example "heroku-postgresql:dev" + */ + readonly name: string; +} | Plan; + /** + * id of this add-on with its provider + * + * @example "abcd1234" + */ + readonly provider_id: string; + /** + * A provision message + */ + readonly provision_message?: string; + /** + * state in the add-on's lifecycle + * + * @example "provisioned" + */ + readonly state: 'provisioning' | 'provisioned' | 'deprovisioned'; + /** + * when add-on was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * URL for logging into web interface of add-on (e.g. a dashboard) + * + * @example "https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef" + */ + readonly web_url: null | string; +} +/** + * + * [Heroku Platform API - add-on-service](https://devcenter.heroku.com/articles/platform-api-reference#add-on-service) + * Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication. + */ +export interface AddOnService { + /** + * npm package name of the add-on service's Heroku CLI plugin + * + * @example "heroku-papertrail" + */ + readonly cli_plugin_name: string | null; + /** + * when add-on-service was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * human-readable name of the add-on service provider + * + * @example "Heroku Postgres" + */ + readonly human_name: string; + /** + * unique identifier of this add-on-service + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of this add-on-service + * + * @example "heroku-postgresql" + */ + readonly name: string; + /** + * release status for add-on service + * + * @example "ga" + */ + readonly state: 'alpha' | 'beta' | 'ga' | 'shutdown'; + /** + * whether or not apps can have access to more than one instance of this add-on at the same time + */ + readonly supports_multiple_installations: boolean; + /** + * whether or not apps can have access to add-ons billed to a different app + */ + readonly supports_sharing: boolean; + /** + * when add-on-service was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * billing entity associated with this add-on + */ +export interface BillingEntity { + /** + * unique identifier of the billing entity + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * name of the billing entity + * + * @example "example" + */ + readonly name: string; + /** + * type of Object of the billing entity; new types allowed at any time. + * + * @example "app" + */ + readonly type: 'app' | 'team'; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * An app represents the program that you would like to deploy and run on Heroku. + */ +export interface App { + /** + * ACM status of this app + */ + readonly acm: boolean; + /** + * when app was archived + * + * @example "2012-01-01T12:00:00Z" + */ + readonly archived_at: null | string; + /** + * name of the image used for the base layers of the OCI image + * + * @example "heroku/heroku:22-cnb" + */ + readonly base_image_name: null | string; + /** + * identity of the stack that will be used for new builds + */ + build_stack: BuildStack; + /** + * description from buildpack of app + * + * @example "Ruby/Rack" + */ + readonly buildpack_provided_description: null | string; + /** + * buildpacks of the OCI image + */ + buildpacks: null | Buildpack[]; + /** + * when app was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * current build architecture for the app + * + * @example "[arm64]" + */ + current_build_architecture: unknown[]; + /** + * the generation of the app + * + * @example "fir" + */ + readonly generation: string; + /** + * git repo URL of app + * + * @example "https://git.heroku.com/example.git" + */ + readonly git_url: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * describes whether a Private Spaces app is externally routable or not + */ + internal_routing: boolean | null; + /** + * maintenance status of app + */ + maintenance: boolean; + /** + * unique name of app + * + * @example "example" + */ + name: string; + /** + * identity of app owner + */ + owner: AppOwner; + /** + * identity of team + */ + organization: null | AppOrganization; + /** + * identity of team + */ + team: null | AppTeam; + /** + * identity of app region + */ + region: AppRegion; + /** + * when app was released + * + * @example "2012-01-01T12:00:00Z" + */ + readonly released_at: null | string; + /** + * git repo size in bytes of app + */ + readonly repo_size: number | null; + /** + * slug size in bytes of app + */ + readonly slug_size: number | null; + /** + * identity of space + */ + space: null | Space; + /** + * identity of app stack + */ + stack: Stack; + /** + * when app was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * web URL of app + * + * @example "https://example.herokuapp.com/" + */ + readonly web_url: null | string; +} +/** + * + * billed price + */ +export interface BilledPrice { + /** + * price in cents per unit of plan + */ + readonly cents: number; + /** + * price is negotiated in a contract outside of monthly add-on billing + */ + readonly contract: boolean; + /** + * unit of price for plan + * + * @example "month" + */ + readonly unit: string; +} +/** + * + * [Heroku Platform API - plan](https://devcenter.heroku.com/articles/platform-api-reference#plan) + * Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication. + */ +export interface Plan { + /** + * identity of add-on service + */ + addon_service: AddonService; + /** + * when plan was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * the compliance regimes applied to an add-on plan + * + * @example ["HIPAA"] + */ + compliance: null | 'HIPAA' | Array<'PCI'>; + /** + * whether this plan is the default for its add-on service + */ + readonly default: boolean; + /** + * description of plan + * + * @example "Heroku Postgres Dev" + */ + readonly description: string; + /** + * human readable name of the add-on plan + * + * @example "Dev" + */ + readonly human_name: string; + /** + * unique identifier of this plan + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * whether this plan is installable to a Private Spaces app + */ + readonly installable_inside_private_network: boolean; + /** + * whether this plan is installable to a Common Runtime app + * + * @example true + */ + readonly installable_outside_private_network: boolean; + /** + * unique name of this plan + * + * @example "heroku-postgresql:dev" + */ + readonly name: string; + /** + * price + */ + price: Price; + /** + * whether this plan is the default for apps in Private Spaces + */ + readonly space_default: boolean; + /** + * release status for plan + * + * @example "public" + */ + readonly state: string; + /** + * when plan was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * whether this plan is publicly visible + * + * @example true + */ + readonly visible: boolean; +} +/** + * + * identity of add-on service + */ +export interface AddonService { + /** + * unique identifier of this add-on-service + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of this add-on-service + * + * @example "heroku-postgresql" + */ + readonly name: string; +} +/** + * + * price + */ +export interface Price { + /** + * price in cents per unit of plan + */ + readonly cents: number; + /** + * price is negotiated in a contract outside of monthly add-on billing + */ + readonly contract: boolean; + /** + * unit of price for plan + * + * @example "month" + */ + readonly unit: string; +} +export interface AddOnActionPeerPayload { + /** + * The AWS VPC Peering Connection ID of the peering. + * + * @example "pcx-123456789012" + */ + readonly pcx_id: string; +} +/** + * + * [Heroku Platform API - add-on-attachment](https://devcenter.heroku.com/articles/platform-api-reference#add-on-attachment) + * An add-on attachment represents a connection between an app and an add-on that it has been given access to. + */ +export interface AddOnAttachment { + /** + * identity of add-on + */ + addon: Addon; + /** + * application that is attached to add-on + */ + app: App; + /** + * when add-on attachment was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of this add-on attachment + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name for this add-on attachment to this app + * + * @example "DATABASE" + */ + readonly name: string; + /** + * attachment namespace + * + * @example "role:analytics" + */ + readonly namespace: null | string; + /** + * when add-on attachment was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * URL for logging into web interface of add-on in attached app context + * + * @example "https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef" + */ + readonly web_url: null | string; + /** + * URL for add-on partners to write to an add-on's logs + * + * @example "https://token:t.abcdef12-3456-7890-abcd-ef1234567890@1.us.logplex.io/logs" + */ + readonly log_input_url: null | string; +} +/** + * + * identity of add-on + */ +export interface Addon { + /** + * unique identifier of add-on + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * globally unique name of the add-on + * + * @example "acme-inc-primary-database" + */ + name: string; + /** + * billing application associated with this add-on + */ + app: App; +} +export interface AddOnAttachmentCreatePayload { + /** + * unique identifier of add-on or globally unique name of the add-on + */ + addon: string; + /** + * unique identifier of app or unique name of app + */ + app: string; + /** + * name of owning app for confirmation + * + * @example "example" + */ + confirm?: string; + /** + * unique name for this add-on attachment to this app + * + * @example "DATABASE" + */ + readonly name?: string; + /** + * attachment namespace + * + * @example "role:analytics" + */ + readonly namespace?: null | string; +} +export interface AddOnAttachmentResolutionPayload { + /** + * unique name for this add-on attachment to this app + * + * @example "DATABASE" + */ + readonly addon_attachment: string; + /** + * unique name of app + * + * @example "example" + */ + app?: string; + /** + * unique name of this add-on-service + * + * @example "heroku-postgresql" + */ + readonly addon_service?: string; +} +/** + * + * [Heroku Platform API - add-on-config](https://devcenter.heroku.com/articles/platform-api-reference#add-on-config) + * Configuration of an Add-on + */ +export interface AddOnConfig { + /** + * unique name of the config + * + * @example "FOO" + */ + name: string; + /** + * value of the config + * + * @example "bar" + */ + value: string | null; +} +export interface AddOnConfigUpdatePayload { + config?: AddOnConfig[]; +} +/** + * + * [Heroku Platform API - add-on-plan-action](https://devcenter.heroku.com/articles/platform-api-reference#add-on-plan-action) + * Add-on Plan Actions are Provider functionality for specific add-on installations + */ +export interface AddOnPlanAction { + /** + * a unique identifier + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * the display text shown in Dashboard + * + * @example "Example" + */ + readonly label: string; + /** + * identifier of the action to take that is sent via SSO + * + * @example "example" + */ + readonly action: string; + /** + * absolute URL to use instead of an action + * + * @example "http://example.com?resource_id=:resource_id" + */ + readonly url: string; + /** + * if the action requires the user to own the app + * + * @example true + */ + readonly requires_owner: boolean; +} +/** + * + * [Heroku Platform API - add-on-region-capability](https://devcenter.heroku.com/articles/platform-api-reference#add-on-region-capability) + * Add-on region capabilities represent the relationship between an Add-on Service and a specific Region. Only Beta and GA add-ons are returned by these endpoints. + */ +export interface AddOnRegionCapability { + /** + * unique identifier of this add-on-region-capability + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * whether the add-on can be installed to a Space + */ + readonly supports_private_networking: boolean; + /** + * Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication. + */ + addon_service: AddOnService; + /** + * A region represents a geographic location in which your application may run. + */ + region: Region; +} +/** + * + * [Heroku Platform API - region](https://devcenter.heroku.com/articles/platform-api-reference#region) + * A region represents a geographic location in which your application may run. + */ +export interface Region { + /** + * country where the region exists + * + * @example "United States" + */ + readonly country: string; + /** + * when region was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * description of region + * + * @example "United States" + */ + readonly description: string; + /** + * unique identifier of region + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * area in the country where the region exists + * + * @example "Virginia" + */ + readonly locale: string; + /** + * unique name of region + * + * @example "us" + */ + readonly name: string; + /** + * whether or not region is available for creating a Private Space + */ + readonly private_capable: boolean; + /** + * provider of underlying substrate + */ + readonly provider: Provider; + /** + * when region was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * provider of underlying substrate + */ +export interface Provider { + /** + * name of provider + * + * @example "amazon-web-services" + */ + readonly name?: string; + /** + * region name used by provider + * + * @example "us-east-1" + */ + readonly region?: 'ap-south-1' | 'eu-west-1' | 'ap-southeast-1' | 'ap-southeast-2' | 'eu-central-1' | 'eu-west-2' | 'ap-northeast-2' | 'ap-northeast-1' | 'us-east-1' | 'sa-east-1' | 'us-west-1' | 'us-west-2' | 'ca-central-1'; +} +/** + * + * Represents the delivery of a webhook notification, including its current status. + */ +export interface AppWebhookDelivery { + /** + * when the delivery was created + */ + created_at: string; + /** + * identity of event + */ + event: Event; + /** + * the delivery's unique identifier + */ + readonly id: string; + /** + * number of times a delivery has been attempted + */ + readonly num_attempts: number; + /** + * when delivery will be attempted again + */ + next_attempt_at: string | null; + /** + * last attempt of a delivery + */ + last_attempt: LastAttempt | null; + /** + * the delivery's status + * + * @example "pending" + */ + status: 'pending' | 'scheduled' | 'retrying' | 'failed' | 'succeeded'; + /** + * when the delivery was last updated + */ + updated_at: string; + /** + * identity of webhook + */ + webhook: Webhook; +} +/** + * + * identity of event + */ +export interface Event { + /** + * the event's unique identifier + */ + readonly id: string; + /** + * the type of entity that the event is related to + * + * @example "api:release" + */ + include: string; +} +/** + * + * last attempt of a delivery + */ +export interface LastAttempt { + /** + * unique identifier of attempt + */ + readonly id: string; + /** + * http response code received during attempt + */ + readonly code: number | null; + /** + * error class encountered during attempt + */ + readonly error_class: string | null; + /** + * status of an attempt + * + * @example "scheduled" + */ + status: 'scheduled' | 'succeeded' | 'failed'; + /** + * when attempt was created + */ + created_at: string; + /** + * when attempt was updated + */ + updated_at: string; +} +/** + * + * identity of webhook + */ +export interface Webhook { + /** + * the webhook's unique identifier + */ + readonly id: string; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level: 'notify' | 'sync'; +} +/** + * + * Represents a webhook event that occurred. + */ +export interface AppWebhookEvent { + /** + * when event was created + */ + created_at: string; + /** + * the event's unique identifier + */ + readonly id: string; + /** + * the type of entity that the event is related to + * + * @example "api:release" + */ + include: string; + /** + * payload of event + */ + payload: Payload; + /** + * when the event was last updated + */ + updated_at: string; +} +/** + * + * payload of event + */ +export interface Payload { + /** + * the type of event that occurred + * + * @example "create" + */ + action: string; + /** + * user that caused event + */ + actor: Actor; + /** + * the current details of the event + */ + data: Record; + /** + * previous details of the event (if any) + */ + previous_data: Record; + /** + * the type of resource associated with the event + * + * @example "release" + */ + resource: string; + /** + * the version of the details provided for the event + * + * @example "1" + */ + version: string; +} +/** + * + * user that caused event + */ +export interface Actor { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * [Heroku Platform API - add-on-webhook](https://devcenter.heroku.com/articles/platform-api-reference#add-on-webhook) + * Represents the details of a webhook subscription + */ +export interface AddOnWebhook { + /** + * when the webhook was created + */ + created_at: string; + /** + * the webhook's unique identifier + */ + readonly id: string; + /** + * the entities that the subscription provides notifications for + */ + include: string[]; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level: 'notify' | 'sync'; + /** + * when the webhook was updated + */ + updated_at: string; + /** + * the URL where the webhook's notification requests are sent + */ + url: string; +} +export interface AddOnWebhookCreatePayload { + /** + * a custom `Authorization` header that Heroku will include with all webhook notifications + * + * @example "Bearer 9266671b2767f804c9d5809c2d384ed57d8f8ce1abd1043e1fb3fbbcb8c3" + */ + authorization?: null | string; + /** + * the entities that the subscription provides notifications for + */ + include: string[]; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level: 'notify' | 'sync'; + /** + * a value that Heroku will use to sign all webhook notification requests (the signature is included in the request’s `Heroku-Webhook-Hmac-SHA256` header) + * + * @example "dcbff0c4430a2960a2552389d587bc58d30a37a8cf3f75f8fb77abe667ad" + */ + secret?: null | string; + /** + * the URL where the webhook's notification requests are sent + */ + url: string; +} +/** + * + * add-on webhook + */ +export interface AddonWebhook { + /** + * identity of add-on. Only used for add-on partner webhooks. + */ + addon?: AddonWebhookAddon; + /** + * when the webhook was created + */ + created_at?: string; + /** + * the webhook's unique identifier + */ + readonly id?: string; + /** + * the entities that the subscription provides notifications for + */ + include?: string[]; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level?: 'notify' | 'sync'; + /** + * when the webhook was updated + */ + updated_at?: string; + /** + * the URL where the webhook's notification requests are sent + */ + url?: string; +} +/** + * + * identity of add-on. Only used for add-on partner webhooks. + */ +export interface AddonWebhookAddon { + /** + * unique identifier of add-on + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * globally unique name of the add-on + * + * @example "acme-inc-primary-database" + */ + name: string; +} +export interface AddOnWebhookUpdatePayload { + /** + * a custom `Authorization` header that Heroku will include with all webhook notifications + * + * @example "Bearer 9266671b2767f804c9d5809c2d384ed57d8f8ce1abd1043e1fb3fbbcb8c3" + */ + authorization?: null | string; + /** + * the entities that the subscription provides notifications for + */ + include?: string[]; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level?: 'notify' | 'sync'; + /** + * a value that Heroku will use to sign all webhook notification requests (the signature is included in the request’s `Heroku-Webhook-Hmac-SHA256` header) + * + * @example "dcbff0c4430a2960a2552389d587bc58d30a37a8cf3f75f8fb77abe667ad" + */ + secret?: null | string; + /** + * the URL where the webhook's notification requests are sent + */ + url?: string; +} +export interface AddOnCreatePayload { + /** + * name for add-on's initial attachment + * + * @example {"name":"DATABASE_FOLLOWER"} + */ + attachment?: Attachment; + /** + * custom add-on provisioning options + * + * @example {"db-version":"1.2.3"} + */ + config?: Record; + /** + * name of billing entity for confirmation + * + * @example "example" + */ + confirm?: string; + /** + * unique identifier of this plan or unique name of this plan + */ + plan: string; + /** + * globally unique name of the add-on + * + * @example "acme-inc-primary-database" + */ + name?: string; +} +/** + * + * name for add-on's initial attachment + */ +export interface Attachment { + /** + * unique name for this add-on attachment to this app + * + * @example "DATABASE" + */ + readonly name?: string; +} +export interface AddOnUpdatePayload { + /** + * globally unique name of the add-on + * + * @example "acme-inc-primary-database" + */ + name?: string; + /** + * unique identifier of this plan or unique name of this plan + */ + plan: string; +} +export interface AddOnResolutionPayload { + /** + * globally unique name of the add-on + * + * @example "acme-inc-primary-database" + */ + addon: string; + /** + * unique name of app + * + * @example "example" + */ + app?: string; + /** + * unique name of this add-on-service + * + * @example "heroku-postgresql" + */ + readonly addon_service?: string; +} +/** + * + * [Heroku Platform API - allowed-add-on-service](https://devcenter.heroku.com/articles/platform-api-reference#allowed-add-on-service) + * Entities that have been allowed to be used by a Team + */ +export interface AllowedAddOnService { + /** + * when the add-on service was allowed + * + * @example "2012-01-01T12:00:00Z" + */ + readonly added_at: string; + /** + * the user which allowed the add-on service + */ + readonly added_by: AddedBy; + /** + * the add-on service allowed for use + */ + readonly addon_service: AllowedAddOnServiceAddonService; + /** + * unique identifier for this allowed add-on service record + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * the user which allowed the add-on service + */ +export interface AddedBy { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email?: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * the add-on service allowed for use + */ +export interface AllowedAddOnServiceAddonService { + /** + * unique identifier of this add-on-service + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of this add-on-service + * + * @example "heroku-postgresql" + */ + readonly name?: string; + /** + * human-readable name of the add-on service provider + * + * @example "Heroku Postgres" + */ + readonly human_name?: string; +} +export interface AllowedAddOnServiceCreateByTeamPayload { + /** + * name of the add-on service to allow + * + * @example "heroku-postgresql" + */ + addon_service?: string; +} +/** + * + * [Heroku Platform API - app-feature](https://devcenter.heroku.com/articles/platform-api-reference#app-feature) + * An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku. + */ +export interface AppFeature { + /** + * when app feature was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * description of app feature + * + * @example "Causes app to example." + */ + readonly description: string; + /** + * documentation URL of app feature + * + * @example "http://devcenter.heroku.com/articles/example" + */ + readonly doc_url: string; + /** + * whether or not app feature has been enabled + * + * @example true + */ + enabled: boolean; + /** + * unique identifier of app feature + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of app feature + * + * @example "name" + */ + readonly name: string; + /** + * state of app feature + * + * @example "public" + */ + readonly state: string; + /** + * when app feature was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * user readable feature name + * + * @example "My Feature" + */ + readonly display_name: string; + /** + * e-mail to send feedback about the feature + * + * @example "feedback@heroku.com" + */ + readonly feedback_email: string; +} +export interface AppFeatureUpdatePayload { + /** + * whether or not app feature has been enabled + * + * @example true + */ + enabled: boolean; +} +/** + * + * [Heroku Platform API - app-setup](https://devcenter.heroku.com/articles/platform-api-reference#app-setup) + * An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file. + */ +export interface AppSetup { + /** + * unique identifier of app setup + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * when app setup was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * when app setup was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * the overall status of app setup + * + * @example "failed" + */ + readonly status: 'failed' | 'pending' | 'succeeded'; + /** + * reason that app setup has failed + * + * @example "invalid app.json" + */ + readonly failure_message: string | null; + /** + * identity of app + */ + app: App; + /** + * identity and status of build + */ + build: null | Build; + /** + * errors associated with invalid app.json manifest file + * + * @example ["config var FOO is required"] + */ + readonly manifest_errors: string[]; + /** + * result of postdeploy script + */ + readonly postdeploy: Postdeploy | null; + /** + * fully qualified success url + * + * @example "https://example.herokuapp.com/welcome" + */ + readonly resolved_success_url: string | null; +} +/** + * + * [Heroku Platform API - build](https://devcenter.heroku.com/articles/platform-api-reference#build) + * A build represents the process of transforming a code tarball into a slug + */ +export interface Build { + /** + * app that the build belongs to + */ + app?: BuildApp; + /** + * buildpacks executed for this build, in order + */ + buildpacks?: Array<{ + /** + * the URL of the buildpack for the app + * + * @example "https://github.com/heroku/heroku-buildpack-ruby" + */ + url?: string; + /** + * Buildpack Registry name of the buildpack for the app + * + * @example "heroku/ruby" + */ + name?: string; +}> | null; + /** + * when build was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of build + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * Build process output will be available from this URL as a stream. The stream is available as either `text/plain` or `text/event-stream`. Clients should be prepared to handle disconnects and can resume the stream by sending a `Range` header (for `text/plain`) or a `Last-Event-Id` header (for `text/event-stream`). + * + * @example "https://build-output.heroku.com/streams/01234567-89ab-cdef-0123-456789abcdef" + */ + readonly output_stream_url?: string; + /** + * location of gzipped tarball of source code used to create build + */ + source_blob: BuildSourceBlob; + /** + * release resulting from the build + * + * @example {"id":"01234567-89ab-cdef-0123-456789abcdef"} + */ + readonly release?: null | BuildRelease; + /** + * slug created by this build + */ + slug?: Slug | null; + /** + * stack of build + * + * @example "heroku-22" + */ + readonly stack?: string; + /** + * status of build + * + * @example "succeeded" + */ + readonly status: 'failed' | 'pending' | 'succeeded'; + /** + * when build was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * user that started the build + */ + user: User; +} +/** + * + * result of postdeploy script + */ +export interface Postdeploy { + /** + * output of the postdeploy script + * + * @example "assets precompiled" + */ + readonly output?: string; + /** + * The exit code of the postdeploy script + * + * @example 1 + */ + readonly exit_code?: number; +} +export interface AppSetupCreatePayload { + /** + * optional parameters for created app + */ + app?: AppSetupCreatePayloadApp; + /** + * gzipped tarball of source code containing app.json manifest file + */ + source_blob: SourceBlob; + /** + * overrides of keys in the app.json manifest file + * + * @example {"buildpacks":[{"url":"https://example.com/buildpack.tgz"}],"env":{"FOO":"bar","BAZ":"qux"}} + */ + overrides?: Overrides; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * optional parameters for created app + */ +export interface AppSetupCreatePayloadApp { + /** + * are other team members forbidden from joining this app. + */ + locked?: boolean; + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * unique name of team + * + * @example "example" + */ + readonly organization?: string; + /** + * force creation of the app in the user account even if a default team is set. + */ + personal?: boolean; + /** + * unique name of region + * + * @example "us" + */ + readonly region?: string; + /** + * unique name of space + * + * @example "nasa" + */ + space?: string; + /** + * unique name of stack + * + * @example "heroku-18" + */ + readonly stack?: string; +} +/** + * + * gzipped tarball of source code containing app.json manifest file + */ +export interface SourceBlob { + /** + * an optional checksum of the gzipped tarball for verifying its integrity + * + * @example "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + */ + readonly checksum?: null | string; + /** + * URL of gzipped tarball of source code containing app.json manifest file + * + * @example "https://example.com/source.tgz?token=xyz" + */ + readonly url?: string; + /** + * Version of the gzipped tarball. + * + * @example "v1.3.0" + */ + readonly version?: string | null; +} +/** + * + * overrides of keys in the app.json manifest file + */ +export interface Overrides { + /** + * overrides the buildpacks specified in the app.json manifest file + * + * @example [{"url":"https://example.com/buildpack.tgz"}] + */ + buildpacks?: BuildpackOverride[]; + /** + * overrides of the env specified in the app.json manifest file + * + * @example {"FOO":"bar","BAZ":"qux"} + */ + readonly env?: Record; +} +/** + * + * a buildpack override + */ +export interface BuildpackOverride { + /** + * location of the buildpack + * + * @example "https://example.com/buildpack.tgz" + */ + url?: string; +} +/** + * + * [Heroku Platform API - app-transfer](https://devcenter.heroku.com/articles/platform-api-reference#app-transfer) + * An app transfer represents a two party interaction for transferring ownership of an app. + */ +export interface AppTransfer { + /** + * app involved in the transfer + */ + app: App; + /** + * when app transfer was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of app transfer + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * identity of the owner of the transfer + */ + owner: AppTransferOwner; + /** + * identity of the recipient of the transfer + */ + recipient: Recipient; + /** + * the current state of an app transfer + * + * @example "pending" + */ + readonly state: 'pending' | 'accepted' | 'declined'; + /** + * when app transfer was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * identity of the owner of the transfer + */ +export interface AppTransferOwner { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * identity of the recipient of the transfer + */ +export interface Recipient { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +export interface AppTransferCreatePayload { + /** + * unique identifier of app or unique name of app + */ + app: string; + /** + * unique email address of account or unique identifier of an account or Implicit reference to currently authorized user + */ + recipient: string; + /** + * whether to suppress email notification when transferring apps + */ + readonly silent?: boolean; +} +export interface AppTransferUpdatePayload { + /** + * the current state of an app transfer + * + * @example "pending" + */ + readonly state: 'pending' | 'accepted' | 'declined'; +} +export interface AppWebhookCreatePayload { + /** + * a custom `Authorization` header that Heroku will include with all webhook notifications + * + * @example "Bearer 9266671b2767f804c9d5809c2d384ed57d8f8ce1abd1043e1fb3fbbcb8c3" + */ + authorization?: null | string; + /** + * the entities that the subscription provides notifications for + */ + include: string[]; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level: 'notify' | 'sync'; + /** + * a value that Heroku will use to sign all webhook notification requests (the signature is included in the request’s `Heroku-Webhook-Hmac-SHA256` header) + * + * @example "dcbff0c4430a2960a2552389d587bc58d30a37a8cf3f75f8fb77abe667ad" + */ + secret?: null | string; + /** + * the URL where the webhook's notification requests are sent + */ + url: string; +} +/** + * + * app webhook + */ +export interface AppWebhook { + /** + * identity of app. Only used for customer webhooks. + */ + app?: App; + /** + * when the webhook was created + */ + created_at?: string; + /** + * the webhook's unique identifier + */ + readonly id?: string; + /** + * the entities that the subscription provides notifications for + */ + include?: string[]; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level?: 'notify' | 'sync'; + /** + * when the webhook was updated + */ + updated_at?: string; + /** + * the URL where the webhook's notification requests are sent + */ + url?: string; +} +export interface AppWebhookUpdatePayload { + /** + * a custom `Authorization` header that Heroku will include with all webhook notifications + * + * @example "Bearer 9266671b2767f804c9d5809c2d384ed57d8f8ce1abd1043e1fb3fbbcb8c3" + */ + authorization?: null | string; + /** + * the entities that the subscription provides notifications for + */ + include?: string[]; + /** + * if `notify`, Heroku makes a single, fire-and-forget delivery attempt. If `sync`, Heroku attempts multiple deliveries until the request is successful or a limit is reached + * + * @example "notify" + */ + level?: 'notify' | 'sync'; + /** + * a value that Heroku will use to sign all webhook notification requests (the signature is included in the request’s `Heroku-Webhook-Hmac-SHA256` header) + * + * @example "dcbff0c4430a2960a2552389d587bc58d30a37a8cf3f75f8fb77abe667ad" + */ + secret?: null | string; + /** + * the URL where the webhook's notification requests are sent + */ + url?: string; +} +/** + * + * identity of the stack that will be used for new builds + */ +export interface BuildStack { + /** + * unique identifier of stack + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of stack + * + * @example "heroku-18" + */ + readonly name?: string; +} +/** + * + * set of executables that inspects app source code and creates a plan to build and run your image + */ +export interface Buildpack { + /** + * identifier of the buildpack + * + * @example "heroku/ruby" + */ + id?: string; + /** + * version of the buildpack + * + * @example "2.0.0" + */ + version?: string; + /** + * homepage of the buildpack + * + * @example "https://github.com/heroku/buildpacks-ruby" + */ + homepage?: string; +} +/** + * + * identity of app owner + */ +export interface AppOwner { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * identity of team + */ +export interface AppOrganization { + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of team + * + * @example "example" + */ + readonly name?: string; +} +/** + * + * [Heroku Platform API - team](https://devcenter.heroku.com/articles/platform-api-reference#team) + * identity of team + */ +export interface AppTeam { + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of team + * + * @example "example" + */ + readonly name?: string; +} +/** + * + * [Heroku Platform API - region](https://devcenter.heroku.com/articles/platform-api-reference#region) + * identity of app region + */ +export interface AppRegion { + /** + * unique identifier of region + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of region + * + * @example "us" + */ + readonly name: string; +} +/** + * + * A space is an isolated, highly available, secure app execution environment. + */ +export interface Space { + /** + * when space was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of space + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of space + * + * @example "nasa" + */ + name: string; + /** + * organization that owns this space + */ + organization: Organization; + /** + * team that owns this space + */ + team: SpaceTeam; + /** + * identity of space region + */ + region: SpaceRegion; + /** + * true if this space has shield enabled + * + * @example true + */ + readonly shield: boolean; + /** + * availability of this space + * + * @example "allocated" + */ + readonly state: 'allocating' | 'allocated' | 'deleting'; + /** + * when space was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * The RFC-1918 CIDR the Private Space will use. It must be a /16 in 10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0/16 + * + * @example "172.20.20.30/16" + */ + cidr: string; + /** + * The RFC-1918 CIDR that the Private Space will use for the Heroku-managed peering connection that's automatically created when using Heroku Data add-ons. It must be between a /16 and a /20 + * + * @example "10.2.0.0/16" + */ + data_cidr: string; + /** + * generation for space + * + * @example "fir" + */ + generation: string; +} +/** + * + * [Heroku Platform API - stack](https://devcenter.heroku.com/articles/platform-api-reference#stack) + * Stacks are the different application execution environments available in the Heroku platform. + */ +export interface Stack { + /** + * indicates this stack is the default for new apps + * + * @example true + */ + readonly default: boolean; + /** + * when stack was introduced + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of stack + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of stack + * + * @example "heroku-18" + */ + readonly name: string; + /** + * availability of this stack: beta, deprecated or public + * + * @example "public" + */ + readonly state: string; + /** + * when stack was last modified + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +export interface AppCreatePayload { + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * unique identifier of region or unique name of region + */ + region?: string; + /** + * unique name of stack or unique identifier of stack + */ + stack?: string; + /** + * unique name of app feature + */ + feature_flags?: string[]; +} +export interface AppUpdatePayload { + /** + * unique name of stack or unique identifier of stack + */ + build_stack?: string; + /** + * maintenance status of app + */ + maintenance?: boolean; + /** + * unique name of app + * + * @example "example" + */ + name?: string; +} +/** + * + * [Heroku Platform API - archive](https://devcenter.heroku.com/articles/platform-api-reference#archive) + * An audit trail archive represents a monthly json zipped file containing events + */ +export interface Archive { + /** + * when archive was created + */ + created_at: string; + /** + * month of the archive + * + * @example "10" + */ + readonly month: '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08' | '09' | '10' | '11' | '12'; + /** + * year of the archive + * + * @example 2019 + */ + readonly year: number; + /** + * url where to download the archive + */ + readonly url: string; + /** + * checksum for the archive + */ + readonly checksum: string; + /** + * size of the archive in bytes + * + * @example 100 + */ + readonly size: number; +} +/** + * + * [Heroku Platform API - audit-trail-event](https://devcenter.heroku.com/articles/platform-api-reference#audit-trail-event) + * An audit trail event represents some action on the platform + */ +export interface AuditTrailEvent { + /** + * when event was created + */ + created_at: string; + /** + * unique identifier of event + */ + readonly id: string; + /** + * type of event + */ + readonly type: string; + /** + * action for the event + */ + readonly action: string; + /** + * user who caused event + */ + readonly actor: AuditTrailEventActor; + /** + * app upon which event took place + */ + readonly app: AuditTrailEventApp; + /** + * owner of the app targeted by the event + */ + readonly owner: AuditTrailEventOwner; + /** + * enterprise account on which the event happened + */ + readonly enterprise_account: EnterpriseAccount; + /** + * team on which the event happened + */ + readonly team: AuditTrailEventTeam; + /** + * information about where the action was triggered + */ + readonly request: Request; + /** + * data specific to the event + */ + readonly data: Record; +} +/** + * + * user who caused event + */ +export interface AuditTrailEventActor { + id?: string; + email?: string; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app upon which event took place + */ +export interface AuditTrailEventApp { + id?: string; + name?: string; +} +/** + * + * owner of the app targeted by the event + */ +export interface AuditTrailEventOwner { + id?: string; + email?: string; +} +/** + * + * [Heroku Platform API - enterprise-account](https://devcenter.heroku.com/articles/platform-api-reference#enterprise-account) + * Enterprise accounts allow companies to manage their development teams and billing. + */ +export interface EnterpriseAccount { + /** + * unique identifier of the enterprise account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * when the enterprise account was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique name of the enterprise account + * + * @example "example" + */ + readonly name: string; + /** + * when the enterprise account was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * the current user's permissions for this enterprise account + */ + readonly permissions: string[]; + /** + * whether the enterprise account is a trial or not + */ + readonly trial: boolean; + /** + * Identity Provider associated with the Enterprise Account + */ + identity_provider: null | EnterpriseAccountIdentityProvider; +} +/** + * + * [Heroku Platform API - team](https://devcenter.heroku.com/articles/platform-api-reference#team) + * team on which the event happened + */ +export interface AuditTrailEventTeam { + id?: string; + name?: string; +} +/** + * + * information about where the action was triggered + */ +export interface Request { + ip_address?: string; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app that the build belongs to + */ +export interface BuildApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * location of gzipped tarball of source code used to create build + */ +export interface BuildSourceBlob { + /** + * an optional checksum of the gzipped tarball for verifying its integrity + * + * @example "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + */ + readonly checksum: null | string; + /** + * URL where gzipped tar archive of source code for build was downloaded. + * + * @example "https://example.com/source.tgz?token=xyz" + */ + readonly url: string; + /** + * Version of the gzipped tarball. + * + * @example "v1.3.0" + */ + readonly version: string | null; + /** + * Version description of the gzipped tarball. + * + * @example "* Fake User: Change session key" + */ + readonly version_description: string | null; +} +/** + * + * [Heroku Platform API - release](https://devcenter.heroku.com/articles/platform-api-reference#release) + * release resulting from the build + */ +export interface BuildRelease { + /** + * unique identifier of release + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * [Heroku Platform API - slug](https://devcenter.heroku.com/articles/platform-api-reference#slug) + * A slug is a snapshot of your application code that is ready to run on the platform. + */ +export interface Slug { + /** + * pointer to the url where clients can fetch or store the actual release binary + */ + blob: Blob; + /** + * description from buildpack of slug + * + * @example "Ruby/Rack" + */ + buildpack_provided_description: null | string; + /** + * an optional checksum of the slug for verifying its integrity + * + * @example "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + */ + readonly checksum: null | string; + /** + * identification of the code with your version control system (eg: SHA of the git HEAD) + * + * @example "60883d9e8947a57e04dc9124f25df004866a2051" + */ + commit: null | string; + /** + * an optional description of the provided commit + * + * @example "fixed a bug with API documentation" + */ + commit_description: null | string; + /** + * when slug was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of slug + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * hash mapping process type names to their respective command + * + * @example {"web":"./bin/web -p $PORT"} + */ + process_types: Record; + /** + * size of slug, in bytes + * + * @example 2048 + */ + readonly size: number | null; + /** + * identity of slug stack + */ + stack: Stack; + /** + * when slug was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * user that started the build + */ +export interface User { + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; +} +export interface BuildCreatePayload { + /** + * buildpacks executed for this build, in order + */ + buildpacks?: Array<{ + /** + * the URL of the buildpack for the app + * + * @example "https://github.com/heroku/heroku-buildpack-ruby" + */ + url?: string; + /** + * Buildpack Registry name of the buildpack for the app + * + * @example "heroku/ruby" + */ + name?: string; +}> | null; + /** + * location of gzipped tarball of source code used to create build + */ + source_blob: BuildCreatePayloadSourceBlob; +} +/** + * + * location of gzipped tarball of source code used to create build + */ +export interface BuildCreatePayloadSourceBlob { + /** + * an optional checksum of the gzipped tarball for verifying its integrity + * + * @example "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + */ + readonly checksum: null | string; + /** + * URL where gzipped tar archive of source code for build was downloaded. + * + * @example "https://example.com/source.tgz?token=xyz" + */ + readonly url: string; + /** + * Version of the gzipped tarball. + * + * @example "v1.3.0" + */ + readonly version: string | null; + /** + * Version description of the gzipped tarball. + * + * @example "* Fake User: Change session key" + */ + readonly version_description: string | null; +} +/** + * + * [Heroku Platform API - buildpack-installation](https://devcenter.heroku.com/articles/platform-api-reference#buildpack-installation) + * A buildpack installation represents a buildpack that will be run against an app. + */ +export interface BuildpackInstallation { + /** + * determines the order in which the buildpacks will execute + */ + readonly ordinal: number; + /** + * buildpack + */ + buildpack: BuildpackInstallationBuildpack; +} +/** + * + * buildpack + */ +export interface BuildpackInstallationBuildpack { + /** + * location of the buildpack for the app. Either a url (unofficial buildpacks) or an internal urn (heroku official buildpacks). + * + * @example "https://github.com/heroku/heroku-buildpack-ruby" + */ + url?: string; + /** + * either the Buildpack Registry name or a URL of the buildpack for the app + * + * @example "heroku/ruby" + */ + name?: string; +} +export interface BuildpackInstallationUpdatePayload { + /** + * The buildpack attribute can accept a name, a url, or a urn. + */ + updates: Update[]; +} +/** + * + * Properties to update a buildpack installation + */ +export interface Update { + /** + * location of the buildpack for the app. Either a url (unofficial buildpacks) or an internal urn (heroku official buildpacks). + * + * @example "https://github.com/heroku/heroku-buildpack-ruby" + */ + buildpack: string; +} +/** + * + * [Heroku Platform API - collaborator](https://devcenter.heroku.com/articles/platform-api-reference#collaborator) + * A collaborator represents an account that has been given access to an app on Heroku. + */ +export interface Collaborator { + /** + * app collaborator belongs to + */ + app: CollaboratorApp; + /** + * when collaborator was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of collaborator + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + permissions?: TeamAppPermission[]; + /** + * role in the team + * + * @example "admin" + */ + readonly role?: null | 'admin' | 'collaborator' | 'member' | 'owner' | ''; + /** + * when collaborator was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * identity of collaborated account + */ + user: CollaboratorUser; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app collaborator belongs to + */ +export interface CollaboratorApp { + /** + * unique name of app + * + * @example "example" + */ + name: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * [Heroku Platform API - team-app-permission](https://devcenter.heroku.com/articles/platform-api-reference#team-app-permission) + * A team app permission is a behavior that is assigned to a user in a team app. + */ +export interface TeamAppPermission { + /** + * The name of the app permission. + * + * @example "view" + */ + readonly name?: string; + /** + * A description of what the app permission allows. + * + * @example "Can manage config, deploy, run commands and restart the app." + */ + readonly description?: string; +} +/** + * + * identity of collaborated account + */ +export interface CollaboratorUser { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * whether the user is federated and belongs to an Identity Provider + */ + readonly federated: boolean; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +export interface CollaboratorCreatePayload { + /** + * whether to suppress email invitation when creating collaborator + */ + silent?: boolean; + /** + * unique email address of account or unique identifier of an account or Implicit reference to currently authorized user + */ + user: string; +} +/** + * + * [Heroku Platform API - credit](https://devcenter.heroku.com/articles/platform-api-reference#credit) + * A credit represents value that will be used up before further charges are assigned to an account. + */ +export interface Credit { + /** + * total value of credit in cents + * + * @example 10000 + */ + amount: number; + /** + * remaining value of credit in cents + * + * @example 5000 + */ + balance: number; + /** + * when credit was created + * + * @example "2012-01-01T12:00:00Z" + */ + created_at: string; + /** + * when credit will expire + * + * @example "2012-01-01T12:00:00Z" + */ + expires_at: string; + /** + * unique identifier of credit + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + id: string; + /** + * a name for credit + * + * @example "gift card" + */ + title: string; + /** + * when credit was updated + * + * @example "2012-01-01T12:00:00Z" + */ + updated_at: string; +} +export interface CreditCreatePayload { + /** + * first code from a discount card + * + * @example "012abc" + */ + code1?: string; + /** + * second code from a discount card + * + * @example "012abc" + */ + code2?: string; +} +/** + * + * [Heroku Platform API - domain](https://devcenter.heroku.com/articles/platform-api-reference#domain) + * Domains define what web routes should be routed to an app on Heroku. + */ +export interface Domain { + /** + * status of this record's ACM + * + * @example "pending" + */ + readonly acm_status: null | string; + /** + * reason for the status of this record's ACM + * + * @example "Failing CCA check" + */ + readonly acm_status_reason: null | string; + /** + * app that owns the domain + */ + app: DomainApp; + /** + * canonical name record, the address to point a domain at + * + * @example "example.herokudns.com" + */ + readonly cname: null | string; + /** + * when domain was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * full hostname + * + * @example "subdomain.example.com" + */ + readonly hostname: string; + /** + * unique identifier of this domain + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * type of domain name + * + * @example "custom" + */ + readonly kind: 'heroku' | 'custom'; + /** + * when domain was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * status of this record's cname + * + * @example "pending" + */ + readonly status: string; + /** + * sni endpoint the domain is associated with + */ + sni_endpoint: null | SniEndpoint; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app that owns the domain + */ +export interface DomainApp { + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * [Heroku Platform API - sni-endpoint](https://devcenter.heroku.com/articles/platform-api-reference#sni-endpoint) + * SNI Endpoint is a public address serving a custom SSL cert for HTTPS traffic, using the SNI TLS extension, to a Heroku app. + */ +export interface SniEndpoint { + /** + * raw contents of the public certificate chain (eg: .crt or .pem file) + * + * @example "-----BEGIN CERTIFICATE----- ..." + */ + certificate_chain: string; + /** + * when endpoint was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of this SNI endpoint + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name for SNI endpoint + * + * @example "example" + */ + readonly name: string; + /** + * when SNI endpoint was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * unique name for SSL certificate + * + * @example "example" + */ + display_name: string | null; + /** + * domains associated with this SSL certificate + */ + readonly domains: string[]; + /** + * application that this SSL certificate is on + */ + app: SniEndpointApp; + /** + * certificate provided by this endpoint + */ + ssl_cert: SslCert; +} +export interface DomainCreatePayload { + /** + * full hostname + * + * @example "subdomain.example.com" + */ + readonly hostname: string; + /** + * null or unique identifier or name for SNI endpoint + */ + sni_endpoint: null | string; +} +export interface DomainUpdatePayload { + /** + * null or unique identifier or name for SNI endpoint + */ + sni_endpoint: null | string; +} +/** + * + * [Heroku Platform API - dyno-size](https://devcenter.heroku.com/articles/platform-api-reference#dyno-size) + * Dyno sizes are the values and details of sizes that can be assigned to dynos. This information can also be found at : [https://devcenter.heroku.com/articles/dyno-types](https://devcenter.heroku.com/articles/dyno-types). + */ +export interface DynoSize { + /** + * CPU architecture of this dyno + * + * @example "arm64" + */ + readonly architecture: string; + /** + * minimum vCPUs, non-dedicated may get more depending on load + * + * @example 1 + */ + readonly compute: number; + /** + * price information for this dyno size + */ + readonly cost: null | Record; + /** + * whether this dyno will be dedicated to one user + */ + readonly dedicated: boolean; + /** + * unit of consumption for Heroku Enterprise customers to 2 decimal places + * + * @example 0.28 + */ + readonly precise_dyno_units: number; + /** + * unique identifier of this dyno size + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * amount of RAM in GB + * + * @example 0.5 + */ + readonly memory: number; + /** + * the name of this dyno-size + * + * @example "eco" + */ + readonly name: string; + /** + * whether this dyno can only be provisioned in a private space + */ + readonly private_space_only: boolean; + /** + * generation for space + * + * @example "fir" + */ + generation: string; +} +/** + * + * [Heroku Platform API - dyno](https://devcenter.heroku.com/articles/platform-api-reference#dyno) + * Dynos encapsulate running processes of an app on Heroku. Detailed information about dyno sizes can be found at: [https://devcenter.heroku.com/articles/dyno-types](https://devcenter.heroku.com/articles/dyno-types). + */ +export interface Dyno { + /** + * a URL to stream output from for attached processes or null for non-attached processes + * + * @example "rendezvous://rendezvous.runtime.heroku.com:5000/{rendezvous-id}" + */ + readonly attach_url: string | null; + /** + * command used to start this process + * + * @example "bash" + */ + command: string; + /** + * when dyno was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of this dyno + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * the name of this process on this dyno + * + * @example "run.1" + */ + readonly name: string; + /** + * app release of the dyno + */ + release: Release; + /** + * app formation belongs to + */ + app: DynoApp; + /** + * dyno size + * + * @example "standard-1X" + */ + size: string; + /** + * current status of process (either: crashed, down, idle, starting, or up) + * + * @example "up" + */ + readonly state: string; + /** + * type of process + * + * @example "run" + */ + type: string; + /** + * when process last changed state + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * [Heroku Platform API - release](https://devcenter.heroku.com/articles/platform-api-reference#release) + * A release represents a combination of code, config vars and add-ons for an app on Heroku. + */ +export interface Release { + /** + * add-on plans installed on the app for this release + */ + addon_plan_names: string[]; + /** + * build artifacts for the release + */ + artifacts: Artifact[]; + /** + * app involved in the release + */ + app: ReleaseApp; + /** + * when release was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * description of changes in this release + * + * @example "Added new feature" + */ + readonly description: string; + /** + * unique identifier of release + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * when release was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * OCI image running in this release + */ + oci_image: OciImage | null; + /** + * slug running in this release. Not applicable to apps using Cloud Native Buildpacks. + */ + slug: Slug | null; + /** + * current status of the release + * + * @example "succeeded" + */ + readonly status: 'failed' | 'pending' | 'succeeded'; + /** + * user that created the release + */ + user: User; + /** + * unique version assigned to the release + * + * @example 11 + */ + readonly version: number; + /** + * indicates if this release is the current one for the app + * + * @example true + */ + readonly current: boolean; + /** + * the URL that the release command output streams to. The stream is available as either `text/plain` or `text/event-stream`. Prepare clients to handle disconnects and to resume the stream by sending a `Range` header for `text/plain` or a `Last-Event-Id` header for `text/event-stream`. + * + * @example "https://release-output.heroku.com/streams/01234567-89ab-cdef-0123-456789abcdef" + */ + readonly output_stream_url: string | null; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app formation belongs to + */ +export interface DynoApp { + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +export interface DynoCreatePayload { + /** + * whether to stream output or not + * + * @example true + */ + attach?: boolean; + /** + * command used to start this process + * + * @example "bash" + */ + command: string; + /** + * custom environment to add to the dyno config vars + * + * @example {"COLUMNS":"80","LINES":"24"} + */ + env?: Record; + /** + * force an attached one-off dyno to not run in a tty + */ + force_no_tty?: boolean | null; + /** + * dyno size + * + * @example "standard-1X" + */ + size?: string; + /** + * type of process + * + * @example "run" + */ + type?: string; + /** + * seconds until dyno expires, after which it will soon be killed, max 86400 seconds (24 hours) + * + * @example 1800 + */ + time_to_live?: number; +} +/** + * + * [Heroku Platform API - enterprise-account-daily-usage](https://devcenter.heroku.com/articles/platform-api-reference#enterprise-account-daily-usage) + * Usage for an enterprise account at a daily resolution. + */ +export interface EnterpriseAccountDailyUsage { + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons: number; + /** + * usage by team + */ + teams: Array<{ + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons?: number; + /** + * app usage in the team + */ + apps?: AppUsageDaily[]; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data?: number; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos?: number; + /** + * team identifier + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * name of the team + * + * @example "ops" + */ + readonly name?: string; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner?: number; + /** + * space credits used + * + * @example 1.548 + */ + readonly space?: number; +}>; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data: number; + /** + * date of the usage + * + * @example "2019-01-01" + */ + readonly date: string; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos: number; + /** + * enterprise account identifier + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * name of the enterprise account + * + * @example "example-co" + */ + readonly name: string; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner: number; + /** + * space credits used + * + * @example 1.548 + */ + readonly space: number; +} +/** + * + * Usage for an app at a daily resolution. + */ +export interface AppUsageDaily { + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons?: number; + /** + * unique name of app + * + * @example "example" + */ + app_name?: string; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data?: number; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos?: number; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner?: number; +} +export interface EnterpriseAccountDailyUsageInfoPayload { + /** + * range start date + * + * @example "2019-01-25" + */ + readonly start: string; + /** + * range end date + * + * @example "2019-02-25" + */ + readonly end?: string; +} +/** + * + * [Heroku Platform API - enterprise-account-member](https://devcenter.heroku.com/articles/platform-api-reference#enterprise-account-member) + * Enterprise account members are users with access to an enterprise account. + */ +export interface EnterpriseAccountMember { + enterprise_account: EnterpriseAccountMemberEnterpriseAccount; + /** + * unique identifier of the member + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * enterprise account permissions + */ + permissions: Array<{ + /** + * + * @example "View enterprise account members and teams." + */ + description?: string; + /** + * permission in the enterprise account + * + * @example "view" + */ + readonly name?: 'view' | 'create' | 'manage' | 'billing'; +}>; + /** + * user information for the membership + */ + user: User; + /** + * whether the Enterprise Account member has two factor authentication enabled + * + * @example true + */ + readonly two_factor_authentication: boolean; + /** + * Identity Provider information the member is federated with + */ + identity_provider: null | EnterpriseAccountMemberIdentityProvider; +} +export interface EnterpriseAccountMemberEnterpriseAccount { + /** + * unique identifier of the enterprise account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of the enterprise account + * + * @example "example" + */ + readonly name?: string; +} +/** + * + * Identity Provider information the member is federated with + */ +export interface EnterpriseAccountMemberIdentityProvider { + /** + * unique identifier of this identity provider + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * name of the identity provider + * + * @example "acme" + */ + readonly name?: string; + /** + * whether the identity_provider information is redacted or not + */ + readonly redacted?: boolean; + /** + * entity that owns this identity provider + */ + owner?: Owner; +} +export interface EnterpriseAccountMemberCreatePayload { + /** + * unique email address of account or unique identifier of an account + */ + user: string; + /** + * permissions for enterprise account + * + * @example ["view"] + */ + readonly permissions: 'view' | 'create' | 'manage' | Array<'billing'>; + /** + * whether membership is being created as part of SSO JIT + */ + federated?: boolean; +} +export interface EnterpriseAccountMemberUpdatePayload { + /** + * permissions for enterprise account + * + * @example ["view"] + */ + readonly permissions: 'view' | 'create' | 'manage' | Array<'billing'>; +} +/** + * + * [Heroku Platform API - enterprise-account-monthly-usage](https://devcenter.heroku.com/articles/platform-api-reference#enterprise-account-monthly-usage) + * Usage for an enterprise account at a monthly resolution. + */ +export interface EnterpriseAccountMonthlyUsage { + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons: number; + /** + * usage by team + */ + teams: Array<{ + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons?: number; + /** + * app usage in the team + */ + apps?: AppUsageMonthly[]; + /** + * max connect rows synced + * + * @example 15000 + */ + readonly connect?: number; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data?: number; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos?: number; + /** + * team identifier + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * name of the team + * + * @example "ops" + */ + readonly name?: string; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner?: number; + /** + * space credits used + * + * @example 1.548 + */ + readonly space?: number; +}>; + /** + * max connect rows synced + * + * @example 15000 + */ + readonly connect: number; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data: number; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos: number; + /** + * enterprise account identifier + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * year and month of the usage + * + * @example "2019-01" + */ + readonly month: string; + /** + * name of the enterprise account + * + * @example "example-co" + */ + readonly name: string; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner: number; + /** + * space credits used + * + * @example 1.548 + */ + readonly space: number; +} +/** + * + * Usage for an app at a monthly resolution. + */ +export interface AppUsageMonthly { + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons?: number; + /** + * unique name of app + * + * @example "example" + */ + app_name?: string; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data?: number; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos?: number; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner?: number; +} +export interface EnterpriseAccountMonthlyUsageInfoPayload { + /** + * range start date + * + * @example "2019-01" + */ + readonly start: string; + /** + * range end date + * + * @example "2019-02" + */ + readonly end?: string; +} +/** + * + * Identity Provider associated with the Enterprise Account + */ +export interface EnterpriseAccountIdentityProvider { + /** + * unique identifier of this identity provider + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * user-friendly unique identifier for this identity provider + * + * @example "acme-sso" + */ + name: string; + /** + * entity that owns this identity provider + */ + owner: Owner; +} +export interface EnterpriseAccountUpdatePayload { + /** + * unique name of the enterprise account + * + * @example "example" + */ + readonly name?: string; +} +export interface Filter { + in?: In; +} +export interface In { + id?: string[]; +} +/** + * + * [Heroku Platform API - team-app](https://devcenter.heroku.com/articles/platform-api-reference#team-app) + * A team app encapsulates the team specific functionality of Heroku apps. + */ +export interface TeamApp { + /** + * when app was archived + * + * @example "2012-01-01T12:00:00Z" + */ + readonly archived_at?: null | string; + /** + * name of the image used for the base layers of the OCI image + * + * @example "heroku/heroku:22-cnb" + */ + readonly base_image_name?: null | string; + /** + * identity of the stack that will be used for new builds + */ + build_stack?: BuildStack; + /** + * description from buildpack of app + * + * @example "Ruby/Rack" + */ + readonly buildpack_provided_description?: null | string; + /** + * buildpacks of the OCI image + */ + buildpacks?: null | Buildpack[]; + /** + * current build architecture for the app + * + * @example "[arm64]" + */ + current_build_architecture?: unknown[]; + /** + * when app was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at?: string; + /** + * the generation of the app + * + * @example "fir" + */ + readonly generation?: string; + /** + * git repo URL of app + * + * @example "https://git.heroku.com/example.git" + */ + readonly git_url?: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * describes whether a Private Spaces app is externally routable or not + */ + internal_routing?: boolean | null; + /** + * is the current member a collaborator on this app. + */ + joined?: boolean; + /** + * are other team members forbidden from joining this app. + */ + locked?: boolean; + /** + * maintenance status of app + */ + maintenance?: boolean; + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * team that owns this app + */ + team?: null | Team; + /** + * identity of app owner + */ + owner?: null | TeamAppOwner; + /** + * identity of app region + */ + region?: TeamAppRegion; + /** + * when app was released + * + * @example "2012-01-01T12:00:00Z" + */ + readonly released_at?: null | string; + /** + * git repo size in bytes of app + */ + readonly repo_size?: number | null; + /** + * slug size in bytes of app + */ + readonly slug_size?: number | null; + /** + * identity of space + */ + space?: null | TeamAppSpace; + /** + * identity of app stack + */ + stack?: Stack; + /** + * when app was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at?: string; + /** + * web URL of app + * + * @example "https://example.herokuapp.com/" + */ + readonly web_url?: null | string; +} +/** + * + * identity of app owner + */ +export interface TeamAppOwner { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email?: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * [Heroku Platform API - region](https://devcenter.heroku.com/articles/platform-api-reference#region) + * identity of app region + */ +export interface TeamAppRegion { + /** + * unique identifier of region + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of region + * + * @example "us" + */ + readonly name?: string; +} +/** + * + * [Heroku Platform API - space](https://devcenter.heroku.com/articles/platform-api-reference#space) + * identity of space + */ +export interface TeamAppSpace { + /** + * unique identifier of space + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of space + * + * @example "nasa" + */ + name?: string; +} +/** + * + * [Heroku Platform API - formation](https://devcenter.heroku.com/articles/platform-api-reference#formation) + * The formation of processes that should be maintained for an app. Update the formation to scale processes or change dyno sizes. Available process type names and commands are defined by the `process_types` attribute for the [slug](#slug) currently released on an app. + */ +export interface Formation { + /** + * app formation belongs to + */ + app: FormationApp; + /** + * command to use to launch this process + * + * @example "bundle exec rails server -p $PORT" + */ + command: string; + /** + * when process type was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of this process type + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * number of processes to maintain + * + * @example 1 + */ + quantity: number; + /** + * dyno size + * + * @example "standard-1X" + */ + size: string; + /** + * type of process to maintain + * + * @example "web" + */ + readonly type: string; + /** + * when dyno type was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app formation belongs to + */ +export interface FormationApp { + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +export interface FormationBatchUpdatePayload { + /** + * Array with formation updates. Each element must have "type", the id or name of the process type to be updated, and can optionally update its "quantity" or "size". + */ + updates: FormationBatchUpdatePayloadUpdate[]; +} +/** + * + * Properties to update a process type + */ +export interface FormationBatchUpdatePayloadUpdate { + /** + * number of processes to maintain + * + * @example 1 + */ + quantity?: number; + /** + * dyno size + * + * @example "standard-1X" + */ + size?: string; + /** + * type of process to maintain + * + * @example "web" + */ + readonly type: string; +} +export interface FormationUpdatePayload { + /** + * number of processes to maintain + * + * @example 1 + */ + quantity?: number; + /** + * dyno size + * + * @example "standard-1X" + */ + size?: string; +} +export interface IdentityProviderCreateByTeamPayload { + /** + * raw contents of the public certificate (eg: .crt or .pem file) + * + * @example "-----BEGIN CERTIFICATE----- ..." + */ + certificate: string; + /** + * URL identifier provided by the identity provider + * + * @example "https://customer-domain.idp.com" + */ + entity_id: string; + /** + * single log out URL for this identity provider + * + * @example "https://example.com/idp/logout" + */ + slo_target_url?: string; + /** + * single sign on URL for this identity provider + * + * @example "https://example.com/idp/login" + */ + sso_target_url: string; +} +export interface IdentityProviderUpdateByTeamPayload { + /** + * raw contents of the public certificate (eg: .crt or .pem file) + * + * @example "-----BEGIN CERTIFICATE----- ..." + */ + certificate?: string; + /** + * URL identifier provided by the identity provider + * + * @example "https://customer-domain.idp.com" + */ + entity_id?: string; + /** + * single log out URL for this identity provider + * + * @example "https://example.com/idp/logout" + */ + slo_target_url?: string; + /** + * single sign on URL for this identity provider + * + * @example "https://example.com/idp/login" + */ + sso_target_url?: string; +} +/** + * + * [Heroku Platform API - inbound-ruleset](https://devcenter.heroku.com/articles/platform-api-reference#inbound-ruleset) + * An inbound-ruleset is a collection of rules that specify what hosts can or cannot connect to an application. + */ +export interface InboundRuleset { + /** + * unique identifier of an inbound-ruleset + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * identity of space + */ + space: InboundRulesetSpace; + /** + * when inbound-ruleset was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + rules: Rule[]; + /** + * unique email address of account + * + * @example "username@example.com" + */ + created_by: string; +} +/** + * + * [Heroku Platform API - space](https://devcenter.heroku.com/articles/platform-api-reference#space) + * identity of space + */ +export interface InboundRulesetSpace { + /** + * unique identifier of space + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of space + * + * @example "nasa" + */ + name?: string; +} +/** + * + * the combination of an IP address in CIDR notation and whether to allow or deny it's traffic. + */ +export interface Rule { + /** + * states whether the connection is allowed or denied + * + * @example "allow" + */ + action: 'allow' | 'deny'; + /** + * is the request’s source in CIDR notation + * + * @example "1.1.1.1/1" + */ + source: string; +} +export interface InboundRulesetCreatePayload { + rules?: Rule[]; +} +/** + * + * [Heroku Platform API - invoice-address](https://devcenter.heroku.com/articles/platform-api-reference#invoice-address) + * An invoice address represents the address that should be listed on an invoice. + */ +export interface InvoiceAddress { + /** + * invoice street address line 1 + * + * @example "40 Hickory Blvd." + */ + address_1?: string; + /** + * invoice street address line 2 + * + * @example "Suite 300" + */ + address_2?: string; + /** + * invoice city + * + * @example "Seattle" + */ + city?: string; + /** + * country + * + * @example "US" + */ + country?: string; + /** + * heroku_id identifier reference + */ + heroku_id?: string; + /** + * metadata / additional information to go on invoice + * + * @example "Company ABC Inc. VAT 903820" + */ + other?: string; + /** + * invoice zip code + * + * @example "98101" + */ + postal_code?: string; + /** + * invoice state + * + * @example "WA" + */ + state?: string; + /** + * flag to use the invoice address for an account or not + * + * @example true + */ + use_invoice_address?: boolean; +} +export interface InvoiceAddressUpdatePayload { + /** + * invoice street address line 1 + * + * @example "40 Hickory Blvd." + */ + address_1?: string; + /** + * invoice street address line 2 + * + * @example "Suite 300" + */ + address_2?: string; + /** + * invoice city + * + * @example "Seattle" + */ + city?: string; + /** + * country + * + * @example "US" + */ + country?: string; + /** + * metadata / additional information to go on invoice + * + * @example "Company ABC Inc. VAT 903820" + */ + other?: string; + /** + * invoice zip code + * + * @example "98101" + */ + postal_code?: string; + /** + * invoice state + * + * @example "WA" + */ + state?: string; + /** + * flag to use the invoice address for an account or not + * + * @example true + */ + use_invoice_address?: boolean; +} +/** + * + * [Heroku Platform API - invoice](https://devcenter.heroku.com/articles/platform-api-reference#invoice) + * An invoice is an itemized bill of goods for an account which includes pricing and charges. + */ +export interface Invoice { + /** + * total charges on this invoice + * + * @example 100 + */ + readonly charges_total: number; + /** + * when invoice was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * total credits on this invoice + * + * @example 100 + */ + readonly credits_total: number; + /** + * unique identifier of this invoice + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * human readable invoice number + * + * @example 9403943 + */ + readonly number: number; + /** + * the ending date that the invoice covers + * + * @example "01/31/2014" + */ + readonly period_end: string; + /** + * the starting date that this invoice covers + * + * @example "01/01/2014" + */ + readonly period_start: string; + /** + * payment status for this invoice (pending, successful, failed) + * + * @example 1 + */ + readonly state: number; + /** + * combined total of charges and credits on this invoice + * + * @example 100 + */ + readonly total: number; + /** + * when invoice was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * [Heroku Platform API - key](https://devcenter.heroku.com/articles/platform-api-reference#key) + * Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations. + */ +export interface Key { + /** + * comment on the key + * + * @example "username@host" + */ + readonly comment: string; + /** + * when key was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * deprecated. Please refer to 'comment' instead + * + * @example "username@host" + */ + readonly email: string; + /** + * a unique identifying string based on contents + * + * @example "17:63:a4:ba:24:d3:7f:af:17:c8:94:82:7e:80:56:bf" + */ + readonly fingerprint: string; + /** + * unique identifier of this key + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * full public_key as uploaded + * + * @example "ssh-rsa AAAAB3NzaC1ycVc/../839Uv username@example.com" + */ + readonly public_key: string; + /** + * when key was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * [Heroku Platform API - log-drain](https://devcenter.heroku.com/articles/platform-api-reference#log-drain) + * [Log drains](https://devcenter.heroku.com/articles/log-drains) provide a way to forward your Heroku logs to an external syslog server for long-term archiving. This external service must be configured to receive syslog packets from Heroku, whereupon its URL can be added to an app using this API. Some add-ons will add a log drain when they are provisioned to an app. These drains can only be removed by removing the add-on. + */ +export interface LogDrain { + /** + * add-on that created the drain + * + * @example {"id":"01234567-89ab-cdef-0123-456789abcdef","name":"singing-swiftly-1242","app":{"id":"01234567-89ab-cdef-0123-456789abcdef","name":"example"}} + */ + readonly addon: Addon | null; + /** + * application that is attached to this drain + * + * @example {"id":"01234567-89ab-cdef-0123-456789abcdef","name":"example"} + */ + readonly app: LogDrainApp | null; + /** + * when log drain was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of this log drain + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * token associated with the log drain + * + * @example "d.01234567-89ab-cdef-0123-456789abcdef" + */ + readonly token: string; + /** + * when log drain was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * url associated with the log drain + * + * @example "https://example.com/drain" + */ + readonly url: string; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * application that is attached to this drain + */ +export interface LogDrainApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of app + * + * @example "example" + */ + name: string; +} +export interface LogDrainCreatePayload { + /** + * url associated with the log drain + * + * @example "https://example.com/drain" + */ + readonly url: string; +} +export interface LogDrainUpdatePayload { + /** + * url associated with the log drain + * + * @example "https://example.com/drain" + */ + readonly url: string; +} +/** + * + * [Heroku Platform API - log-session](https://devcenter.heroku.com/articles/platform-api-reference#log-session) + * A log session is a reference to the http based log stream for an app. + */ +export interface LogSession { + /** + * when log connection was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of this log session + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * URL for log streaming session + * + * @example "https://logplex.heroku.com/sessions/01234567-89ab-cdef-0123-456789abcdef?srv=1325419200" + */ + readonly logplex_url: string; + /** + * when log session was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +export interface LogSessionCreatePayload { + /** + * dyno to limit results to + * + * @example "'web.1' (Cedar-generation) or 'web-1234abcde-123ab' (Fir-generation)" + */ + dyno?: string; + /** + * process type to limit results to (for Fir-generation apps only) + * + * @example "web" + */ + type?: string; + /** + * number of log lines to stream at a time (for Cedar-generation apps only) + * + * @example 10 + */ + lines?: number; + /** + * log source to limit results to + * + * @example "app" + */ + source?: string; + /** + * whether to stream ongoing logs + * + * @example true + */ + tail?: boolean; +} +/** + * + * [Heroku Platform API - oauth-authorization](https://devcenter.heroku.com/articles/platform-api-reference#oauth-authorization) + * OAuth authorizations represent clients that a Heroku user has authorized to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth) + */ +export interface OauthAuthorization { + /** + * access token for this authorization + */ + access_token: null | AccessToken; + /** + * identifier of the client that obtained this authorization, if any + */ + client: null | Client; + /** + * when OAuth authorization was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * this authorization's grant + */ + grant: null | Grant; + /** + * unique identifier of OAuth authorization + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * refresh token for this authorization + */ + refresh_token: null | RefreshToken; + /** + * The scope of access OAuth authorization allows + * + * @example ["global"] + */ + readonly scope: string[]; + /** + * when OAuth authorization was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * authenticated user associated with this authorization + */ + user: OauthAuthorizationUser; +} +/** + * + * access token for this authorization + */ +export interface AccessToken { + /** + * seconds until OAuth token expires; may be `null` for tokens with indefinite lifetime + * + * @example 2592000 + */ + readonly expires_in?: null | number; + /** + * unique identifier of OAuth token + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * contents of the token to be used for authorization + * + * @example "HRKU-01234567-89ab-cdef-0123-456789abcdef" + */ + readonly token?: string; +} +/** + * + * identifier of the client that obtained this authorization, if any + */ +export interface Client { + /** + * unique identifier of this OAuth client + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * OAuth client name + * + * @example "example" + */ + readonly name?: string; + /** + * endpoint for redirection after authorization with OAuth client + * + * @example "https://example.com/auth/heroku/callback" + */ + readonly redirect_uri?: string; +} +/** + * + * this authorization's grant + */ +export interface Grant { + /** + * grant code received from OAuth web application authorization + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly code: string; + /** + * seconds until OAuth grant expires + * + * @example 2592000 + */ + readonly expires_in: number; + /** + * unique identifier of OAuth grant + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * refresh token for this authorization + */ +export interface RefreshToken { + /** + * seconds until OAuth token expires; may be `null` for tokens with indefinite lifetime + * + * @example 2592000 + */ + readonly expires_in: null | number; + /** + * unique identifier of OAuth token + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * contents of the token to be used for authorization + * + * @example "HRKU-01234567-89ab-cdef-0123-456789abcdef" + */ + readonly token: string; +} +/** + * + * authenticated user associated with this authorization + */ +export interface OauthAuthorizationUser { + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * full name of the account owner + * + * @example "Tina Edmonds" + */ + full_name: string | null; +} +export interface OauthAuthorizationCreatePayload { + /** + * unique identifier of this OAuth client + */ + client?: string; + /** + * human-friendly description of this OAuth authorization + * + * @example "sample authorization" + */ + readonly description?: string; + /** + * seconds until OAuth token expires; may be `null` for tokens with indefinite lifetime + * + * @example 2592000 + */ + readonly expires_in?: null | number; + /** + * The scope of access OAuth authorization allows + * + * @example ["global"] + */ + readonly scope: string[]; +} +/** + * + * [Heroku Platform API - oauth-client](https://devcenter.heroku.com/articles/platform-api-reference#oauth-client) + * OAuth clients are applications that Heroku users can authorize to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth). + */ +export interface OauthClient { + /** + * when OAuth client was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of this OAuth client + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * whether the client is still operable given a delinquent account + */ + readonly ignores_delinquent: boolean | null; + /** + * OAuth client name + * + * @example "example" + */ + readonly name: string; + /** + * endpoint for redirection after authorization with OAuth client + * + * @example "https://example.com/auth/heroku/callback" + */ + readonly redirect_uri: string; + /** + * secret used to obtain OAuth authorizations under this client + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly secret: string; + /** + * when OAuth client was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +export interface OauthClientCreatePayload { + /** + * OAuth client name + * + * @example "example" + */ + readonly name: string; + /** + * endpoint for redirection after authorization with OAuth client + * + * @example "https://example.com/auth/heroku/callback" + */ + readonly redirect_uri: string; +} +export interface OauthClientUpdatePayload { + /** + * OAuth client name + * + * @example "example" + */ + readonly name?: string; + /** + * endpoint for redirection after authorization with OAuth client + * + * @example "https://example.com/auth/heroku/callback" + */ + readonly redirect_uri?: string; +} +/** + * + * [Heroku Platform API - oauth-grant](https://devcenter.heroku.com/articles/platform-api-reference#oauth-grant) + * OAuth grants are used to obtain authorizations on behalf of a user. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth) + */ +export interface OauthGrant { + +} +/** + * + * [Heroku Platform API - oauth-token](https://devcenter.heroku.com/articles/platform-api-reference#oauth-token) + * OAuth tokens provide access for authorized clients to act on behalf of a Heroku user to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth) + */ +export interface OauthToken { + /** + * current access token + */ + access_token: AccessToken; + /** + * authorization for this set of tokens + */ + authorization: Authorization; + /** + * OAuth client secret used to obtain token + */ + client: null | OauthTokenClient; + /** + * when OAuth token was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * grant used on the underlying authorization + */ + grant: OauthTokenGrant; + /** + * unique identifier of OAuth token + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * refresh token for this authorization + */ + refresh_token: RefreshToken; + /** + * OAuth session using this token + */ + session: Session; + /** + * when OAuth token was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * Reference to the user associated with this token + */ + user: OauthTokenUser; +} +/** + * + * authorization for this set of tokens + */ +export interface Authorization { + /** + * unique identifier of OAuth authorization + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * OAuth client secret used to obtain token + */ +export interface OauthTokenClient { + /** + * secret used to obtain OAuth authorizations under this client + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly secret: string; +} +/** + * + * grant used on the underlying authorization + */ +export interface OauthTokenGrant { + /** + * grant code received from OAuth web application authorization + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly code: string; + /** + * type of grant requested, one of `authorization_code` or `refresh_token` + * + * @example "authorization_code" + */ + type: string; +} +/** + * + * OAuth session using this token + */ +export interface Session { + /** + * unique identifier of OAuth token + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * Reference to the user associated with this token + */ +export interface OauthTokenUser { + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +export interface OauthTokenCreatePayload { + client: OauthTokenCreatePayloadClient; + grant: OauthTokenCreatePayloadGrant; + refresh_token: OauthTokenCreatePayloadRefreshToken; +} +export interface OauthTokenCreatePayloadClient { + /** + * secret used to obtain OAuth authorizations under this client + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly secret?: string; +} +export interface OauthTokenCreatePayloadGrant { + /** + * grant code received from OAuth web application authorization + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly code?: string; + /** + * type of grant requested, one of `authorization_code` or `refresh_token` + * + * @example "authorization_code" + */ + type?: string; +} +export interface OauthTokenCreatePayloadRefreshToken { + /** + * contents of the token to be used for authorization + * + * @example "HRKU-01234567-89ab-cdef-0123-456789abcdef" + */ + readonly token?: string; +} +/** + * + * [Heroku Platform API - password-reset](https://devcenter.heroku.com/articles/platform-api-reference#password-reset) + * A password reset represents a in-process password reset attempt. + */ +export interface PasswordReset { + /** + * when password reset was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + user: User; +} +export interface PasswordResetResetPasswordPayload { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; +} +export interface PasswordResetCompleteResetPasswordPayload { + /** + * current password on the account + * + * @example "currentpassword" + */ + readonly password: string; + /** + * confirmation of the new password + * + * @example "newpassword" + */ + readonly password_confirmation: string; +} +/** + * + * [Heroku Platform API - peering-info](https://devcenter.heroku.com/articles/platform-api-reference#peering-info) + * [Peering Info](https://devcenter.heroku.com/articles/private-space-peering) gives you the information necessary to peer an AWS VPC to a Private Space. + */ +export interface PeeringInfo { + /** + * The AWS account ID of your Private Space. + * + * @example "123456789012" + */ + readonly aws_account_id: string; + /** + * region name used by provider + * + * @example "us-east-1" + */ + readonly aws_region: 'ap-south-1' | 'eu-west-1' | 'ap-southeast-1' | 'ap-southeast-2' | 'eu-central-1' | 'eu-west-2' | 'ap-northeast-2' | 'ap-northeast-1' | 'us-east-1' | 'sa-east-1' | 'us-west-1' | 'us-west-2' | 'ca-central-1'; + /** + * The AWS VPC ID of the peer. + * + * @example "vpc-1234567890" + */ + readonly vpc_id: string; + /** + * An IP address and the number of significant bits that make up the routing or networking portion. + * + * @example "10.0.0.0/16" + */ + vpc_cidr: string; + /** + * The CIDR ranges that should be routed to the Private Space VPC. + */ + dyno_cidr_blocks: string[]; + /** + * The CIDR ranges that you must not conflict with. + */ + unavailable_cidr_blocks: string[]; + /** + * The CIDR ranges that should be routed to the Private Space VPC. + */ + space_cidr_blocks: string[]; +} +/** + * + * [Heroku Platform API - peering](https://devcenter.heroku.com/articles/platform-api-reference#peering) + * [Peering](https://devcenter.heroku.com/articles/private-space-peering) provides a way to peer your Private Space VPC to another AWS VPC. + */ +export interface Peering { + /** + * The type of peering connection. + * + * @example "heroku-managed" + */ + type: 'heroku-managed' | 'customer-managed' | 'unknown'; + /** + * The AWS VPC Peering Connection ID of the peering. + * + * @example "pcx-123456789012" + */ + readonly pcx_id: string; + /** + * The CIDR blocks of the peer. + */ + cidr_blocks: string[]; + /** + * The status of the peering connection. + * + * @example "pending-acceptance" + */ + readonly status: 'initiating-request' | 'pending-acceptance' | 'provisioning' | 'active' | 'failed' | 'expired' | 'rejected' | 'deleted'; + /** + * The AWS VPC ID of the peer. + * + * @example "vpc-1234567890" + */ + readonly aws_vpc_id: string; + /** + * The AWS region of the peer connection. + * + * @example "us-east-1" + */ + readonly aws_region: string; + /** + * The AWS account ID of your Private Space. + * + * @example "123456789012" + */ + readonly aws_account_id: string; + /** + * When a peering connection will expire. + * + * @example "2020-01-01T12:00:00Z" + */ + readonly expires: string; +} +/** + * + * [Heroku Platform API - permission-entity](https://devcenter.heroku.com/articles/platform-api-reference#permission-entity) + * An owned entity including users' permissions. + */ +export interface PermissionEntity { + /** + * ID of the entity. + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * Name of the entity. + * + * @example "polar-lake-12345" + */ + readonly name: string; + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly team_id: string; + /** + * The type of object the entity is referring to. + * + * @example "app" + */ + readonly type: 'app' | 'space'; + /** + * Users that have access to the entity. + */ + users: Array<{ + /** + * unique email address of account + * + * @example "username@example.com" + */ + email?: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * enterprise account permissions + */ + permissions?: string[]; +}>; +} +/** + * + * [Heroku Platform API - pipeline-coupling](https://devcenter.heroku.com/articles/platform-api-reference#pipeline-coupling) + * Information about an app's coupling to a pipeline + */ +export interface PipelineCoupling { + /** + * app involved in the pipeline coupling + */ + app?: PipelineCouplingApp; + /** + * when pipeline coupling was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at?: string; + /** + * unique identifier of pipeline coupling + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * pipeline involved in the coupling + */ + pipeline?: Pipeline; + /** + * target pipeline stage + * + * @example "production" + */ + stage?: 'test' | 'review' | 'development' | 'staging' | 'production'; + /** + * when pipeline coupling was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at?: string; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app involved in the pipeline coupling + */ +export interface PipelineCouplingApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * [Heroku Platform API - pipeline](https://devcenter.heroku.com/articles/platform-api-reference#pipeline) + * A pipeline allows grouping of apps into different stages. + */ +export interface Pipeline { + /** + * when pipeline was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at?: string; + /** + * unique identifier of pipeline + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * name of pipeline + * + * @example "example" + */ + name?: string; + /** + * Owner of a pipeline. + */ + owner?: PipelineOwner | null; + /** + * when pipeline was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at?: string; +} +export interface PipelineCouplingCreatePayload { + /** + * unique identifier of app or unique name of app + */ + app: string; + /** + * unique identifier of pipeline + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly pipeline: string; + /** + * target pipeline stage + * + * @example "production" + */ + stage: 'test' | 'review' | 'development' | 'staging' | 'production'; +} +export interface PipelineCouplingUpdatePayload { + /** + * target pipeline stage + * + * @example "production" + */ + stage?: 'test' | 'review' | 'development' | 'staging' | 'production'; +} +/** + * + * a build artifact for the release + */ +export interface Artifact { + /** + * type of artifact + * + * @example "oci-image" + */ + type?: string; + /** + * unique identifier of slug or unique identifier of the OCI image + */ + id?: string; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app involved in the release + */ +export interface ReleaseApp { + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * [Heroku Platform API - oci-image](https://devcenter.heroku.com/articles/platform-api-reference#oci-image) + * An OCI image is a snapshot of your application code that is ready to run on the platform. + */ +export interface OciImage { + /** + * unique identifier of the OCI image + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * name of the image used for the base layers of the OCI image + * + * @example "heroku/heroku:22-cnb" + */ + base_image_name: string; + /** + * the digest of the top most layer of the base image. Used for rebase seam + * + * @example "sha256:ea36ae5fbc1e7230e0a782bf216fb46500e210382703baa6bab8acf2c6a23f78" + */ + base_top_layer: string; + /** + * identification of the code in your version control system (eg: SHA of the git HEAD) + * + * @example "60883d9e8947a57e04dc9124f25df004866a2051" + */ + commit: string; + /** + * an optional description of the provided commit + * + * @example "fixed a bug with API documentation" + */ + commit_description: string; + /** + * name of the image registry repository used for storage + * + * @example "d7ba1ace-b396-4691-968c-37ae53153426/builds" + */ + image_repo: string; + /** + * uniquely identifies the content of the OCI image (consisting of an algorithm portion and an encoded portion) + * + * @example "sha256:dc14ae5fbc1e7230e0a782bf216fb46500e210631703bcc6bab8acf2c6a23f42" + */ + digest: string; + /** + * stack associated to the OCI image + * + * @example {"id":"ba46bf09-7bd1-42fd-90df-a1a9a93eb4a2","name":"cnb"} + */ + stack: OciImageStack; + /** + * process types of the OCI image + * + * @example {"web":{"name":"web","display_cmd":"bundle exec puma -p $PORT","command":"/cnb/process/web","working_dir":"/workspace/webapp","default":true}} + */ + process_types: Record; + /** + * buildpacks of the OCI image + */ + buildpacks: Buildpack[]; + /** + * when the OCI image was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * when the OCI image was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * build architecture for OCI image + * + * @example "arm64" + */ + architecture: string | null; +} +/** + * + * [Heroku Platform API - pipeline-promotion-target](https://devcenter.heroku.com/articles/platform-api-reference#pipeline-promotion-target) + * Promotion targets represent an individual app being promoted to + */ +export interface PipelinePromotionTarget { + /** + * the app which was promoted to + */ + app: PipelinePromotionTargetApp; + /** + * an error message for why the promotion failed + * + * @example "User does not have access to that app" + */ + error_message: null | string; + /** + * unique identifier of promotion target + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * the promotion which the target belongs to + */ + pipeline_promotion: PipelinePromotion; + /** + * the release which was created on the target app + */ + release: PipelinePromotionTargetRelease | null; + /** + * status of promotion + * + * @example "pending" + */ + readonly status: 'pending' | 'succeeded' | 'failed'; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * the app which was promoted to + */ +export interface PipelinePromotionTargetApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * [Heroku Platform API - pipeline-promotion](https://devcenter.heroku.com/articles/platform-api-reference#pipeline-promotion) + * Promotions allow you to move code from an app in a pipeline to all targets + */ +export interface PipelinePromotion { + /** + * when promotion was created + * + * @example "2012-01-01T12:00:00Z" + */ + created_at: string; + /** + * unique identifier of promotion + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * the pipeline which the promotion belongs to + */ + pipeline: Pipeline; + /** + * the app being promoted from + */ + source: Source; + /** + * status of promotion + * + * @example "pending" + */ + readonly status: 'pending' | 'completed'; + /** + * when promotion was updated + * + * @example "2012-01-01T12:00:00Z" + */ + updated_at: string | null; +} +/** + * + * [Heroku Platform API - release](https://devcenter.heroku.com/articles/platform-api-reference#release) + * the release which was created on the target app + */ +export interface PipelinePromotionTargetRelease { + /** + * unique identifier of release + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * [Heroku Platform API - source](https://devcenter.heroku.com/articles/platform-api-reference#source) + * A source is a location for uploading and downloading an application's source code. + */ +export interface Source { + /** + * pointer to the URL where clients can fetch or store the source + */ + source_blob: SourceSourceBlob; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * the app which was promoted from + */ +export interface SourceApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * [Heroku Platform API - release](https://devcenter.heroku.com/articles/platform-api-reference#release) + * the release used to promoted from + */ +export interface SourceRelease { + /** + * unique identifier of release + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +export interface PipelinePromotionCreatePayload { + /** + * pipeline involved in the promotion + */ + pipeline: Pipeline; + /** + * the app being promoted from + */ + source: PipelinePromotionCreatePayloadSource; + targets: Array<{ + /** + * the app is being promoted to + */ + app?: PipelinePromotionCreatePayloadApp; +}>; +} +/** + * + * [Heroku Platform API - source](https://devcenter.heroku.com/articles/platform-api-reference#source) + * the app being promoted from + */ +export interface PipelinePromotionCreatePayloadSource { + /** + * the app which was promoted from + */ + app?: PipelinePromotionCreatePayloadSourceApp; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * the app which was promoted from + */ +export interface PipelinePromotionCreatePayloadSourceApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * the app is being promoted to + */ +export interface PipelinePromotionCreatePayloadApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * [Heroku Platform API - pipeline-stack](https://devcenter.heroku.com/articles/platform-api-reference#pipeline-stack) + * A pipeline's stack is determined by the apps in the pipeline. This is used during creation of CI and Review Apps that have no stack defined in app.json + */ +export interface PipelineStack { + /** + * identity of the stack that will be used for new builds without a stack defined in CI and Review Apps + */ + stack?: Stack | null; +} +/** + * + * [Heroku Platform API - pipeline-transfer](https://devcenter.heroku.com/articles/platform-api-reference#pipeline-transfer) + * A pipeline transfer is the process of changing pipeline ownership along with the contained apps. + */ +export interface PipelineTransfer { + /** + * pipeline being transferred + */ + pipeline?: Pipeline; + /** + * Previous owner of the pipeline. + */ + previous_owner?: Record; + /** + * New owner of the pipeline. + */ + new_owner?: Record; +} +export interface PipelineTransferCreatePayload { + /** + * The pipeline to transfer + */ + pipeline: Pipeline; + /** + * New pipeline owner + */ + new_owner: NewOwner; +} +/** + * + * New pipeline owner + */ +export interface NewOwner { + /** + * unique identifier of a pipeline owner + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + id?: string; + /** + * type of pipeline owner + * + * @example "team" + */ + type?: string; +} +/** + * + * Owner of a pipeline. + */ +export interface PipelineOwner { + /** + * unique identifier of a pipeline owner + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + id: string; + /** + * type of pipeline owner + * + * @example "team" + */ + type: string; +} +export interface PipelineCreatePayload { + /** + * name of pipeline + * + * @example "example" + */ + name: string; + /** + * Owner of a pipeline. + */ + owner?: PipelineCreatePayloadOwner | null; +} +/** + * + * Owner of a pipeline. + */ +export interface PipelineCreatePayloadOwner { + /** + * unique identifier of a pipeline owner + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + id: string; + /** + * type of pipeline owner + * + * @example "team" + */ + type: string; +} +export interface PipelineUpdatePayload { + /** + * name of pipeline + * + * @example "example" + */ + name?: string; +} +/** + * + * [Heroku Platform API - rate-limit](https://devcenter.heroku.com/articles/platform-api-reference#rate-limit) + * Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit. + */ +export interface RateLimit { + /** + * allowed requests remaining in current interval + * + * @example 2399 + */ + readonly remaining: number; +} +export interface ReleaseCreatePayload { + /** + * description of changes in this release + * + * @example "Added new feature" + */ + readonly description?: string; + /** + * unique identifier of the OCI image or uniquely identifies the content of the OCI image (consisting of an algorithm portion and an encoded portion) + */ + oci_image?: string; + /** + * unique identifier of slug + */ + slug?: string; +} +export interface ReleaseRollbackPayload { + /** + * unique identifier of release + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly release: string; +} +/** + * + * [Heroku Platform API - review-app](https://devcenter.heroku.com/articles/platform-api-reference#review-app) + * An ephemeral app to review a set of changes + */ +export interface ReviewApp { + /** + * the Heroku app associated to this review app + */ + app: null | ReviewAppApp; + /** + * the app setup for this review app + */ + app_setup: null | ReviewAppAppSetup; + /** + * the branch of the repository which the review app is based on + */ + readonly branch: string; + /** + * when test run was created + */ + readonly created_at: string; + /** + * unique identifier of the review app + */ + readonly id: string; + /** + * the pipeline which this review app belongs to + */ + pipeline: ReviewAppPipeline; + /** + * current state of the review app + */ + readonly status: 'pending' | 'creating' | 'created' | 'deleting' | 'deleted' | 'errored'; + /** + * when review app was updated + */ + readonly updated_at: string; + /** + * The user who created the review app + */ + readonly creator: Record; + /** + * wait for ci before building the app + * + * @example true + */ + readonly wait_for_ci: boolean; + /** + * error message from creating the review app if any + */ + readonly error_status: string | null; + /** + * message from creating the review app if any + */ + readonly message: string | null; + fork_repo: ForkRepo | null; + /** + * pull request number the review app is built for + * + * @example 24 + */ + readonly pr_number: number | null; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * the Heroku app associated to this review app + */ +export interface ReviewAppApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * the app setup for this review app + */ +export interface ReviewAppAppSetup { + /** + * unique identifier of app setup + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +/** + * + * [Heroku Platform API - pipeline](https://devcenter.heroku.com/articles/platform-api-reference#pipeline) + * the pipeline which this review app belongs to + */ +export interface ReviewAppPipeline { + /** + * unique identifier of pipeline + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +export interface ForkRepo { + /** + * repository id of the fork the branch resides in + * + * @example "123456" + */ + readonly id: number | null; +} +export interface ReviewAppCreatePayload { + /** + * the branch of the repository which the review app is based on + */ + readonly branch: string; + /** + * pull request number the review app is built for + * + * @example 24 + */ + readonly pr_number?: number | null; + /** + * unique identifier of pipeline + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly pipeline: string; + /** + * The download location for the review app's source code + */ + source_blob: ReviewAppCreatePayloadSourceBlob; + /** + * hash of config vars + * + * @example {"FOO":"bar","BAZ":"qux"} + */ + environment?: Record | null; + /** + * repository id of the fork the branch resides in + * + * @example "123456" + */ + readonly fork_repo_id?: number | null; +} +/** + * + * The download location for the review app's source code + */ +export interface ReviewAppCreatePayloadSourceBlob { + /** + * URL where gzipped tar archive of source code for build was downloaded. + * + * @example "https://example.com/source.tgz?token=xyz" + */ + readonly url: string; + /** + * The version number (or SHA) of the code to build. + * + * @example "v1.2.0" + */ + version: string | null; +} +/** + * + * [Heroku Platform API - review-app-config](https://devcenter.heroku.com/articles/platform-api-reference#review-app-config) + * Review apps can be configured for pipelines. + */ +export interface ReviewAppConfig { + repo?: Repo; + /** + * enable automatic review apps for pull requests + * + * @example true + */ + readonly automatic_review_apps?: boolean; + /** + * the deploy target for the review apps of a pipeline + */ + deploy_target?: DeployTarget | null; + /** + * automatically destroy review apps when they haven't been deployed for a number of days + * + * @example true + */ + readonly destroy_stale_apps?: boolean; + /** + * number of days without a deployment after which to consider a review app stale + * + * @example "5" + */ + readonly stale_days?: number; + /** + * unique identifier of pipeline + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly pipeline_id?: string; + /** + * If true, review apps are created only when CI passes + * + * @example true + */ + readonly wait_for_ci?: boolean; + /** + * A unique prefix that will be used to create review app names + * + * @example "singular-app" + */ + readonly base_name?: null | string; +} +export interface Repo { + /** + * repository id + * + * @example "123456" + */ + readonly id: number; +} +/** + * + * the deploy target for the review apps of a pipeline + */ +export interface DeployTarget { + /** + * unique identifier of deploy target + * + * @example "us" + */ + readonly id: string; + /** + * type of deploy target + * + * @example "region" + */ + readonly type: string; +} +export interface ReviewAppConfigEnablePayload { + /** + * repository name + * + * @example "heroku/homebrew-brew" + */ + readonly repo: string; + /** + * enable automatic review apps for pull requests + * + * @example true + */ + readonly automatic_review_apps?: boolean; + /** + * automatically destroy review apps when they haven't been deployed for a number of days + * + * @example true + */ + readonly destroy_stale_apps?: boolean; + /** + * number of days without a deployment after which to consider a review app stale + * + * @example "5" + */ + readonly stale_days?: number; + /** + * the deploy target for the review apps of a pipeline + */ + deploy_target?: DeployTarget | null; + /** + * If true, review apps are created only when CI passes + * + * @example true + */ + readonly wait_for_ci?: boolean; + /** + * A unique prefix that will be used to create review app names + * + * @example "singular-app" + */ + readonly base_name?: null | string; +} +export interface ReviewAppConfigUpdatePayload { + /** + * enable automatic review apps for pull requests + * + * @example true + */ + readonly automatic_review_apps?: boolean; + /** + * automatically destroy review apps when they haven't been deployed for a number of days + * + * @example true + */ + readonly destroy_stale_apps?: boolean; + /** + * number of days without a deployment after which to consider a review app stale + * + * @example "5" + */ + readonly stale_days?: number; + /** + * the deploy target for the review apps of a pipeline + */ + deploy_target?: DeployTarget | null; + /** + * If true, review apps are created only when CI passes + * + * @example true + */ + readonly wait_for_ci?: boolean; + /** + * A unique prefix that will be used to create review app names + * + * @example "singular-app" + */ + readonly base_name?: null | string; +} +/** + * + * pointer to the url where clients can fetch or store the actual release binary + */ +export interface Blob { + /** + * method to be used to interact with the slug blob + * + * @example "GET" + */ + readonly method: string; + /** + * URL to interact with the slug blob + * + * @example "https://api.heroku.com/slugs/1234.tgz" + */ + readonly url: string; +} +export interface SlugCreatePayload { + /** + * description from buildpack of slug + * + * @example "Ruby/Rack" + */ + buildpack_provided_description?: null | string; + /** + * an optional checksum of the slug for verifying its integrity + * + * @example "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + */ + readonly checksum?: null | string; + /** + * identification of the code with your version control system (eg: SHA of the git HEAD) + * + * @example "60883d9e8947a57e04dc9124f25df004866a2051" + */ + commit?: null | string; + /** + * an optional description of the provided commit + * + * @example "fixed a bug with API documentation" + */ + commit_description?: null | string; + /** + * hash mapping process type names to their respective command + * + * @example {"web":"./bin/web -p $PORT"} + */ + process_types: Record; + /** + * unique name of stack or unique identifier of stack + */ + stack?: string; +} +/** + * + * [Heroku Platform API - sms-number](https://devcenter.heroku.com/articles/platform-api-reference#sms-number) + * SMS numbers are used for recovery on accounts with two-factor authentication enabled. + */ +export interface SmsNumber { + /** + * SMS number of account + * + * @example "+1 ***-***-1234" + */ + readonly sms_number: string | null; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * application that this SSL certificate is on + */ +export interface SniEndpointApp { + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of app + * + * @example "example" + */ + name: string; +} +/** + * + * certificate provided by this endpoint + */ +export interface SslCert { + readonly 'ca_signed?'?: boolean; + readonly cert_domains?: unknown[]; + readonly expires_at?: string; + readonly issuer?: string; + readonly 'self_signed?'?: boolean; + readonly starts_at?: string; + readonly subject?: string; + /** + * unique identifier of this SSL certificate + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; +} +export interface SniEndpointCreatePayload { + /** + * raw contents of the public certificate chain (eg: .crt or .pem file) + * + * @example "-----BEGIN CERTIFICATE----- ..." + */ + certificate_chain: string; + /** + * contents of the private key (eg .key file) + * + * @example "-----BEGIN RSA PRIVATE KEY----- ..." + */ + private_key: string; +} +export interface SniEndpointUpdatePayload { + /** + * raw contents of the public certificate chain (eg: .crt or .pem file) + * + * @example "-----BEGIN CERTIFICATE----- ..." + */ + certificate_chain: string; + /** + * contents of the private key (eg .key file) + * + * @example "-----BEGIN RSA PRIVATE KEY----- ..." + */ + private_key: string; +} +/** + * + * pointer to the URL where clients can fetch or store the source + */ +export interface SourceSourceBlob { + /** + * URL to download the source + * + * @example "https://api.heroku.com/sources/1234.tgz" + */ + readonly get_url: string; + /** + * URL to upload the source + * + * @example "https://api.heroku.com/sources/1234.tgz" + */ + readonly put_url: string; +} +/** + * + * [Heroku Platform API - space-app-access](https://devcenter.heroku.com/articles/platform-api-reference#space-app-access) + * Space access represents the permissions a particular user has on a particular space. + */ +export interface SpaceAppAccess { + /** + * space user belongs to + */ + space?: SpaceAppAccessSpace; + /** + * when space was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at?: string; + /** + * unique identifier of space + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * user space permissions + */ + permissions?: Array<{ + description?: string; + name?: string; +}>; + /** + * when space was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at?: string; + /** + * identity of user account + */ + user?: User; +} +/** + * + * [Heroku Platform API - space](https://devcenter.heroku.com/articles/platform-api-reference#space) + * space user belongs to + */ +export interface SpaceAppAccessSpace { + /** + * unique name of app + * + * @example "example" + */ + name: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +export interface SpaceAppAccessUpdatePayload { + permissions: Array<{ + name?: string; +}>; +} +/** + * + * [Heroku Platform API - space-nat](https://devcenter.heroku.com/articles/platform-api-reference#space-nat) + * Network address translation (NAT) for stable outbound IP addresses from a space + */ +export interface SpaceNat { + /** + * when network address translation for a space was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * potential IPs from which outbound network traffic will originate + */ + readonly sources: string[]; + /** + * availability of network address translation for a space + * + * @example "enabled" + */ + readonly state: 'disabled' | 'updating' | 'enabled'; + /** + * when network address translation for a space was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; +} +/** + * + * [Heroku Platform API - space-topology](https://devcenter.heroku.com/articles/platform-api-reference#space-topology) + * Space Topology provides you with a mechanism for viewing all the running dynos, formations and applications for a space. This is the same data thats used to power our DNS Service Discovery. + */ +export interface SpaceTopology { + /** + * version of the space topology payload + * + * @example 1 + */ + readonly version: number; + /** + * The apps within this space + */ + readonly apps: Array<{ + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * + * @example ["example.com","example.net"] + */ + readonly domains?: unknown[]; + /** + * formations for application + */ + readonly formation?: SpaceTopologyFormation[]; +}>; +} +/** + * + * formations for application + */ +export interface SpaceTopologyFormation { + /** + * unique identifier of this process type + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * Name of process type + * + * @example "web" + */ + process_type?: string; + /** + * Current dynos for application + */ + dynos?: SpaceTopologyDyno[]; +} +/** + * + * A dyno + */ +export interface SpaceTopologyDyno { + /** + * unique identifier of this dyno + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * process number, e.g. 1 in web.1 + * + * @example 1 + */ + number?: number; + /** + * RFC1918 Address of Dyno + * + * @example "10.0.134.42" + */ + private_ip?: string; + /** + * localspace hostname of resource + * + * @example "1.example-app-90210.app.localspace" + */ + hostname?: string; +} +export interface SpaceTransferTransferPayload { + /** + * unique name of team + * + * @example "example" + */ + readonly new_owner: string; +} +/** + * + * [Heroku Platform API - team](https://devcenter.heroku.com/articles/platform-api-reference#team) + * team that owns this space + */ +export interface SpaceTeam { + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of team + * + * @example "example" + */ + readonly name?: string; +} +/** + * + * [Heroku Platform API - region](https://devcenter.heroku.com/articles/platform-api-reference#region) + * identity of space region + */ +export interface SpaceRegion { + /** + * unique identifier of region + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of region + * + * @example "us" + */ + readonly name: string; +} +export interface SpaceUpdatePayload { + /** + * unique name of space + * + * @example "nasa" + */ + name?: string; +} +export interface SpaceCreatePayload { + /** + * unique name of space + * + * @example "nasa" + */ + name: string; + /** + * unique name of team + * + * @example "example" + */ + readonly team: string; + /** + * unique identifier of region or unique name of region + */ + region?: string; + /** + * true if this space has shield enabled + * + * @example true + */ + readonly shield?: boolean; + /** + * The RFC-1918 CIDR the Private Space will use. It must be a /16 in 10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0/16 + * + * @example "172.20.20.30/16" + */ + cidr?: string; + /** + * The RFC-1918 CIDR that the Private Space will use for the Heroku-managed peering connection that's automatically created when using Heroku Data add-ons. It must be between a /16 and a /20 + * + * @example "10.2.0.0/16" + */ + data_cidr?: string; + /** + * URL to which all apps will drain logs. Only settable during space creation and enables direct logging. Must use HTTPS. + * + * @example "https://example.com/logs" + */ + log_drain_url?: string; + /** + * channel to create the space on + * + * @example "some-channel" + */ + channel_name?: string; + /** + * generation for space + * + * @example "fir" + */ + generation?: string; +} +/** + * + * [Heroku Platform API - team-app-collaborator](https://devcenter.heroku.com/articles/platform-api-reference#team-app-collaborator) + * A team collaborator represents an account that has been given access to a team app on Heroku. + */ +export interface TeamAppCollaborator { + /** + * app collaborator belongs to + */ + app?: TeamAppCollaboratorApp; + /** + * when collaborator was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at?: string; + /** + * unique identifier of collaborator + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * array of permissions for the collaborator (only applicable if the app is on a team) + */ + permissions?: TeamAppPermission[]; + /** + * role in the team + * + * @example "admin" + */ + readonly role?: null | 'admin' | 'collaborator' | 'member' | 'owner' | ''; + /** + * when collaborator was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at?: string; + /** + * identity of collaborated account + */ + user?: TeamAppCollaboratorUser; +} +/** + * + * [Heroku Platform API - app](https://devcenter.heroku.com/articles/platform-api-reference#app) + * app collaborator belongs to + */ +export interface TeamAppCollaboratorApp { + /** + * unique name of app + * + * @example "example" + */ + name: string; + /** + * unique identifier of app + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +/** + * + * identity of collaborated account + */ +export interface TeamAppCollaboratorUser { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * whether the user is federated and belongs to an Identity Provider + */ + readonly federated: boolean; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; +} +export interface TeamAppCollaboratorCreatePayload { + /** + * An array of permissions to give to the collaborator. + */ + permissions?: string[]; + /** + * whether to suppress email invitation when creating collaborator + */ + silent?: boolean; + /** + * unique email address of account or unique identifier of an account or Implicit reference to currently authorized user + */ + user: string; +} +export interface TeamAppCollaboratorUpdatePayload { + /** + * An array of permissions to give to the collaborator. + */ + permissions: string[]; +} +export interface TeamAppCreatePayload { + /** + * are other team members forbidden from joining this app. + */ + locked?: boolean; + /** + * unique name of app + * + * @example "example" + */ + name?: string; + /** + * unique name of team + * + * @example "example" + */ + readonly team?: string; + /** + * force creation of the app in the user account even if a default team is set. + */ + personal?: boolean; + /** + * unique name of region + * + * @example "us" + */ + readonly region?: string; + /** + * unique name of space + * + * @example "nasa" + */ + space?: string; + /** + * unique name of stack + * + * @example "heroku-18" + */ + readonly stack?: string; + /** + * describes whether a Private Spaces app is externally routable or not + */ + internal_routing?: boolean | null; +} +export interface TeamAppUpdateLockedPayload { + /** + * are other team members forbidden from joining this app. + */ + locked: boolean; +} +export interface TeamAppTransferToAccountPayload { + /** + * unique email address of account or unique identifier of an account or Implicit reference to currently authorized user + */ + owner: string; +} +export interface TeamAppTransferToTeamPayload { + /** + * unique name of team + * + * @example "example" + */ + readonly owner: string; +} +/** + * + * [Heroku Platform API - team-daily-usage](https://devcenter.heroku.com/articles/platform-api-reference#team-daily-usage) + * Usage for an enterprise team at a daily resolution. + */ +export interface TeamDailyUsage { + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons: number; + /** + * app usage in the team + */ + apps: AppUsageDaily[]; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data: number; + /** + * date of the usage + * + * @example "2019-01-01" + */ + readonly date: string; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos: number; + /** + * team identifier + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * name of the team + * + * @example "ops" + */ + readonly name: string; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner: number; + /** + * space credits used + * + * @example 1.548 + */ + readonly space: number; +} +export interface TeamDailyUsageInfoPayload { + /** + * range start date + * + * @example "2019-01-25" + */ + readonly start: string; + /** + * range end date + * + * @example "2019-02-25" + */ + readonly end?: string; +} +/** + * + * [Heroku Platform API - team-delinquency](https://devcenter.heroku.com/articles/platform-api-reference#team-delinquency) + * A Heroku team becomes delinquent due to non-payment. We [suspend and delete](https://help.heroku.com/EREVRILX/what-happens-if-i-have-unpaid-heroku-invoices) delinquent teams if their invoices remain unpaid. + */ +export interface TeamDelinquency { + /** + * scheduled time of when we will suspend your team due to delinquency + * + * @example "2024-01-01T12:00:00Z" + */ + readonly scheduled_suspension_time: string | null; + /** + * scheduled time of when we will delete your team due to delinquency + * + * @example "2024-01-01T12:00:00Z" + */ + readonly scheduled_deletion_time: string | null; +} +/** + * + * [Heroku Platform API - team-feature](https://devcenter.heroku.com/articles/platform-api-reference#team-feature) + * A team feature represents a feature enabled on a team account. + */ +export interface TeamFeature { + /** + * when team feature was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * description of team feature + * + * @example "Causes account to example." + */ + readonly description: string; + /** + * documentation URL of team feature + * + * @example "http://devcenter.heroku.com/articles/example" + */ + readonly doc_url: string; + /** + * whether or not team feature has been enabled + * + * @example true + */ + enabled: boolean; + /** + * unique identifier of team feature + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of team feature + * + * @example "name" + */ + readonly name: string; + /** + * state of team feature + * + * @example "public" + */ + readonly state: string; + /** + * when team feature was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * user readable feature name + * + * @example "My Feature" + */ + readonly display_name: string; + /** + * e-mail to send feedback about the feature + * + * @example "feedback@heroku.com" + */ + readonly feedback_email: string; +} +/** + * + * [Heroku Platform API - team-invitation](https://devcenter.heroku.com/articles/platform-api-reference#team-invitation) + * A team invitation represents an invite to a team. + */ +export interface TeamInvitation { + /** + * when invitation was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of an invitation + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + invited_by: InvitedBy; + team: TeamInvitationTeam; + /** + * role in the team + * + * @example "admin" + */ + readonly role: null | 'admin' | 'collaborator' | 'member' | 'owner' | ''; + /** + * when invitation was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + user: TeamInvitationUser; +} +export interface InvitedBy { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * full name of the account owner + * + * @example "Tina Edmonds" + */ + name: string | null; +} +export interface TeamInvitationTeam { + /** + * unique identifier of team + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of team + * + * @example "example" + */ + readonly name: string; +} +export interface TeamInvitationUser { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * full name of the account owner + * + * @example "Tina Edmonds" + */ + name: string | null; +} +export interface TeamInvitationCreatePayload { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * role in the team + * + * @example "admin" + */ + readonly role: null | 'admin' | 'collaborator' | 'member' | 'owner' | ''; +} +/** + * + * A team member is an individual with access to a team. + */ +export interface TeamMember { + /** + * when the membership record was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * email address of the team member + * + * @example "someone@example.org" + */ + readonly email: string; + /** + * whether the user is federated and belongs to an Identity Provider + */ + readonly federated: boolean; + /** + * unique identifier of the team member + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * Identity Provider information the member is federated with + */ + identity_provider?: null | TeamMemberIdentityProvider; + /** + * role in the team + * + * @example "admin" + */ + readonly role?: null | 'admin' | 'collaborator' | 'member' | 'owner' | ''; + /** + * whether the team member has two factor authentication enabled + * + * @example true + */ + readonly two_factor_authentication?: boolean; + /** + * when the membership record was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * user information for the membership + */ + user?: TeamMemberUser; +} +/** + * + * Identity Provider information the member is federated with + */ +export interface TeamMemberIdentityProvider { + /** + * unique identifier of this identity provider + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * name of the identity provider + * + * @example "acme" + */ + readonly name?: string; + /** + * whether the identity_provider information is redacted or not + */ + readonly redacted?: boolean; + /** + * entity that owns this identity provider + */ + owner?: Owner; +} +/** + * + * user information for the membership + */ +export interface TeamMemberUser { + /** + * unique email address of account + * + * @example "username@example.com" + */ + email: string; + /** + * unique identifier of an account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * full name of the account owner + * + * @example "Tina Edmonds" + */ + name: string | null; +} +/** + * + * [Heroku Platform API - team-invoice](https://devcenter.heroku.com/articles/platform-api-reference#team-invoice) + * A Team Invoice is an itemized bill of goods for a team which includes pricing and charges. + */ +export interface TeamInvoice { + /** + * total add-ons charges in on this invoice + * + * @example 25000 + */ + readonly addons_total: number; + /** + * total database charges on this invoice + * + * @example 25000 + */ + readonly database_total: number; + /** + * total charges on this invoice + */ + readonly charges_total: number; + /** + * when invoice was created + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * total credits on this invoice + * + * @example 100000 + */ + readonly credits_total: number; + /** + * total amount of dyno units consumed across dyno types. + * + * @example 1.92 + */ + readonly dyno_units: number; + /** + * unique identifier of this invoice + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * human readable invoice number + * + * @example 9403943 + */ + readonly number: number; + /** + * status of the invoice payment + * + * @example "Paid" + */ + readonly payment_status: string; + /** + * the ending date that the invoice covers + * + * @example "01/31/2014" + */ + readonly period_end: string; + /** + * the starting date that this invoice covers + * + * @example "01/01/2014" + */ + readonly period_start: string; + /** + * total platform charges on this invoice + * + * @example 50000 + */ + readonly platform_total: number; + /** + * payment status for this invoice (pending, successful, failed) + * + * @example 1 + */ + readonly state: number; + /** + * combined total of charges and credits on this invoice + * + * @example 100000 + */ + readonly total: number; + /** + * when invoice was updated + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * The total amount of hours consumed across dyno types. + * + * @example 1488 + */ + readonly weighted_dyno_hours: number; +} +export interface TeamMemberCreateOrUpdatePayload { + /** + * email address of the team member + * + * @example "someone@example.org" + */ + readonly email: string; + /** + * whether the user is federated and belongs to an Identity Provider + */ + readonly federated?: boolean; + /** + * role in the team + * + * @example "admin" + */ + role: 'admin' | 'viewer' | 'member'; +} +export interface TeamMemberCreatePayload { + /** + * email address of the team member + * + * @example "someone@example.org" + */ + readonly email: string; + /** + * whether the user is federated and belongs to an Identity Provider + */ + readonly federated?: boolean; + /** + * role in the team + * + * @example "admin" + */ + role: 'admin' | 'viewer' | 'member'; +} +export interface TeamMemberUpdatePayload { + /** + * email address of the team member + * + * @example "someone@example.org" + */ + readonly email: string; + /** + * whether the user is federated and belongs to an Identity Provider + */ + readonly federated?: boolean; + /** + * role in the team + * + * @example "admin" + */ + role: 'admin' | 'viewer' | 'member'; +} +/** + * + * [Heroku Platform API - team-monthly-usage](https://devcenter.heroku.com/articles/platform-api-reference#team-monthly-usage) + * Usage for an enterprise team at a monthly resolution. + */ +export interface TeamMonthlyUsage { + /** + * total add-on credits used + * + * @example 250 + */ + readonly addons: number; + /** + * app usage in the team + */ + apps: AppUsageMonthly[]; + /** + * max connect rows synced + * + * @example 15000 + */ + readonly connect: number; + /** + * total add-on credits used for first party add-ons + * + * @example 34.89 + */ + readonly data: number; + /** + * dynos used + * + * @example 1.548 + */ + readonly dynos: number; + /** + * team identifier + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * year and month of the usage + * + * @example "2019-01" + */ + readonly month: string; + /** + * name of the team + * + * @example "ops" + */ + readonly name: string; + /** + * total add-on credits used for third party add-ons + * + * @example 12.34 + */ + readonly partner: number; + /** + * space credits used + * + * @example 1.548 + */ + readonly space: number; +} +export interface TeamMonthlyUsageInfoPayload { + /** + * range start date + * + * @example "2019-01" + */ + readonly start: string; + /** + * range end date + * + * @example "2019-02" + */ + readonly end?: string; +} +/** + * + * [Heroku Platform API - team-preferences](https://devcenter.heroku.com/articles/platform-api-reference#team-preferences) + * Tracks a Team's Preferences + */ +export interface TeamPreferences { + /** + * The default permission used when adding new members to the team + * + * @example "member" + */ + 'default-permission': null | 'admin' | 'member' | 'viewer' | ''; + /** + * Whether add-on service rules should be applied to add-on installations + * + * @example true + */ + 'addons-controls': boolean | null; +} +export interface TeamPreferencesUpdatePayload { + /** + * Whether add-on service rules should be applied to add-on installations + * + * @example true + */ + 'addons-controls'?: boolean | null; +} +export interface TeamEnterpriseAccount { + /** + * unique identifier of the enterprise account + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of the enterprise account + * + * @example "example" + */ + readonly name?: string; +} +/** + * + * Identity Provider associated with the Team + */ +export interface TeamIdentityProvider { + /** + * unique identifier of this identity provider + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * user-friendly unique identifier for this identity provider + * + * @example "acme-sso" + */ + name: string; + /** + * entity that owns this identity provider + */ + owner: Owner; +} +export interface TeamUpdatePayload { + /** + * whether to use this team when none is specified + * + * @example true + */ + default?: boolean; + /** + * unique name of team + * + * @example "example" + */ + readonly name?: string; +} +export interface TeamCreatePayload { + /** + * unique name of team + * + * @example "example" + */ + readonly name: string; + /** + * street address line 1 + * + * @example "40 Hickory Lane" + */ + address_1?: string; + /** + * street address line 2 + * + * @example "Suite 103" + */ + address_2?: string | null; + /** + * encrypted card number of payment method + * + * @example "encrypted-card-number" + */ + card_number?: string | null; + /** + * city + * + * @example "San Francisco" + */ + city?: string; + /** + * country + * + * @example "US" + */ + country?: string; + /** + * card verification value + * + * @example "123" + */ + cvv?: string | null; + /** + * expiration month + * + * @example "11" + */ + expiration_month?: string | null; + /** + * expiration year + * + * @example "2014" + */ + expiration_year?: string | null; + /** + * the first name for payment method + * + * @example "Jason" + */ + first_name?: string; + /** + * the last name for payment method + * + * @example "Walker" + */ + last_name?: string; + /** + * metadata + * + * @example "Additional information for payment method" + */ + other?: string | null; + /** + * postal code + * + * @example "90210" + */ + postal_code?: string; + /** + * state + * + * @example "CA" + */ + state?: string; + /** + * Nonce generated by Braintree hosted fields form + * + * @example "VGhpcyBpcyBhIGdvb2QgZGF5IHRvIGRpZQ==" + */ + nonce?: string | null; + /** + * Device data string generated by the client + * + * @example "VGhpcyBpcyBhIGdvb2QgZGF5IHRvIGRpZQ==" + */ + device_data?: string | null; +} +export interface TeamCreateInEnterpriseAccountPayload { + /** + * unique name of team + * + * @example "example" + */ + readonly name: string; +} +/** + * + * [Heroku Platform API - test-case](https://devcenter.heroku.com/articles/platform-api-reference#test-case) + * A single test case belonging to a test run + */ +export interface TestCase { + /** + * unique identifier of a test case + */ + readonly id: string; + /** + * when test case was created + */ + readonly created_at: string; + /** + * when test case was updated + */ + readonly updated_at: string; + /** + * description of the test case + */ + description: string; + /** + * meta information about the test case + */ + diagnostic: string; + /** + * special note about the test case e.g. skipped, todo + */ + directive: string; + /** + * whether the test case was successful + */ + passed: boolean; + /** + * the test number + */ + number: number; + /** + * the test node which executed this test case + */ + test_node: TestNode; + /** + * the test run which owns this test case + */ + test_run: TestRun; +} +/** + * + * [Heroku Platform API - test-node](https://devcenter.heroku.com/articles/platform-api-reference#test-node) + * A single test node belonging to a test run + */ +export interface TestNode { + /** + * when test node was created + */ + readonly created_at: string; + /** + * the dyno which belongs to this test node + */ + dyno: TestNodeDyno | null; + /** + * the status of the test run when the error occurred + */ + error_status: string | null; + /** + * the exit code of the test script + */ + exit_code: number | null; + /** + * unique identifier of a test node + */ + id: string; + /** + * The index of the test node + */ + index: number; + /** + * human friendly message indicating reason for an error + */ + message: string | null; + /** + * the streaming output for the test node + * + * @example "https://example.com/output.log" + */ + output_stream_url: string; + /** + * the pipeline which owns this test node + */ + pipeline: TestNodePipeline; + /** + * the streaming test setup output for the test node + * + * @example "https://example.com/test-setup.log" + */ + setup_stream_url: string; + /** + * current state of the test run + */ + readonly status: 'pending' | 'cancelled' | 'creating' | 'building' | 'running' | 'succeeded' | 'failed' | 'errored' | 'debugging'; + /** + * when test node was updated + */ + readonly updated_at: string; + /** + * the test run which owns this test node + */ + test_run: TestRun; +} +/** + * + * [Heroku Platform API - test-run](https://devcenter.heroku.com/articles/platform-api-reference#test-run) + * An execution or trial of one or more tests + */ +export interface TestRun { + /** + * the email of the actor triggering the test run + */ + actor_email: string; + /** + * whether the test was run with an empty cache + */ + clear_cache: boolean | null; + /** + * the branch of the repository that the test run concerns + */ + commit_branch: string; + /** + * the message for the commit under test + */ + commit_message: string; + /** + * the SHA hash of the commit under test + */ + commit_sha: string; + /** + * whether the test run was started for interactive debugging + */ + debug: boolean; + /** + * the app setup for the test run + */ + app_setup: null | Record; + /** + * when test run was created + */ + readonly created_at: string; + /** + * the type of dynos used for this test-run + */ + dyno: null | TestRunDyno; + /** + * unique identifier of a test run + */ + readonly id: string; + /** + * human friendly message indicating reason for an error + */ + message: string | null; + /** + * the auto incrementing test run number + */ + number: number; + /** + * the team that owns this test-run + */ + organization: null | Organization; + /** + * the pipeline which owns this test-run + */ + pipeline: TestRunPipeline; + /** + * current state of the test run + */ + readonly status: 'pending' | 'cancelled' | 'creating' | 'building' | 'running' | 'succeeded' | 'failed' | 'errored' | 'debugging'; + /** + * The download location for the source code to be tested + */ + source_blob_url: string; + /** + * when test-run was updated + */ + readonly updated_at: string; + /** + * An account represents an individual signed up to use the Heroku platform. + */ + user: Account; + /** + * human friendly warning emitted during the test run + */ + warning_message: string | null; +} +/** + * + * [Heroku Platform API - dyno](https://devcenter.heroku.com/articles/platform-api-reference#dyno) + * the dyno which belongs to this test node + */ +export interface TestNodeDyno { + /** + * unique identifier of this dyno or the name of this process on this dyno + */ + id?: string; + /** + * a URL to stream output from for debug runs or null for non-debug runs + * + * @example "rendezvous://rendezvous.runtime.heroku.com:5000/{rendezvous-id}" + */ + readonly attach_url?: string | null; +} +/** + * + * [Heroku Platform API - pipeline](https://devcenter.heroku.com/articles/platform-api-reference#pipeline) + * the pipeline which owns this test node + */ +export interface TestNodePipeline { + /** + * unique identifier of pipeline or name of pipeline + */ + id?: string; +} +/** + * + * [Heroku Platform API - dyno](https://devcenter.heroku.com/articles/platform-api-reference#dyno) + * the type of dynos used for this test-run + */ +export interface TestRunDyno { + /** + * dyno size + * + * @example "standard-1X" + */ + size?: string; +} +/** + * + * [Heroku Platform API - pipeline](https://devcenter.heroku.com/articles/platform-api-reference#pipeline) + * the pipeline which owns this test-run + */ +export interface TestRunPipeline { + /** + * unique identifier of pipeline or name of pipeline + */ + id?: string; +} +export interface TestRunCreatePayload { + /** + * the branch of the repository that the test run concerns + */ + commit_branch: string; + /** + * the message for the commit under test + */ + commit_message: string; + /** + * the SHA hash of the commit under test + */ + commit_sha: string; + /** + * whether the test run was started for interactive debugging + */ + debug?: boolean; + /** + * unique name of team or unique identifier of team + */ + organization?: string; + /** + * unique identifier of pipeline or name of pipeline + */ + pipeline: string; + /** + * The download location for the source code to be tested + */ + source_blob_url: string; +} +export interface TestRunUpdatePayload { + /** + * current state of the test run + */ + readonly status: 'pending' | 'cancelled' | 'creating' | 'building' | 'running' | 'succeeded' | 'failed' | 'errored' | 'debugging'; + /** + * human friendly message indicating reason for an error + */ + message: string | null; +} +/** + * + * [Heroku Platform API - user-preferences](https://devcenter.heroku.com/articles/platform-api-reference#user-preferences) + * Tracks a user's preferences and message dismissals + */ +export interface UserPreferences { + /** + * User's default timezone + * + * @example "UTC" + */ + timezone: string | null; + /** + * User's default team + * + * @example "sushi-inc" + */ + 'default-organization': string | null; + /** + * Whether the user has dismissed the GitHub link banner + * + * @example true + */ + 'dismissed-github-banner': boolean | null; + /** + * Whether the user has dismissed the getting started banner + * + * @example true + */ + 'dismissed-getting-started': boolean | null; + /** + * Whether the user has dismissed the Organization Access Controls banner + * + * @example true + */ + 'dismissed-org-access-controls': boolean | null; + /** + * Whether the user has dismissed the Organization Wizard + * + * @example true + */ + 'dismissed-org-wizard-notification': boolean | null; + /** + * Whether the user has dismissed the Pipelines banner + * + * @example true + */ + 'dismissed-pipelines-banner': boolean | null; + /** + * Whether the user has dismissed the GitHub banner on a pipeline overview + * + * @example true + */ + 'dismissed-pipelines-github-banner': boolean | null; + /** + * Which pipeline uuids the user has dismissed the GitHub banner for + * + * @example ["96c68759-f310-4910-9867-e0b062064098"] + */ + 'dismissed-pipelines-github-banners': null | string[]; + /** + * Whether the user has dismissed the 2FA SMS banner + * + * @example true + */ + 'dismissed-sms-banner': boolean | null; +} +export interface UserPreferencesUpdatePayload { + /** + * User's default timezone + * + * @example "UTC" + */ + timezone?: string | null; + /** + * User's default team + * + * @example "sushi-inc" + */ + 'default-organization'?: string | null; + /** + * Whether the user has dismissed the GitHub link banner + * + * @example true + */ + 'dismissed-github-banner'?: boolean | null; + /** + * Whether the user has dismissed the getting started banner + * + * @example true + */ + 'dismissed-getting-started'?: boolean | null; + /** + * Whether the user has dismissed the Organization Access Controls banner + * + * @example true + */ + 'dismissed-org-access-controls'?: boolean | null; + /** + * Whether the user has dismissed the Organization Wizard + * + * @example true + */ + 'dismissed-org-wizard-notification'?: boolean | null; + /** + * Whether the user has dismissed the Pipelines banner + * + * @example true + */ + 'dismissed-pipelines-banner'?: boolean | null; + /** + * Whether the user has dismissed the GitHub banner on a pipeline overview + * + * @example true + */ + 'dismissed-pipelines-github-banner'?: boolean | null; + /** + * Which pipeline uuids the user has dismissed the GitHub banner for + * + * @example ["96c68759-f310-4910-9867-e0b062064098"] + */ + 'dismissed-pipelines-github-banners'?: null | string[]; + /** + * Whether the user has dismissed the 2FA SMS banner + * + * @example true + */ + 'dismissed-sms-banner'?: boolean | null; +} +/** + * + * [Heroku Platform API - vpn-connection](https://devcenter.heroku.com/articles/platform-api-reference#vpn-connection) + * [VPN](https://devcenter.heroku.com/articles/private-space-vpn-connection) provides a way to connect your Private Spaces to your network via VPN. + */ +export interface VpnConnection { + /** + * VPN ID + * + * @example "123456789012" + */ + readonly id: string; + /** + * VPN Name + * + * @example "office" + */ + name: string; + /** + * Public IP of VPN customer gateway + * + * @example "35.161.69.30" + */ + public_ip: string; + /** + * Routable CIDRs of VPN + */ + routable_cidrs: string[]; + /** + * CIDR Block of the Private Space + * + * @example "10.0.0.0/16" + */ + readonly space_cidr_block: string; + tunnels: Tunnel[]; + /** + * IKE Version + * + * @example 1 + */ + readonly ike_version: number; + /** + * Status of the VPN + * + * @example "active" + */ + readonly status: 'pending' | 'provisioning' | 'active' | 'deprovisioning' | 'failed'; + /** + * Details of the status + * + * @example "supplied CIDR block already in use" + */ + readonly status_message: string; +} +/** + * + * Tunnel info + */ +export interface Tunnel { + /** + * Timestamp of last status changed + * + * @example "2016-10-25T22:09:05Z" + */ + last_status_change?: string; + /** + * Public IP address for the tunnel + * + * @example "52.44.146.197" + */ + ip?: string; + /** + * Public IP address for the customer side of the tunnel + * + * @example "52.44.146.197" + */ + customer_ip?: string; + /** + * Pre-shared key + * + * @example "secret" + */ + pre_shared_key?: string; + /** + * Status of the tunnel + * + * @example "UP" + */ + status?: 'UP' | 'DOWN'; + /** + * Details of the status + * + * @example "status message" + */ + status_message?: string; +} +export interface VpnConnectionCreatePayload { + /** + * VPN Name + * + * @example "office" + */ + name: string; + /** + * Public IP of VPN customer gateway + * + * @example "35.161.69.30" + */ + public_ip: string; + /** + * Routable CIDRs of VPN + */ + routable_cidrs: string[]; +} +export interface VpnConnectionUpdatePayload { + /** + * Routable CIDRs of VPN + */ + routable_cidrs: string[]; +} +/** + * + * [Heroku Platform API - generation](https://devcenter.heroku.com/articles/platform-api-reference#generation) + * Generations are the different application execution environments available in the Heroku platform. + */ +export interface Generation { + /** + * when generation was introduced + * + * @example "2012-01-01T12:00:00Z" + */ + readonly created_at: string; + /** + * unique identifier of generation + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id: string; + /** + * unique name of generation + * + * @example "fir" + */ + readonly name: string; + /** + * when generation was last modified + * + * @example "2012-01-01T12:00:00Z" + */ + readonly updated_at: string; + /** + * features unsupported by this generation + */ + unsupported_features: string[] | null; +} +/** + * + * [Heroku Platform API - stack](https://devcenter.heroku.com/articles/platform-api-reference#stack) + * stack associated to the OCI image + */ +export interface OciImageStack { + /** + * unique identifier of stack + * + * @example "01234567-89ab-cdef-0123-456789abcdef" + */ + readonly id?: string; + /** + * unique name of stack + * + * @example "heroku-18" + */ + readonly name?: string; +} +export interface OciImageCreatePayload { + /** + * build architecture for OCI image + * + * @example "arm64" + */ + architecture?: string | null; + /** + * name of the image used for the base layers of the OCI image + * + * @example "heroku/heroku:22-cnb" + */ + base_image_name?: string; + /** + * the digest of the top most layer of the base image. Used for rebase seam + * + * @example "sha256:ea36ae5fbc1e7230e0a782bf216fb46500e210382703baa6bab8acf2c6a23f78" + */ + base_top_layer?: string; + /** + * identification of the code in your version control system (eg: SHA of the git HEAD) + * + * @example "60883d9e8947a57e04dc9124f25df004866a2051" + */ + commit?: string; + /** + * an optional description of the provided commit + * + * @example "fixed a bug with API documentation" + */ + commit_description?: string; + /** + * name of the image registry repository used for storage + * + * @example "d7ba1ace-b396-4691-968c-37ae53153426/builds" + */ + image_repo?: string; + /** + * uniquely identifies the content of the OCI image (consisting of an algorithm portion and an encoded portion) + * + * @example "sha256:dc14ae5fbc1e7230e0a782bf216fb46500e210631703bcc6bab8acf2c6a23f42" + */ + digest?: string; + /** + * unique name of stack or unique identifier of stack + */ + stack?: string; + /** + * process types of the OCI image + * + * @example {"web":{"name":"web","display_cmd":"bundle exec puma -p $PORT","command":"/cnb/process/web","working_dir":"/workspace/webapp","default":true}} + */ + process_types?: Record; + /** + * buildpacks of the OCI image + */ + buildpacks?: Buildpack[]; +} From 07c1e8813bf057b1ca5fe08c03b82fbdff4ce0e9 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 10 Oct 2024 09:26:17 -0700 Subject: [PATCH 03/67] chore: Update oclif cli to 4.14 (#3032) * Update oclif cli to 4.11 * Update to 4.14 --- package.json | 2 +- packages/cli/package.json | 2 +- yarn.lock | 4251 +++++++++++++------------------------ 3 files changed, 1537 insertions(+), 2718 deletions(-) diff --git a/package.json b/package.json index 8ff897654d..98d7b5f9dd 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "husky": "8.0.3", "lerna": "^6.4.1", "mkdirp": "^0.5.2", - "oclif": "4.4.7", + "oclif": "4.14.36", "promise-request-retry": "^1.0.2", "qqjs": "0.3.11", "standard": "17.1.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index 1913530a30..ab3cd06007 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -121,7 +121,7 @@ "mocha": "^9.2.2", "nock": "^13.5.1", "nyc": "^15.1.0", - "oclif": "4.4.7", + "oclif": "4.14.36", "proxyquire": "^2.1.0", "qqjs": "0.3.11", "read-pkg": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index 72e5af50f1..86fe5c72c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41,677 +41,676 @@ __metadata: languageName: node linkType: hard -"@aws-crypto/crc32@npm:3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/crc32@npm:3.0.0" +"@aws-crypto/crc32@npm:5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/crc32@npm:5.2.0" dependencies: - "@aws-crypto/util": ^3.0.0 + "@aws-crypto/util": ^5.2.0 "@aws-sdk/types": ^3.222.0 - tslib: ^1.11.1 - checksum: 9fdb3e837fc54119b017ea34fd0a6d71d2c88075d99e1e818a5158e0ad30ced67ddbcc423a11ceeef6cc465ab5ffd91830acab516470b48237ca7abd51be9642 + tslib: ^2.6.2 + checksum: 1ddf7ec3fccf106205ff2476d90ae1d6625eabd47752f689c761b71e41fe451962b7a1c9ed25fe54e17dd747a62fbf4de06030fe56fe625f95285f6f70b96c57 languageName: node linkType: hard -"@aws-crypto/crc32c@npm:3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/crc32c@npm:3.0.0" +"@aws-crypto/crc32c@npm:5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/crc32c@npm:5.2.0" dependencies: - "@aws-crypto/util": ^3.0.0 + "@aws-crypto/util": ^5.2.0 "@aws-sdk/types": ^3.222.0 - tslib: ^1.11.1 - checksum: 0a116b5d1c5b09a3dde65aab04a07b32f543e87b68f2d175081e3f4a1a17502343f223d691dd883ace1ddce65cd40093673e7c7415dcd99062202ba87ffb4038 - languageName: node - linkType: hard - -"@aws-crypto/ie11-detection@npm:^3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/ie11-detection@npm:3.0.0" - dependencies: - tslib: ^1.11.1 - checksum: 299b2ddd46eddac1f2d54d91386ceb37af81aef8a800669281c73d634ed17fd855dcfb8b3157f2879344b93a2666a6d602550eb84b71e4d7868100ad6da8f803 + tslib: ^2.6.2 + checksum: 0b399de8607c59e1e46c05d2b24a16b56d507944fdac925c611f0ba7302f5555c098139806d7da1ebef1f89bf4e4b5d4dec74d4809ce0f18238b72072065effe languageName: node linkType: hard -"@aws-crypto/sha1-browser@npm:3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/sha1-browser@npm:3.0.0" +"@aws-crypto/sha1-browser@npm:5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/sha1-browser@npm:5.2.0" dependencies: - "@aws-crypto/ie11-detection": ^3.0.0 - "@aws-crypto/supports-web-crypto": ^3.0.0 - "@aws-crypto/util": ^3.0.0 + "@aws-crypto/supports-web-crypto": ^5.2.0 + "@aws-crypto/util": ^5.2.0 "@aws-sdk/types": ^3.222.0 "@aws-sdk/util-locate-window": ^3.0.0 - "@aws-sdk/util-utf8-browser": ^3.0.0 - tslib: ^1.11.1 - checksum: 78c379e105a0c4e7b2ed745dffd8f55054d7dde8b350b61de682bbc3cd081a50e2f87861954fa9cd53c7ea711ebca1ca0137b14cb36483efc971f60f573cf129 + "@smithy/util-utf8": ^2.0.0 + tslib: ^2.6.2 + checksum: 8b04af601d945c5ef0f5f733b55681edc95b81c02ce5067b57f1eb4ee718e45485cf9aeeb7a84da9131656d09e1c4bc78040ec759f557a46703422d8df098d59 languageName: node linkType: hard -"@aws-crypto/sha256-browser@npm:3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/sha256-browser@npm:3.0.0" +"@aws-crypto/sha256-browser@npm:5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/sha256-browser@npm:5.2.0" dependencies: - "@aws-crypto/ie11-detection": ^3.0.0 - "@aws-crypto/sha256-js": ^3.0.0 - "@aws-crypto/supports-web-crypto": ^3.0.0 - "@aws-crypto/util": ^3.0.0 + "@aws-crypto/sha256-js": ^5.2.0 + "@aws-crypto/supports-web-crypto": ^5.2.0 + "@aws-crypto/util": ^5.2.0 "@aws-sdk/types": ^3.222.0 "@aws-sdk/util-locate-window": ^3.0.0 - "@aws-sdk/util-utf8-browser": ^3.0.0 - tslib: ^1.11.1 - checksum: ca89456bf508db2e08060a7f656460db97ac9a15b11e39d6fa7665e2b156508a1758695bff8e82d0a00178d6ac5c36f35eb4bcfac2e48621265224ca14a19bd2 + "@smithy/util-utf8": ^2.0.0 + tslib: ^2.6.2 + checksum: 773f12f2026d82a6bb4a23a8f491894a6d32525bd9b8bfbc12896526cf11882a7607a671c478c45f9cd7d6ba1caaed48a62b67c6f725244bd83a1275108f46c7 languageName: node linkType: hard -"@aws-crypto/sha256-js@npm:3.0.0, @aws-crypto/sha256-js@npm:^3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/sha256-js@npm:3.0.0" +"@aws-crypto/sha256-js@npm:5.2.0, @aws-crypto/sha256-js@npm:^5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/sha256-js@npm:5.2.0" dependencies: - "@aws-crypto/util": ^3.0.0 + "@aws-crypto/util": ^5.2.0 "@aws-sdk/types": ^3.222.0 - tslib: ^1.11.1 - checksum: 644ded32ea310237811afae873d3c7320739cb6f6cc39dced9c94801379e68e5ee2cca0c34f0384793fa9e750a7e0a5e2468f95754bd08e6fd72ab833c8fe23c + tslib: ^2.6.2 + checksum: 007fbe0436d714d0d0d282e2b61c90e45adcb9ad75eac9ac7ba03d32b56624afd09b2a9ceb4d659661cf17c51d74d1900ab6b00eacafc002da1101664955ca53 languageName: node linkType: hard -"@aws-crypto/supports-web-crypto@npm:^3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/supports-web-crypto@npm:3.0.0" +"@aws-crypto/supports-web-crypto@npm:^5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/supports-web-crypto@npm:5.2.0" dependencies: - tslib: ^1.11.1 - checksum: 35479a1558db9e9a521df6877a99f95670e972c602f2a0349303477e5d638a5baf569fb037c853710e382086e6fd77e8ed58d3fb9b49f6e1186a9d26ce7be006 + tslib: ^2.6.2 + checksum: 6ffc21de48b2b2c3e918193101d7e8fe949d47b37688892e1c39eaedaa938be80c0f404fe1c874c30cce16781026777a53bf47d5d90143ca91d0feb7c4a6f830 languageName: node linkType: hard -"@aws-crypto/util@npm:^3.0.0": - version: 3.0.0 - resolution: "@aws-crypto/util@npm:3.0.0" +"@aws-crypto/util@npm:^5.2.0": + version: 5.2.0 + resolution: "@aws-crypto/util@npm:5.2.0" dependencies: "@aws-sdk/types": ^3.222.0 - "@aws-sdk/util-utf8-browser": ^3.0.0 - tslib: ^1.11.1 - checksum: d29d5545048721aae3d60b236708535059733019a105f8a64b4e4a8eab7cf8dde1546dc56bff7de20d36140a4d1f0f4693e639c5732a7059273a7b1e56354776 - languageName: node - linkType: hard - -"@aws-sdk/client-cloudfront@npm:^3.504.0": - version: 3.507.0 - resolution: "@aws-sdk/client-cloudfront@npm:3.507.0" - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.507.0 - "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.507.0 - "@aws-sdk/middleware-host-header": 3.502.0 - "@aws-sdk/middleware-logger": 3.502.0 - "@aws-sdk/middleware-recursion-detection": 3.502.0 - "@aws-sdk/middleware-signing": 3.502.0 - "@aws-sdk/middleware-user-agent": 3.502.0 - "@aws-sdk/region-config-resolver": 3.502.0 - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-endpoints": 3.502.0 - "@aws-sdk/util-user-agent-browser": 3.502.0 - "@aws-sdk/util-user-agent-node": 3.502.0 - "@aws-sdk/xml-builder": 3.496.0 - "@smithy/config-resolver": ^2.1.1 - "@smithy/core": ^1.3.1 - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/hash-node": ^2.1.1 - "@smithy/invalid-dependency": ^2.1.1 - "@smithy/middleware-content-length": ^2.1.1 - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-retry": ^2.1.1 - "@smithy/middleware-serde": ^2.1.1 - "@smithy/middleware-stack": ^2.1.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/node-http-handler": ^2.3.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - "@smithy/util-base64": ^2.1.1 - "@smithy/util-body-length-browser": ^2.1.1 - "@smithy/util-body-length-node": ^2.2.1 - "@smithy/util-defaults-mode-browser": ^2.1.1 - "@smithy/util-defaults-mode-node": ^2.1.1 - "@smithy/util-endpoints": ^1.1.1 - "@smithy/util-retry": ^2.1.1 - "@smithy/util-stream": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - "@smithy/util-waiter": ^2.1.1 - fast-xml-parser: 4.2.5 - tslib: ^2.5.0 - checksum: dda359343bc1f5fd8c5795cb4bbb7780836d4bfe60dc20fd5eb5261c1d06a069152d4061c3f387833d61aa36de5f69482e4241128a99169de7d6492fa91394bc - languageName: node - linkType: hard - -"@aws-sdk/client-s3@npm:^3.504.0": - version: 3.507.0 - resolution: "@aws-sdk/client-s3@npm:3.507.0" - dependencies: - "@aws-crypto/sha1-browser": 3.0.0 - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.507.0 - "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.507.0 - "@aws-sdk/middleware-bucket-endpoint": 3.502.0 - "@aws-sdk/middleware-expect-continue": 3.502.0 - "@aws-sdk/middleware-flexible-checksums": 3.502.0 - "@aws-sdk/middleware-host-header": 3.502.0 - "@aws-sdk/middleware-location-constraint": 3.502.0 - "@aws-sdk/middleware-logger": 3.502.0 - "@aws-sdk/middleware-recursion-detection": 3.502.0 - "@aws-sdk/middleware-sdk-s3": 3.502.0 - "@aws-sdk/middleware-signing": 3.502.0 - "@aws-sdk/middleware-ssec": 3.502.0 - "@aws-sdk/middleware-user-agent": 3.502.0 - "@aws-sdk/region-config-resolver": 3.502.0 - "@aws-sdk/signature-v4-multi-region": 3.502.0 - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-endpoints": 3.502.0 - "@aws-sdk/util-user-agent-browser": 3.502.0 - "@aws-sdk/util-user-agent-node": 3.502.0 - "@aws-sdk/xml-builder": 3.496.0 - "@smithy/config-resolver": ^2.1.1 - "@smithy/core": ^1.3.1 - "@smithy/eventstream-serde-browser": ^2.1.1 - "@smithy/eventstream-serde-config-resolver": ^2.1.1 - "@smithy/eventstream-serde-node": ^2.1.1 - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/hash-blob-browser": ^2.1.1 - "@smithy/hash-node": ^2.1.1 - "@smithy/hash-stream-node": ^2.1.1 - "@smithy/invalid-dependency": ^2.1.1 - "@smithy/md5-js": ^2.1.1 - "@smithy/middleware-content-length": ^2.1.1 - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-retry": ^2.1.1 - "@smithy/middleware-serde": ^2.1.1 - "@smithy/middleware-stack": ^2.1.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/node-http-handler": ^2.3.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - "@smithy/util-base64": ^2.1.1 - "@smithy/util-body-length-browser": ^2.1.1 - "@smithy/util-body-length-node": ^2.2.1 - "@smithy/util-defaults-mode-browser": ^2.1.1 - "@smithy/util-defaults-mode-node": ^2.1.1 - "@smithy/util-endpoints": ^1.1.1 - "@smithy/util-retry": ^2.1.1 - "@smithy/util-stream": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - "@smithy/util-waiter": ^2.1.1 - fast-xml-parser: 4.2.5 - tslib: ^2.5.0 - checksum: d81c1b94e2f00d2bfc91e1e1c59d829aee55670031daee1bafd7297ae5e7038999237962da0cb589c869f2893dcf36704cba5ca1a864d49035d6b6e1fd0eeb44 - languageName: node - linkType: hard - -"@aws-sdk/client-sso-oidc@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.507.0" - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.507.0 - "@aws-sdk/core": 3.496.0 - "@aws-sdk/middleware-host-header": 3.502.0 - "@aws-sdk/middleware-logger": 3.502.0 - "@aws-sdk/middleware-recursion-detection": 3.502.0 - "@aws-sdk/middleware-signing": 3.502.0 - "@aws-sdk/middleware-user-agent": 3.502.0 - "@aws-sdk/region-config-resolver": 3.502.0 - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-endpoints": 3.502.0 - "@aws-sdk/util-user-agent-browser": 3.502.0 - "@aws-sdk/util-user-agent-node": 3.502.0 - "@smithy/config-resolver": ^2.1.1 - "@smithy/core": ^1.3.1 - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/hash-node": ^2.1.1 - "@smithy/invalid-dependency": ^2.1.1 - "@smithy/middleware-content-length": ^2.1.1 - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-retry": ^2.1.1 - "@smithy/middleware-serde": ^2.1.1 - "@smithy/middleware-stack": ^2.1.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/node-http-handler": ^2.3.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - "@smithy/util-base64": ^2.1.1 - "@smithy/util-body-length-browser": ^2.1.1 - "@smithy/util-body-length-node": ^2.2.1 - "@smithy/util-defaults-mode-browser": ^2.1.1 - "@smithy/util-defaults-mode-node": ^2.1.1 - "@smithy/util-endpoints": ^1.1.1 - "@smithy/util-retry": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 + "@smithy/util-utf8": ^2.0.0 + tslib: ^2.6.2 + checksum: f0f81d9d2771c59946cfec48b86cb23d39f78a966c4a1f89d4753abdc3cb38de06f907d1e6450059b121d48ac65d612ab88bdb70014553a077fc3dabddfbf8d6 + languageName: node + linkType: hard + +"@aws-sdk/client-cloudfront@npm:^3.645.0": + version: 3.668.0 + resolution: "@aws-sdk/client-cloudfront@npm:3.668.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/client-sso-oidc": 3.668.0 + "@aws-sdk/client-sts": 3.668.0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/credential-provider-node": 3.668.0 + "@aws-sdk/middleware-host-header": 3.667.0 + "@aws-sdk/middleware-logger": 3.667.0 + "@aws-sdk/middleware-recursion-detection": 3.667.0 + "@aws-sdk/middleware-user-agent": 3.668.0 + "@aws-sdk/region-config-resolver": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-endpoints": 3.667.0 + "@aws-sdk/util-user-agent-browser": 3.667.0 + "@aws-sdk/util-user-agent-node": 3.668.0 + "@aws-sdk/xml-builder": 3.662.0 + "@smithy/config-resolver": ^3.0.9 + "@smithy/core": ^2.4.8 + "@smithy/fetch-http-handler": ^3.2.9 + "@smithy/hash-node": ^3.0.7 + "@smithy/invalid-dependency": ^3.0.7 + "@smithy/middleware-content-length": ^3.0.9 + "@smithy/middleware-endpoint": ^3.1.4 + "@smithy/middleware-retry": ^3.0.23 + "@smithy/middleware-serde": ^3.0.7 + "@smithy/middleware-stack": ^3.0.7 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/node-http-handler": ^3.2.4 + "@smithy/protocol-http": ^4.1.4 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/url-parser": ^3.0.7 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-body-length-node": ^3.0.0 + "@smithy/util-defaults-mode-browser": ^3.0.23 + "@smithy/util-defaults-mode-node": ^3.0.23 + "@smithy/util-endpoints": ^2.1.3 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-retry": ^3.0.7 + "@smithy/util-stream": ^3.1.9 + "@smithy/util-utf8": ^3.0.0 + "@smithy/util-waiter": ^3.1.6 + tslib: ^2.6.2 + checksum: d7ba82fdc1f5ba035481caf0c455ed58ad3ba35e64ebfae7d2d1cf1033b93b42ea385388a0a43ae84f867e5ee7082f3f5ebb0884401cff2abe837b03c20c421e + languageName: node + linkType: hard + +"@aws-sdk/client-s3@npm:^3.651.1": + version: 3.668.0 + resolution: "@aws-sdk/client-s3@npm:3.668.0" + dependencies: + "@aws-crypto/sha1-browser": 5.2.0 + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/client-sso-oidc": 3.668.0 + "@aws-sdk/client-sts": 3.668.0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/credential-provider-node": 3.668.0 + "@aws-sdk/middleware-bucket-endpoint": 3.667.0 + "@aws-sdk/middleware-expect-continue": 3.667.0 + "@aws-sdk/middleware-flexible-checksums": 3.667.0 + "@aws-sdk/middleware-host-header": 3.667.0 + "@aws-sdk/middleware-location-constraint": 3.667.0 + "@aws-sdk/middleware-logger": 3.667.0 + "@aws-sdk/middleware-recursion-detection": 3.667.0 + "@aws-sdk/middleware-sdk-s3": 3.667.0 + "@aws-sdk/middleware-ssec": 3.667.0 + "@aws-sdk/middleware-user-agent": 3.668.0 + "@aws-sdk/region-config-resolver": 3.667.0 + "@aws-sdk/signature-v4-multi-region": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-endpoints": 3.667.0 + "@aws-sdk/util-user-agent-browser": 3.667.0 + "@aws-sdk/util-user-agent-node": 3.668.0 + "@aws-sdk/xml-builder": 3.662.0 + "@smithy/config-resolver": ^3.0.9 + "@smithy/core": ^2.4.8 + "@smithy/eventstream-serde-browser": ^3.0.10 + "@smithy/eventstream-serde-config-resolver": ^3.0.7 + "@smithy/eventstream-serde-node": ^3.0.9 + "@smithy/fetch-http-handler": ^3.2.9 + "@smithy/hash-blob-browser": ^3.1.6 + "@smithy/hash-node": ^3.0.7 + "@smithy/hash-stream-node": ^3.1.6 + "@smithy/invalid-dependency": ^3.0.7 + "@smithy/md5-js": ^3.0.7 + "@smithy/middleware-content-length": ^3.0.9 + "@smithy/middleware-endpoint": ^3.1.4 + "@smithy/middleware-retry": ^3.0.23 + "@smithy/middleware-serde": ^3.0.7 + "@smithy/middleware-stack": ^3.0.7 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/node-http-handler": ^3.2.4 + "@smithy/protocol-http": ^4.1.4 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/url-parser": ^3.0.7 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-body-length-node": ^3.0.0 + "@smithy/util-defaults-mode-browser": ^3.0.23 + "@smithy/util-defaults-mode-node": ^3.0.23 + "@smithy/util-endpoints": ^2.1.3 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-retry": ^3.0.7 + "@smithy/util-stream": ^3.1.9 + "@smithy/util-utf8": ^3.0.0 + "@smithy/util-waiter": ^3.1.6 + tslib: ^2.6.2 + checksum: 8de4bf7973657cc8e98b854971b59f47003fe854ad6d49ab3a97ac4dacb95f830a615aac43e11cc9e6e1536227325ca796a3f3e4a9cf59e33be8a26592957d01 + languageName: node + linkType: hard + +"@aws-sdk/client-sso-oidc@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.668.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/credential-provider-node": 3.668.0 + "@aws-sdk/middleware-host-header": 3.667.0 + "@aws-sdk/middleware-logger": 3.667.0 + "@aws-sdk/middleware-recursion-detection": 3.667.0 + "@aws-sdk/middleware-user-agent": 3.668.0 + "@aws-sdk/region-config-resolver": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-endpoints": 3.667.0 + "@aws-sdk/util-user-agent-browser": 3.667.0 + "@aws-sdk/util-user-agent-node": 3.668.0 + "@smithy/config-resolver": ^3.0.9 + "@smithy/core": ^2.4.8 + "@smithy/fetch-http-handler": ^3.2.9 + "@smithy/hash-node": ^3.0.7 + "@smithy/invalid-dependency": ^3.0.7 + "@smithy/middleware-content-length": ^3.0.9 + "@smithy/middleware-endpoint": ^3.1.4 + "@smithy/middleware-retry": ^3.0.23 + "@smithy/middleware-serde": ^3.0.7 + "@smithy/middleware-stack": ^3.0.7 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/node-http-handler": ^3.2.4 + "@smithy/protocol-http": ^4.1.4 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/url-parser": ^3.0.7 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-body-length-node": ^3.0.0 + "@smithy/util-defaults-mode-browser": ^3.0.23 + "@smithy/util-defaults-mode-node": ^3.0.23 + "@smithy/util-endpoints": ^2.1.3 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-retry": ^3.0.7 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 peerDependencies: - "@aws-sdk/credential-provider-node": ^3.507.0 - checksum: e85da9c9f2eb791c866dd767aa9942ac2e4f9f957185503032f8ae964c066bef6cae258d8075e442cf41333117e3bc73c1d8d1c2625ba76c569d0d42d5d48409 - languageName: node - linkType: hard - -"@aws-sdk/client-sso@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/client-sso@npm:3.507.0" - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/core": 3.496.0 - "@aws-sdk/middleware-host-header": 3.502.0 - "@aws-sdk/middleware-logger": 3.502.0 - "@aws-sdk/middleware-recursion-detection": 3.502.0 - "@aws-sdk/middleware-user-agent": 3.502.0 - "@aws-sdk/region-config-resolver": 3.502.0 - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-endpoints": 3.502.0 - "@aws-sdk/util-user-agent-browser": 3.502.0 - "@aws-sdk/util-user-agent-node": 3.502.0 - "@smithy/config-resolver": ^2.1.1 - "@smithy/core": ^1.3.1 - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/hash-node": ^2.1.1 - "@smithy/invalid-dependency": ^2.1.1 - "@smithy/middleware-content-length": ^2.1.1 - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-retry": ^2.1.1 - "@smithy/middleware-serde": ^2.1.1 - "@smithy/middleware-stack": ^2.1.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/node-http-handler": ^2.3.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - "@smithy/util-base64": ^2.1.1 - "@smithy/util-body-length-browser": ^2.1.1 - "@smithy/util-body-length-node": ^2.2.1 - "@smithy/util-defaults-mode-browser": ^2.1.1 - "@smithy/util-defaults-mode-node": ^2.1.1 - "@smithy/util-endpoints": ^1.1.1 - "@smithy/util-retry": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 - checksum: e5ede601b02c6fb33c9a6d93c0dfffb9b7b2631f601f323c3cf8594e9d472a55024a0345b33d213b5fa8940f685788080233b38d62cf7602c39fceae45d0b36a - languageName: node - linkType: hard - -"@aws-sdk/client-sts@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/client-sts@npm:3.507.0" - dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/core": 3.496.0 - "@aws-sdk/middleware-host-header": 3.502.0 - "@aws-sdk/middleware-logger": 3.502.0 - "@aws-sdk/middleware-recursion-detection": 3.502.0 - "@aws-sdk/middleware-user-agent": 3.502.0 - "@aws-sdk/region-config-resolver": 3.502.0 - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-endpoints": 3.502.0 - "@aws-sdk/util-user-agent-browser": 3.502.0 - "@aws-sdk/util-user-agent-node": 3.502.0 - "@smithy/config-resolver": ^2.1.1 - "@smithy/core": ^1.3.1 - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/hash-node": ^2.1.1 - "@smithy/invalid-dependency": ^2.1.1 - "@smithy/middleware-content-length": ^2.1.1 - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-retry": ^2.1.1 - "@smithy/middleware-serde": ^2.1.1 - "@smithy/middleware-stack": ^2.1.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/node-http-handler": ^2.3.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - "@smithy/util-base64": ^2.1.1 - "@smithy/util-body-length-browser": ^2.1.1 - "@smithy/util-body-length-node": ^2.2.1 - "@smithy/util-defaults-mode-browser": ^2.1.1 - "@smithy/util-defaults-mode-node": ^2.1.1 - "@smithy/util-endpoints": ^1.1.1 - "@smithy/util-middleware": ^2.1.1 - "@smithy/util-retry": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - fast-xml-parser: 4.2.5 - tslib: ^2.5.0 + "@aws-sdk/client-sts": ^3.668.0 + checksum: cc74edf7b530183f48a93ecc8ca1d8dad48669da4117a78c98906dd6b5791f7f8f2dad3699a80ab9d0cbe60c56758399d858b31d6f5d98c37e216ded468ff810 + languageName: node + linkType: hard + +"@aws-sdk/client-sso@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/client-sso@npm:3.668.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/middleware-host-header": 3.667.0 + "@aws-sdk/middleware-logger": 3.667.0 + "@aws-sdk/middleware-recursion-detection": 3.667.0 + "@aws-sdk/middleware-user-agent": 3.668.0 + "@aws-sdk/region-config-resolver": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-endpoints": 3.667.0 + "@aws-sdk/util-user-agent-browser": 3.667.0 + "@aws-sdk/util-user-agent-node": 3.668.0 + "@smithy/config-resolver": ^3.0.9 + "@smithy/core": ^2.4.8 + "@smithy/fetch-http-handler": ^3.2.9 + "@smithy/hash-node": ^3.0.7 + "@smithy/invalid-dependency": ^3.0.7 + "@smithy/middleware-content-length": ^3.0.9 + "@smithy/middleware-endpoint": ^3.1.4 + "@smithy/middleware-retry": ^3.0.23 + "@smithy/middleware-serde": ^3.0.7 + "@smithy/middleware-stack": ^3.0.7 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/node-http-handler": ^3.2.4 + "@smithy/protocol-http": ^4.1.4 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/url-parser": ^3.0.7 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-body-length-node": ^3.0.0 + "@smithy/util-defaults-mode-browser": ^3.0.23 + "@smithy/util-defaults-mode-node": ^3.0.23 + "@smithy/util-endpoints": ^2.1.3 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-retry": ^3.0.7 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: ed4df5a48b1465b24832897314fc6ba0f1d433de8c7e36ef77f3a445fc55d29d01020a4f2e4489f16dbd26ed0982261bb2545ec142d3393a5ec36ebdcea45add + languageName: node + linkType: hard + +"@aws-sdk/client-sts@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/client-sts@npm:3.668.0" + dependencies: + "@aws-crypto/sha256-browser": 5.2.0 + "@aws-crypto/sha256-js": 5.2.0 + "@aws-sdk/client-sso-oidc": 3.668.0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/credential-provider-node": 3.668.0 + "@aws-sdk/middleware-host-header": 3.667.0 + "@aws-sdk/middleware-logger": 3.667.0 + "@aws-sdk/middleware-recursion-detection": 3.667.0 + "@aws-sdk/middleware-user-agent": 3.668.0 + "@aws-sdk/region-config-resolver": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-endpoints": 3.667.0 + "@aws-sdk/util-user-agent-browser": 3.667.0 + "@aws-sdk/util-user-agent-node": 3.668.0 + "@smithy/config-resolver": ^3.0.9 + "@smithy/core": ^2.4.8 + "@smithy/fetch-http-handler": ^3.2.9 + "@smithy/hash-node": ^3.0.7 + "@smithy/invalid-dependency": ^3.0.7 + "@smithy/middleware-content-length": ^3.0.9 + "@smithy/middleware-endpoint": ^3.1.4 + "@smithy/middleware-retry": ^3.0.23 + "@smithy/middleware-serde": ^3.0.7 + "@smithy/middleware-stack": ^3.0.7 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/node-http-handler": ^3.2.4 + "@smithy/protocol-http": ^4.1.4 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/url-parser": ^3.0.7 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-body-length-node": ^3.0.0 + "@smithy/util-defaults-mode-browser": ^3.0.23 + "@smithy/util-defaults-mode-node": ^3.0.23 + "@smithy/util-endpoints": ^2.1.3 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-retry": ^3.0.7 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: dae0500287ae7a83ce98e06ec904914ab2c9c51b948d0111b2921ff3416b3035ec12ca576c10fa1cc46d73b5fe23ad32277579c64f20ff1a10b3cfec4cb5b033 + languageName: node + linkType: hard + +"@aws-sdk/core@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/core@npm:3.667.0" + dependencies: + "@aws-sdk/types": 3.667.0 + "@smithy/core": ^2.4.8 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/property-provider": ^3.1.7 + "@smithy/protocol-http": ^4.1.4 + "@smithy/signature-v4": ^4.2.0 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/util-middleware": ^3.0.7 + fast-xml-parser: 4.4.1 + tslib: ^2.6.2 + checksum: da4d0e3971e88d2dc72214ea04f95f35e4e03f6323f3bc438e378cd479816d5ee3aa8fd224778639803d344691edd6fac2096b26bda337afdaba8abcee3bd40c + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-env@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.667.0" + dependencies: + "@aws-sdk/core": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/property-provider": ^3.1.7 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: d077c5370ba5a90e11e0722d4a7820c8075a610bd099c519b710a58fc1770ecd2ad3a401b00d4467016c215df293e08a25ff798f42deb7bab8a559eca2fff245 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-http@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.667.0" + dependencies: + "@aws-sdk/core": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/fetch-http-handler": ^3.2.9 + "@smithy/node-http-handler": ^3.2.4 + "@smithy/property-provider": ^3.1.7 + "@smithy/protocol-http": ^4.1.4 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/util-stream": ^3.1.9 + tslib: ^2.6.2 + checksum: 9f300ca39a607e10c6b79f374de6e306dabe54ceab527b898bcd205b6b7225e01f03dc888c9b4258aadf4b6d786547fc599787a246eb797c3e80044c7ea9cf09 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-ini@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.668.0" + dependencies: + "@aws-sdk/core": 3.667.0 + "@aws-sdk/credential-provider-env": 3.667.0 + "@aws-sdk/credential-provider-http": 3.667.0 + "@aws-sdk/credential-provider-process": 3.667.0 + "@aws-sdk/credential-provider-sso": 3.668.0 + "@aws-sdk/credential-provider-web-identity": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/credential-provider-imds": ^3.2.4 + "@smithy/property-provider": ^3.1.7 + "@smithy/shared-ini-file-loader": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 peerDependencies: - "@aws-sdk/credential-provider-node": ^3.507.0 - checksum: f00584e210e99836457814c15c5796c4014117277d564f0eb7d2b98b18af5c5bd6f7df6925aa7f295fa9ac0a263c2d9d49bb8e23e583569074449a2fb3d15ed1 - languageName: node - linkType: hard - -"@aws-sdk/core@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/core@npm:3.496.0" - dependencies: - "@smithy/core": ^1.3.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/signature-v4": ^2.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 6c83bc1092dbbf63e55d8df6630873f9088301b18a258866fa45e1b0aff8d90e77528612467e0cf3dcc24413f978762d8232e23f725c2a5385c7cb345464b178 - languageName: node - linkType: hard - -"@aws-sdk/credential-provider-env@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.502.0" - dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/property-provider": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 9a638955f1fc6bd07c6fe9c749cfea42867b4baf87caa8228e1203f856c989adac235ca1ee5c236d4819c973c44723f46e65bbc957843f025f40c6e24f69d65e - languageName: node - linkType: hard - -"@aws-sdk/credential-provider-http@npm:3.503.1": - version: 3.503.1 - resolution: "@aws-sdk/credential-provider-http@npm:3.503.1" - dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/node-http-handler": ^2.3.1 - "@smithy/property-provider": ^2.1.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/util-stream": ^2.1.1 - tslib: ^2.5.0 - checksum: c4a6f7fc06a11071987ed803a4ce40c52ad077cbdd0171161030ecb157a76710e1bc95bb9c36acc4f01d32ab82c4c11620bb843d88c61027c011361205537bea - languageName: node - linkType: hard - -"@aws-sdk/credential-provider-ini@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.507.0" - dependencies: - "@aws-sdk/client-sts": 3.507.0 - "@aws-sdk/credential-provider-env": 3.502.0 - "@aws-sdk/credential-provider-process": 3.502.0 - "@aws-sdk/credential-provider-sso": 3.507.0 - "@aws-sdk/credential-provider-web-identity": 3.507.0 - "@aws-sdk/types": 3.502.0 - "@smithy/credential-provider-imds": ^2.2.1 - "@smithy/property-provider": ^2.1.1 - "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: b07df1a5f9e157d2fe49a44fd2c90564c8f3ab5543f70769a39e5d155e2ea21b3e793cfc84388e773c8d1d5d442bb1df64fa38fd223a8333f2c58f45ed2c8494 - languageName: node - linkType: hard - -"@aws-sdk/credential-provider-node@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.507.0" - dependencies: - "@aws-sdk/credential-provider-env": 3.502.0 - "@aws-sdk/credential-provider-http": 3.503.1 - "@aws-sdk/credential-provider-ini": 3.507.0 - "@aws-sdk/credential-provider-process": 3.502.0 - "@aws-sdk/credential-provider-sso": 3.507.0 - "@aws-sdk/credential-provider-web-identity": 3.507.0 - "@aws-sdk/types": 3.502.0 - "@smithy/credential-provider-imds": ^2.2.1 - "@smithy/property-provider": ^2.1.1 - "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 56f3040d214471f821bd024e1e73cead7a0c1cc0ead42598e4800fc2a146b077a834969a1ba47d81418f95709bf17a6b23e443f2e12b908d4625becae5a7d9ac + "@aws-sdk/client-sts": ^3.668.0 + checksum: 4faf14681971872d5a8400e4a518aaa8e4659e54c6adec4cfc0c59a30448061ba95b6d8b120d8535aecf11a8b4bbccde6bf5dbb5a16ff927f287f3c14214ba65 languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.502.0" +"@aws-sdk/credential-provider-node@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.668.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/property-provider": ^2.1.1 - "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 418a22b5ab08d73b68246e9abc79ebbdc93ca84319dff21f2354af93b157cf798551e7c47a123f9c65e18b2fd1f88987be451914e544b9f74ae5fcdf7fed0437 + "@aws-sdk/credential-provider-env": 3.667.0 + "@aws-sdk/credential-provider-http": 3.667.0 + "@aws-sdk/credential-provider-ini": 3.668.0 + "@aws-sdk/credential-provider-process": 3.667.0 + "@aws-sdk/credential-provider-sso": 3.668.0 + "@aws-sdk/credential-provider-web-identity": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/credential-provider-imds": ^3.2.4 + "@smithy/property-provider": ^3.1.7 + "@smithy/shared-ini-file-loader": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 31b2e9e4e256feab3717a1be53d179389bef5229aac952bd21af3e681095d3cb743b5b06f0594a0dc363d8c790854152c9bbf66ece83f83a7f4d7ba0c914a071 languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.507.0" +"@aws-sdk/credential-provider-process@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.667.0" dependencies: - "@aws-sdk/client-sso": 3.507.0 - "@aws-sdk/token-providers": 3.507.0 - "@aws-sdk/types": 3.502.0 - "@smithy/property-provider": ^2.1.1 - "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 2bfbd29ea3650c25794ca6054fd93da51ecb59ae64515fc8257ccb17a6b4ade6fcf615f86b042169b57255305b4fb2892961c2ddae52c21e3b47f90c69f1b0b0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/property-provider": ^3.1.7 + "@smithy/shared-ini-file-loader": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: eab090d81ca09ca690e94f4a37a81c20479b3099c25f410684610de707d17ee8dc20750a3bdd0c7c5eaec1d843313acee3e2a260aed37c1379cf0d36b7044f36 languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.507.0" +"@aws-sdk/credential-provider-sso@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.668.0" dependencies: - "@aws-sdk/client-sts": 3.507.0 - "@aws-sdk/types": 3.502.0 - "@smithy/property-provider": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: dc06ce47e00d1688e9297a2b7fdbe763ac0738325ebdb9779caa4d44914fb378b9381505ddb5fc30d44b68764bc3459481417cf7a8def7e96d9437b72d8649d0 + "@aws-sdk/client-sso": 3.668.0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/token-providers": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/property-provider": ^3.1.7 + "@smithy/shared-ini-file-loader": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: b84ebe583d68e647030b16460f2576b1f498c7c9f7b1f8bee2011574dc239b570fc79df73ebb92f2d55f174efe732a1b39b8326990fb83ac0e463b7fb9e2352a languageName: node linkType: hard -"@aws-sdk/middleware-bucket-endpoint@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.502.0" +"@aws-sdk/credential-provider-web-identity@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-arn-parser": 3.495.0 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - "@smithy/util-config-provider": ^2.2.1 - tslib: ^2.5.0 - checksum: cb1f7e61ada2340d62efcfe7e90814f32dbb983139844a00859d767f09cd8201c4b92b9afd5b391e8ca1b5c8318bb998ab93c5bb7baa4cdbe6bfc2cc021cbb66 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/property-provider": ^3.1.7 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-sts": ^3.667.0 + checksum: 02dff83f72a7d4a2ab4c763ae0c73a8b3d8c4cff89b10d8015d08db2699638babb0458280c60799bef69efce509c3c94ad6e69a041a0df25bc15bd05be1500dc languageName: node linkType: hard -"@aws-sdk/middleware-expect-continue@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-expect-continue@npm:3.502.0" +"@aws-sdk/middleware-bucket-endpoint@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: ef05feafa08721790f969518ceebd6bc78221732557747821665f5148dc979b32820c8c6158feea1cc696c38a1d55c4ab9e835aba3d8ffe84113ea1f0a4df934 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-arn-parser": 3.568.0 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + "@smithy/util-config-provider": ^3.0.0 + tslib: ^2.6.2 + checksum: b67c9438fc574848691072e8f22003d600818489dd066183f5d39243eeae6863170b7c2cfbed0fba16864e2fc6a3198cd23a916faa00086014600c5832b9c954 languageName: node linkType: hard -"@aws-sdk/middleware-flexible-checksums@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.502.0" +"@aws-sdk/middleware-expect-continue@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-expect-continue@npm:3.667.0" dependencies: - "@aws-crypto/crc32": 3.0.0 - "@aws-crypto/crc32c": 3.0.0 - "@aws-sdk/types": 3.502.0 - "@smithy/is-array-buffer": ^2.1.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 - checksum: d0615350823b8b4e3f07d4c200d7fa04313ca50c33a6caed0bd794bdde75cf758b73887fd1bf04dd64272e96a2500d2acb59fd5b8a5d828b87f7e0c514756a5f + "@aws-sdk/types": 3.667.0 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: c5da94a95ba837bfa3bddd17c9cf0be9e63b0f02fcbfd3394ecdc918f6949715847be8568e710aa5631a628b6b6f27d0ecaad23ff8917207f3ef6a948e62e68f languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.502.0" +"@aws-sdk/middleware-flexible-checksums@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 4e55ee901f31b4372a82a0ed429912d96c07369353ab914fd05a2caf1e64fc22288d4214bcec99b36eb1e9336944718267f95a9be87653baac3a7c2365b99663 + "@aws-crypto/crc32": 5.2.0 + "@aws-crypto/crc32c": 5.2.0 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/is-array-buffer": ^3.0.0 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 9a78dae8daf15795e868584df362429a10bd29ad99b01d03a4256c6edfd10e1e2fbf6e236b53d1e9c7fd506774c8bd12dd5caf8b6cf8e5fe482321ca1e28d56e languageName: node linkType: hard -"@aws-sdk/middleware-location-constraint@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-location-constraint@npm:3.502.0" +"@aws-sdk/middleware-host-header@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: fdcfb1186cb53b4587b1ca3aa73f4160b2af3643006fcd1d68b41a0acfee4a80457140eefdbaee077da826397682d012ace06faacdbc8bff288831e96a735dc2 + "@aws-sdk/types": 3.667.0 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: e545c3f2182dc6bf812ef19219850e3b86dfc72e7a596b70c6444ccccf79d6939cc1ad00c0261aaacf4cdaf7e5e1f0a17b11a5d197da467a518444172876e671 languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-logger@npm:3.502.0" +"@aws-sdk/middleware-location-constraint@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-location-constraint@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: ff8b754373c90e1c5baacf1e2f36b568602d2d1d2aa74da818516fbc6b49acd024204332cb950453b60d3f352b0e2d6c4c1f72b71662f953178a3e069a187681 + "@aws-sdk/types": 3.667.0 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: bd92e6cb7a6bf823d7ff8703b668498820634f47f503d6d854b3fc809bf7fca65cc6673b5c057c88ae45c64a2926cbe291f46ee9d8fcc6be96bbfe41409242bf languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.502.0" +"@aws-sdk/middleware-logger@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-logger@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 75a4d712b04c63d649e026fe83d252a9c825ca0500042dcd83ad3cdaa58df4c5c25d645206200cbc119f3e7e48dbdb2cccd86f255a699cfa7f8cf155acaac6e4 + "@aws-sdk/types": 3.667.0 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 47d7c9fa8f6d5cceeafe91fc35b63c9a18b57bdf289a2d44983409af61c3c52330ff6400c5d1208a250f98bda62d4c1eddb91f3f6c4f83846b10c3c35e317748 languageName: node linkType: hard -"@aws-sdk/middleware-sdk-s3@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-sdk-s3@npm:3.502.0" +"@aws-sdk/middleware-recursion-detection@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-arn-parser": 3.495.0 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/signature-v4": ^2.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/util-config-provider": ^2.2.1 - tslib: ^2.5.0 - checksum: 6d27f5a82c30a1dadaefdbc89cd3eb3e08afc1fb1c627028e2bce2ac22e12bc035ecc8fc3578322386341266c4e801ac410091f38bc6dee5274be8ac0ec5dc39 + "@aws-sdk/types": 3.667.0 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 80b4f28b76e2bba9058ebdf5d19d889f0b5b005ebae0ae7998097620b53502b7f5f8fdd5d17ae4a44a2357f83977e55e840f93255cfcb41a013de0c830553022 languageName: node linkType: hard -"@aws-sdk/middleware-signing@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-signing@npm:3.502.0" +"@aws-sdk/middleware-sdk-s3@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-sdk-s3@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/property-provider": ^2.1.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/signature-v4": ^2.1.1 - "@smithy/types": ^2.9.1 - "@smithy/util-middleware": ^2.1.1 - tslib: ^2.5.0 - checksum: b7595c3db33a62873fa29a8f08a64aca77f484035b42b5e12a8c364e2166b3dd81b1e3443bc3df5c97aaf3e00f14c2b99a8ef34cb3c132118d1e1872a74219e2 + "@aws-sdk/core": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-arn-parser": 3.568.0 + "@smithy/core": ^2.4.8 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/protocol-http": ^4.1.4 + "@smithy/signature-v4": ^4.2.0 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/util-config-provider": ^3.0.0 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-stream": ^3.1.9 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 80407de1e6a356425ced1fceeb8235107464e45add95615d9049590d413e5b483d4a3a37e6cd9e75524b952dd825a2c43daf3bb06c06b5eb989868c9707a11df languageName: node linkType: hard -"@aws-sdk/middleware-ssec@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-ssec@npm:3.502.0" +"@aws-sdk/middleware-ssec@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/middleware-ssec@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 0be54e13645bc97c130c61b09abb263def67e03382296aa020c118c672fef39359fddd997d2820ae62cbaeaa34d653ccafe0dfbb06a720e3b02d87e05b217e0f + "@aws-sdk/types": 3.667.0 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 16210a33fb0fc718b46196f3d8cd4931e04b2e09660d4c41ff95a04dbbd09f267115d7e30d29efd1e87102e515e659260714df43b89c409cd53b624767750641 languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.502.0" +"@aws-sdk/middleware-user-agent@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.668.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@aws-sdk/util-endpoints": 3.502.0 - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: a65559d5cb790af73d75400099a2d0b38857cd28f8eb9e81f9250c59bd17a1a0e4c4210aeeb94ceb67716af996bd00655de11456ff73424f50597f6f05d4622d + "@aws-sdk/core": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@aws-sdk/util-endpoints": 3.667.0 + "@smithy/core": ^2.4.8 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 43ab68954efaf3f742b6d0df747e13f4356661fb2b15a406906dba511c22fd813a4a90dab660a3ef33aac792239709f12252d3c8ad52d8d7a84d2d5925660524 languageName: node linkType: hard -"@aws-sdk/region-config-resolver@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/region-config-resolver@npm:3.502.0" +"@aws-sdk/region-config-resolver@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/types": ^2.9.1 - "@smithy/util-config-provider": ^2.2.1 - "@smithy/util-middleware": ^2.1.1 - tslib: ^2.5.0 - checksum: a13ee3502015baee3f8897a2597ea1ade556da0fcda653344e06624fd65e78fcc91a1b0b49edd4008760cb4284fb0cece1c44ea052cd4a7dca4bb01fb83bffd2 + "@aws-sdk/types": 3.667.0 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/types": ^3.5.0 + "@smithy/util-config-provider": ^3.0.0 + "@smithy/util-middleware": ^3.0.7 + tslib: ^2.6.2 + checksum: be102ae253d5c6ec934151a427e24187620a180ad7fadf17af14244e3e3dc7dd7a6c7c9c3597adc2994aa2fb4f39146749a4070b6cf96ac182f177161a0f48dc languageName: node linkType: hard -"@aws-sdk/signature-v4-multi-region@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/signature-v4-multi-region@npm:3.502.0" +"@aws-sdk/signature-v4-multi-region@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/signature-v4-multi-region@npm:3.667.0" dependencies: - "@aws-sdk/middleware-sdk-s3": 3.502.0 - "@aws-sdk/types": 3.502.0 - "@smithy/protocol-http": ^3.1.1 - "@smithy/signature-v4": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 745bab5b1daa45b30d62ec3b1939c766fcff42104539b8466245c7b5b7e538c827dd5cdd6c65dbdd8dfe1e7261bffb208729a225b242e4bb2f91df78a0c72a67 + "@aws-sdk/middleware-sdk-s3": 3.667.0 + "@aws-sdk/types": 3.667.0 + "@smithy/protocol-http": ^4.1.4 + "@smithy/signature-v4": ^4.2.0 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: b9eb0041f1d3535170eeb140ebfae21e8bfbc2fa0be0b273eea454c60dfff2f325f38c556054c0ca039c601c3a4765470a29ba4969955d0c5dce5ea838118a12 languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.507.0": - version: 3.507.0 - resolution: "@aws-sdk/token-providers@npm:3.507.0" +"@aws-sdk/token-providers@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/token-providers@npm:3.667.0" dependencies: - "@aws-sdk/client-sso-oidc": 3.507.0 - "@aws-sdk/types": 3.502.0 - "@smithy/property-provider": ^2.1.1 - "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 8d90139d9a1d2976e799b3234b723d903cbb2001acbfad658330de5a2fa5a04028e9db288780cd6d071edaf3d3890138ef7a69851e6b173433787635ac316ccf + "@aws-sdk/types": 3.667.0 + "@smithy/property-provider": ^3.1.7 + "@smithy/shared-ini-file-loader": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-sso-oidc": ^3.667.0 + checksum: cd783b95f3bbe6b33eb75abbad2ea36cec91fc2788376711a2a866e3d1f17b21313004f3e75dadd270ca41ee59f3cc57198dbf51bf222d472ccda249c47ece3b languageName: node linkType: hard -"@aws-sdk/types@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/types@npm:3.502.0" +"@aws-sdk/types@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/types@npm:3.667.0" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 11dddc2c1fb7b601adba1df6339b68367a3c77fcdd298c7ceb42541c813ba777ffc9ddfbb68633f9fd9082c883edf1b2fe3139acdf822d7d423c0b5f76ce78dd + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 54471245c8e5ba7542e2e19044b350cde965aa7ef71fcbc931e4ae2436ff620b07234d777035db6b34e5deac74ac41efaa41b6b378044d4597e7463ecff22925 languageName: node linkType: hard @@ -725,24 +724,24 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-arn-parser@npm:3.495.0": - version: 3.495.0 - resolution: "@aws-sdk/util-arn-parser@npm:3.495.0" +"@aws-sdk/util-arn-parser@npm:3.568.0": + version: 3.568.0 + resolution: "@aws-sdk/util-arn-parser@npm:3.568.0" dependencies: - tslib: ^2.5.0 - checksum: 130f1b1c0d2b9917782049693aa4ab6aec98858d6e2b46c14a3a6c4979e65073f731aec96aa0e1c04e927d0b32ad2d4a6a701e2a6d5d416c6ea35e670e4eb987 + tslib: ^2.6.2 + checksum: e3c45e5d524a772954d0a33614d397414185b9eb635423d01253cad1c1b9add625798ed9cf23343d156fae89c701f484bc062ab673f67e2e2edfe362fde6d170 languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/util-endpoints@npm:3.502.0" +"@aws-sdk/util-endpoints@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/util-endpoints@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/types": ^2.9.1 - "@smithy/util-endpoints": ^1.1.1 - tslib: ^2.5.0 - checksum: 051b519c118ef28dd49d60efc21dd3c0a2b032f8b70fdedc831e6c747bd675d51edc3913630ab86a02ecda7a3ea3ea5bec87b20c756700e65e059e2307110859 + "@aws-sdk/types": 3.667.0 + "@smithy/types": ^3.5.0 + "@smithy/util-endpoints": ^2.1.3 + tslib: ^2.6.2 + checksum: c9e2baccba71c43f52570ff0c2e522126657fadd4dba184cd9edd3d4f17bfa527728e5c4f841cedaa527cab6ad4ecc4dcc87714748785fbdeb98b29b9f4cbc24 languageName: node linkType: hard @@ -755,51 +754,43 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.502.0" +"@aws-sdk/util-user-agent-browser@npm:3.667.0": + version: 3.667.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.667.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/types": ^2.9.1 + "@aws-sdk/types": 3.667.0 + "@smithy/types": ^3.5.0 bowser: ^2.11.0 - tslib: ^2.5.0 - checksum: 89e4d26f79979f30e7b1285b4f073a65c76021b706ab5c7342e2f4e46b6a045cc353dfce9bca98c9d134e92767f1bc3270e9c485d10a0d37e9ec81c21656c2e5 + tslib: ^2.6.2 + checksum: 304094b309461b7e63f143c29e40a7da04f1f49d1ee1fba21fbea801657e5058b4ec2c756ade45dc2e55a373408b079a4426a7c42d605ac77561ca3c22f36bb5 languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.502.0" +"@aws-sdk/util-user-agent-node@npm:3.668.0": + version: 3.668.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.668.0" dependencies: - "@aws-sdk/types": 3.502.0 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 + "@aws-sdk/middleware-user-agent": 3.668.0 + "@aws-sdk/types": 3.667.0 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 peerDependencies: aws-crt: ">=1.0.0" peerDependenciesMeta: aws-crt: optional: true - checksum: b90a373d489bd34ce759acb76c91902bb2bd5991aad6a2d316d0b14c86bd7de659d85e9964111fc2e4bc76e67e19fd0d91ebe255e011c1054ca813c97992cc43 - languageName: node - linkType: hard - -"@aws-sdk/util-utf8-browser@npm:^3.0.0": - version: 3.259.0 - resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0" - dependencies: - tslib: ^2.3.1 - checksum: b6a1e580da1c9b62c749814182a7649a748ca4253edb4063aa521df97d25b76eae3359eb1680b86f71aac668e05cc05c514379bca39ebf4ba998ae4348412da8 + checksum: 159a8062e655f8846964a5ee75abc8aa6aff1b96941aee8f6690ade20d7356b75c2aa9aef07d172a6382432d57af4d8e83fe0d9e3a4c99256f213bf5f4087573 languageName: node linkType: hard -"@aws-sdk/xml-builder@npm:3.496.0": - version: 3.496.0 - resolution: "@aws-sdk/xml-builder@npm:3.496.0" +"@aws-sdk/xml-builder@npm:3.662.0": + version: 3.662.0 + resolution: "@aws-sdk/xml-builder@npm:3.662.0" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 42d9d60c1c7f8a22f6a64ac36ba9d5ccff200ce963beebb142ad4708d2486fe29b61ecb37bbccd6f0019e25107aa2327e6d8550d30214b4895e7219ccb8661c8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 4571dfe225133ccad480b20cf3f0887386e90579608b524e4e84447c1e995aea1df8d6ec0ce82e7d121ad3f0d9d94c6a85a2ce9db22440da46f3bcb3fb7351d7 languageName: node linkType: hard @@ -1584,7 +1575,7 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": +"@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 @@ -1811,6 +1802,16 @@ __metadata: languageName: node linkType: hard +"@inquirer/confirm@npm:^3.1.22, @inquirer/confirm@npm:^3.2.0": + version: 3.2.0 + resolution: "@inquirer/confirm@npm:3.2.0" + dependencies: + "@inquirer/core": ^9.1.0 + "@inquirer/type": ^1.5.3 + checksum: 6b032a26c64075dc14769558720b17f09bc6784a223bbf2c85ec42e491be6ce4c4b83518433c47e05d7e8836ba680ab1b2f6b9c553410d4326582308a1fd2259 + languageName: node + linkType: hard + "@inquirer/confirm@npm:^3.1.9": version: 3.1.9 resolution: "@inquirer/confirm@npm:3.1.9" @@ -1842,6 +1843,26 @@ __metadata: languageName: node linkType: hard +"@inquirer/core@npm:^9.1.0": + version: 9.2.1 + resolution: "@inquirer/core@npm:9.2.1" + dependencies: + "@inquirer/figures": ^1.0.6 + "@inquirer/type": ^2.0.0 + "@types/mute-stream": ^0.0.4 + "@types/node": ^22.5.5 + "@types/wrap-ansi": ^3.0.0 + ansi-escapes: ^4.3.2 + cli-width: ^4.1.0 + mute-stream: ^1.0.0 + signal-exit: ^4.1.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^6.2.0 + yoctocolors-cjs: ^2.1.2 + checksum: 681339aac03b6998e7fee1c5a0a15951e9268b7be20fd7532f180b408893f9e7203020a57d40dc78352d281f19b66222df83c68f73a125f6e1beadfa0df3920c + languageName: node + linkType: hard + "@inquirer/editor@npm:^2.1.9": version: 2.1.9 resolution: "@inquirer/editor@npm:2.1.9" @@ -1871,6 +1892,13 @@ __metadata: languageName: node linkType: hard +"@inquirer/figures@npm:^1.0.5, @inquirer/figures@npm:^1.0.6": + version: 1.0.7 + resolution: "@inquirer/figures@npm:1.0.7" + checksum: 82edc998d0ace2f147eb332177f451c02e6a4a6e829d47817f5a4b3341c12cd0850b92ee3187d483328cce5824b870ed75e868850b6ac819447b9d56501f01cb + languageName: node + linkType: hard + "@inquirer/input@npm:^2.1.9": version: 2.1.9 resolution: "@inquirer/input@npm:2.1.9" @@ -1881,6 +1909,16 @@ __metadata: languageName: node linkType: hard +"@inquirer/input@npm:^2.2.4": + version: 2.3.0 + resolution: "@inquirer/input@npm:2.3.0" + dependencies: + "@inquirer/core": ^9.1.0 + "@inquirer/type": ^1.5.3 + checksum: 5c5833050eb231e81beac3b70999c6a7b66b59809b0e60889dd0df012084ed2b28235da8025391ff26f41f4e913d89ead82f4fd92e18a9bdde5f2465416080ae + languageName: node + linkType: hard + "@inquirer/password@npm:^2.1.9": version: 2.1.9 resolution: "@inquirer/password@npm:2.1.9" @@ -1932,6 +1970,19 @@ __metadata: languageName: node linkType: hard +"@inquirer/select@npm:^2.5.0": + version: 2.5.0 + resolution: "@inquirer/select@npm:2.5.0" + dependencies: + "@inquirer/core": ^9.1.0 + "@inquirer/figures": ^1.0.5 + "@inquirer/type": ^1.5.3 + ansi-escapes: ^4.3.2 + yoctocolors-cjs: ^2.1.2 + checksum: fc7aa1a70d69f61ad2270ebfb83c059ba8d6bc749a90ae759a538acfa0ae158621f9653625f3fa7ac81072674f19013898e16598ce71a3dd2476897304832598 + languageName: node + linkType: hard + "@inquirer/type@npm:^1.3.3": version: 1.3.3 resolution: "@inquirer/type@npm:1.3.3" @@ -1939,6 +1990,24 @@ __metadata: languageName: node linkType: hard +"@inquirer/type@npm:^1.5.3": + version: 1.5.5 + resolution: "@inquirer/type@npm:1.5.5" + dependencies: + mute-stream: ^1.0.0 + checksum: 6cada82bb14519f3c71f455b08dc03c1064046fe0469aa5fce44c7ebf88a3a3d67a0cf852b0a7339476fec3b02874167f46d2c5b0964218d00273ab27ff861c5 + languageName: node + linkType: hard + +"@inquirer/type@npm:^2.0.0": + version: 2.0.0 + resolution: "@inquirer/type@npm:2.0.0" + dependencies: + mute-stream: ^1.0.0 + checksum: 0f78f84c182ef3879109a651c7b4afdc7480bc5365948cbdad7e0aa5b9713ef052761b6914b8c76c3ffeef5a8f61ef1d6d44c6c3914800e17506ecb1a8e99844 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -2965,58 +3034,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/arborist@npm:^4.0.4": - version: 4.3.1 - resolution: "@npmcli/arborist@npm:4.3.1" - dependencies: - "@isaacs/string-locale-compare": ^1.1.0 - "@npmcli/installed-package-contents": ^1.0.7 - "@npmcli/map-workspaces": ^2.0.0 - "@npmcli/metavuln-calculator": ^2.0.0 - "@npmcli/move-file": ^1.1.0 - "@npmcli/name-from-folder": ^1.0.1 - "@npmcli/node-gyp": ^1.0.3 - "@npmcli/package-json": ^1.0.1 - "@npmcli/run-script": ^2.0.0 - bin-links: ^3.0.0 - cacache: ^15.0.3 - common-ancestor-path: ^1.0.1 - json-parse-even-better-errors: ^2.3.1 - json-stringify-nice: ^1.1.4 - mkdirp: ^1.0.4 - mkdirp-infer-owner: ^2.0.0 - npm-install-checks: ^4.0.0 - npm-package-arg: ^8.1.5 - npm-pick-manifest: ^6.1.0 - npm-registry-fetch: ^12.0.1 - pacote: ^12.0.2 - parse-conflict-json: ^2.0.1 - proc-log: ^1.0.0 - promise-all-reject-late: ^1.0.0 - promise-call-limit: ^1.0.1 - read-package-json-fast: ^2.0.2 - readdir-scoped-modules: ^1.1.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - ssri: ^8.0.1 - treeverse: ^1.0.4 - walk-up-path: ^1.0.0 - bin: - arborist: bin/index.js - checksum: 51470ebb9a47c414822d1c05eda7dfef672848ddacf5734cc0575cc1a9f92cca32f17aac209d9e520424620a9ff4685db103f8b16953e2ef1823dfa2871b50e7 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^1.0.0": - version: 1.1.1 - resolution: "@npmcli/fs@npm:1.1.1" - dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: f5ad92f157ed222e4e31c352333d0901df02c7c04311e42a81d8eb555d4ec4276ea9c635011757de20cc476755af33e91622838de573b17e52e2e7703f0a9965 - languageName: node - linkType: hard - "@npmcli/fs@npm:^2.1.0": version: 2.1.2 resolution: "@npmcli/fs@npm:2.1.2" @@ -3036,22 +3053,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/git@npm:^2.1.0": - version: 2.1.0 - resolution: "@npmcli/git@npm:2.1.0" - dependencies: - "@npmcli/promise-spawn": ^1.3.2 - lru-cache: ^6.0.0 - mkdirp: ^1.0.4 - npm-pick-manifest: ^6.1.1 - promise-inflight: ^1.0.1 - promise-retry: ^2.0.1 - semver: ^7.3.5 - which: ^2.0.2 - checksum: 1f89752df7b836f378b8828423c6ae344fe59399915b9460acded19686e2d0626246251a3cd4cc411ed21c1be6fe7f0c2195c17f392e88748581262ee806dc33 - languageName: node - linkType: hard - "@npmcli/git@npm:^3.0.0": version: 3.0.2 resolution: "@npmcli/git@npm:3.0.2" @@ -3069,23 +3070,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/git@npm:^4.0.0": - version: 4.1.0 - resolution: "@npmcli/git@npm:4.1.0" - dependencies: - "@npmcli/promise-spawn": ^6.0.0 - lru-cache: ^7.4.4 - npm-pick-manifest: ^8.0.0 - proc-log: ^3.0.0 - promise-inflight: ^1.0.1 - promise-retry: ^2.0.1 - semver: ^7.3.5 - which: ^3.0.0 - checksum: 37efb926593f294eb263297cdfffec9141234f977b89a7a6b95ff7a72576c1d7f053f4961bc4b5e79dea6476fe08e0f3c1ed9e4aeb84169e357ff757a6a70073 - languageName: node - linkType: hard - -"@npmcli/installed-package-contents@npm:^1.0.6, @npmcli/installed-package-contents@npm:^1.0.7": +"@npmcli/installed-package-contents@npm:^1.0.7": version: 1.0.7 resolution: "@npmcli/installed-package-contents@npm:1.0.7" dependencies: @@ -3097,19 +3082,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/installed-package-contents@npm:^2.0.1": - version: 2.0.2 - resolution: "@npmcli/installed-package-contents@npm:2.0.2" - dependencies: - npm-bundled: ^3.0.0 - npm-normalize-package-bin: ^3.0.0 - bin: - installed-package-contents: lib/index.js - checksum: 60789d5ed209ee5df479232f62d9d38ecec36e95701cae88320b828b8651351b32d7b47d16d4c36cc7ce5000db4bf1f3e6981bed6381bdc5687ff4bc0795682d - languageName: node - linkType: hard - -"@npmcli/map-workspaces@npm:^2.0.0, @npmcli/map-workspaces@npm:^2.0.3": +"@npmcli/map-workspaces@npm:^2.0.3": version: 2.0.4 resolution: "@npmcli/map-workspaces@npm:2.0.4" dependencies: @@ -3121,18 +3094,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/metavuln-calculator@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/metavuln-calculator@npm:2.0.0" - dependencies: - cacache: ^15.0.5 - json-parse-even-better-errors: ^2.3.1 - pacote: ^12.0.0 - semver: ^7.3.2 - checksum: bf88115e7c52a5fcf9d3f06d47eeb18acb6077327ee035661b6e4c26102b5e963aa3461679a50fb54427ff4526284a8fdebc743689dd7d71d8ee3814e8f341ee - languageName: node - linkType: hard - "@npmcli/metavuln-calculator@npm:^3.0.1": version: 3.1.1 resolution: "@npmcli/metavuln-calculator@npm:3.1.1" @@ -3145,16 +3106,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/move-file@npm:^1.0.1, @npmcli/move-file@npm:^1.1.0": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 - languageName: node - linkType: hard - "@npmcli/move-file@npm:^2.0.0": version: 2.0.1 resolution: "@npmcli/move-file@npm:2.0.1" @@ -3172,13 +3123,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/node-gyp@npm:^1.0.2, @npmcli/node-gyp@npm:^1.0.3": - version: 1.0.3 - resolution: "@npmcli/node-gyp@npm:1.0.3" - checksum: 496d5eef2e90e34bb07e96adbcbbce3dba5370ae87e8c46ff5b28570848f35470c8e008b8f69e50863632783e0a9190e6f55b2e4b049c537142821153942d26a - languageName: node - linkType: hard - "@npmcli/node-gyp@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/node-gyp@npm:2.0.0" @@ -3186,22 +3130,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/node-gyp@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/node-gyp@npm:3.0.0" - checksum: fe3802b813eecb4ade7ad77c9396cb56721664275faab027e3bd8a5e15adfbbe39e2ecc19f7885feb3cfa009b96632741cc81caf7850ba74440c6a2eee7b4ffc - languageName: node - linkType: hard - -"@npmcli/package-json@npm:^1.0.1": - version: 1.0.1 - resolution: "@npmcli/package-json@npm:1.0.1" - dependencies: - json-parse-even-better-errors: ^2.3.1 - checksum: 08b66c8ddb1d6b678975a83006d2fe5070b3013bcb68ea9d54c0142538a614596ddfd1143183fbb8f82c5cecf477d98f3c4e473ef34df3bbf3814e97e37e18d3 - languageName: node - linkType: hard - "@npmcli/package-json@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/package-json@npm:2.0.0" @@ -3211,15 +3139,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/promise-spawn@npm:^1.2.0, @npmcli/promise-spawn@npm:^1.3.2": - version: 1.3.2 - resolution: "@npmcli/promise-spawn@npm:1.3.2" - dependencies: - infer-owner: ^1.0.4 - checksum: 543b7c1e26230499b4100b10d45efa35b1077e8f25595050f34930ca3310abe9524f7387279fe4330139e0f28a0207595245503439276fd4b686cca2b6503080 - languageName: node - linkType: hard - "@npmcli/promise-spawn@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/promise-spawn@npm:3.0.0" @@ -3229,27 +3148,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/promise-spawn@npm:^6.0.0, @npmcli/promise-spawn@npm:^6.0.1": - version: 6.0.2 - resolution: "@npmcli/promise-spawn@npm:6.0.2" - dependencies: - which: ^3.0.0 - checksum: aa725780c13e1f97ab32ed7bcb5a207a3fb988e1d7ecdc3d22a549a22c8034740366b351c4dde4b011bcffcd8c4a7be6083d9cf7bc7e897b88837150de018528 - languageName: node - linkType: hard - -"@npmcli/run-script@npm:^2.0.0": - version: 2.0.0 - resolution: "@npmcli/run-script@npm:2.0.0" - dependencies: - "@npmcli/node-gyp": ^1.0.2 - "@npmcli/promise-spawn": ^1.3.2 - node-gyp: ^8.2.0 - read-package-json-fast: ^2.0.1 - checksum: c016ea9411e434d84e9bb9c30814c2868eee3ff32625f3e1af4671c3abfe0768739ffb2dba5520da926ae44315fc5f507b744f0626a80bc9461f2f19760e5fa0 - languageName: node - linkType: hard - "@npmcli/run-script@npm:^4.1.0, @npmcli/run-script@npm:^4.1.3, @npmcli/run-script@npm:^4.1.7": version: 4.2.1 resolution: "@npmcli/run-script@npm:4.2.1" @@ -3263,19 +3161,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/run-script@npm:^6.0.0": - version: 6.0.2 - resolution: "@npmcli/run-script@npm:6.0.2" - dependencies: - "@npmcli/node-gyp": ^3.0.0 - "@npmcli/promise-spawn": ^6.0.0 - node-gyp: ^9.0.0 - read-package-json-fast: ^3.0.0 - which: ^3.0.0 - checksum: 7a671d7dbeae376496e1c6242f02384928617dc66cd22881b2387272205c3668f8490ec2da4ad63e1abf979efdd2bdf4ea0926601d78578e07d83cfb233b3a1a - languageName: node - linkType: hard - "@nrwl/cli@npm:15.6.3": version: 15.6.3 resolution: "@nrwl/cli@npm:15.6.3" @@ -3611,79 +3496,35 @@ __metadata: languageName: node linkType: hard -"@oclif/core@npm:^3.16.0, @oclif/core@npm:^3.18.1": - version: 3.18.1 - resolution: "@oclif/core@npm:3.18.1" +"@oclif/core@npm:^4": + version: 4.0.27 + resolution: "@oclif/core@npm:4.0.27" dependencies: - "@types/cli-progress": ^3.11.5 ansi-escapes: ^4.3.2 - ansi-styles: ^4.3.0 - cardinal: ^2.1.1 - chalk: ^4.1.2 + ansis: ^3.3.2 clean-stack: ^3.0.1 - cli-progress: ^3.12.0 - color: ^4.2.3 - debug: ^4.3.4 - ejs: ^3.1.9 + cli-spinners: ^2.9.2 + debug: ^4.3.7 + ejs: ^3.1.10 get-package-type: ^0.1.0 globby: ^11.1.0 - hyperlinker: ^1.0.0 indent-string: ^4.0.0 - is-wsl: ^2.2.0 - js-yaml: ^3.14.1 - natural-orderby: ^2.0.3 - object-treeify: ^1.1.33 - password-prompt: ^1.1.3 - slice-ansi: ^4.0.0 + is-wsl: ^3 + lilconfig: ^3.1.2 + minimatch: ^9.0.5 + semver: ^7.6.3 string-width: ^4.2.3 - strip-ansi: ^6.0.1 - supports-color: ^8.1.1 - supports-hyperlinks: ^2.2.0 + supports-color: ^8 widest-line: ^3.1.0 wordwrap: ^1.0.0 wrap-ansi: ^7.0.0 - checksum: 6105cad54c03d38be8a769063db81dc13922088912e55606f9172671b7860d3137e640c823582fd9b6dc6a21561e1f469c66e26fb460e220bdb6f100c265d2e2 + checksum: fa6d23b26c9455e76e15c9ca38d22a00bef895ef18fb7759b3dbfd8c0c1afc22d6ddbcb88216853ff4016a33b8588eb275e249570c23b05011eac543848e1b0d languageName: node linkType: hard -"@oclif/core@npm:^3.18.2": - version: 3.19.1 - resolution: "@oclif/core@npm:3.19.1" - dependencies: - "@types/cli-progress": ^3.11.5 - ansi-escapes: ^4.3.2 - ansi-styles: ^4.3.0 - cardinal: ^2.1.1 - chalk: ^4.1.2 - clean-stack: ^3.0.1 - cli-progress: ^3.12.0 - color: ^4.2.3 - debug: ^4.3.4 - ejs: ^3.1.9 - get-package-type: ^0.1.0 - globby: ^11.1.0 - hyperlinker: ^1.0.0 - indent-string: ^4.0.0 - is-wsl: ^2.2.0 - js-yaml: ^3.14.1 - natural-orderby: ^2.0.3 - object-treeify: ^1.1.33 - password-prompt: ^1.1.3 - slice-ansi: ^4.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - supports-color: ^8.1.1 - supports-hyperlinks: ^2.2.0 - widest-line: ^3.1.0 - wordwrap: ^1.0.0 - wrap-ansi: ^7.0.0 - checksum: c5e2ed2e08afeb77b6cdb297027f6b88317dfb1219c43c50a2875b9adef41c1e14a5c55dcbfc4474a1299c982b477d38b06b7c708ee122b3fb570ecaeb3d53f1 - languageName: node - linkType: hard - -"@oclif/errors@npm:1.3.6, @oclif/errors@npm:^1.2.2, @oclif/errors@npm:^1.3.5, @oclif/errors@npm:^1.3.6": - version: 1.3.6 - resolution: "@oclif/errors@npm:1.3.6" +"@oclif/errors@npm:1.3.6, @oclif/errors@npm:^1.2.2, @oclif/errors@npm:^1.3.5, @oclif/errors@npm:^1.3.6": + version: 1.3.6 + resolution: "@oclif/errors@npm:1.3.6" dependencies: clean-stack: ^3.0.0 fs-extra: ^8.1 @@ -3749,12 +3590,12 @@ __metadata: languageName: node linkType: hard -"@oclif/plugin-help@npm:^6.0.12": - version: 6.0.12 - resolution: "@oclif/plugin-help@npm:6.0.12" +"@oclif/plugin-help@npm:^6.2.10": + version: 6.2.14 + resolution: "@oclif/plugin-help@npm:6.2.14" dependencies: - "@oclif/core": ^3.18.1 - checksum: ff2ed511eb6965d3440df4d2748f61f3c86ea829b66df5f2fcc704acade45ece8b7de1983eca126531894817d743c784879bcd0a3429bf6a3cfd792185eeaf0d + "@oclif/core": ^4 + checksum: 08128193a86c3a440e75bdef43124b79214a6e6cbc44a768231ae2080bf2cc1fb3314e7f7166625692ada9f89a98da7807f0482cbb45fe0c55590bf42ae227ff languageName: node linkType: hard @@ -3785,14 +3626,15 @@ __metadata: languageName: node linkType: hard -"@oclif/plugin-not-found@npm:^3.0.9": - version: 3.0.10 - resolution: "@oclif/plugin-not-found@npm:3.0.10" +"@oclif/plugin-not-found@npm:^3.2.21": + version: 3.2.22 + resolution: "@oclif/plugin-not-found@npm:3.2.22" dependencies: - "@oclif/core": ^3.18.2 - chalk: ^5.3.0 + "@inquirer/confirm": ^3.2.0 + "@oclif/core": ^4 + ansis: ^3.3.1 fast-levenshtein: ^3.0.0 - checksum: 03b9b3e7d817b4822e1c5375abc62417c0c35281e92db935b9de219036a3a09df10ca971ab589bb20ed9720e23e532e8a96df2e23ee013faa00796fe65f34760 + checksum: f9be1f6a0d2c621cc159b79a42a919cbb0e0a8d3544c73a629707273feb4db21d716ade5e05722eecb6e31249848070f5f657b994cd0ccef6cb070bd54942c88 languageName: node linkType: hard @@ -3859,16 +3701,17 @@ __metadata: languageName: node linkType: hard -"@oclif/plugin-warn-if-update-available@npm:^3.0.9": - version: 3.0.9 - resolution: "@oclif/plugin-warn-if-update-available@npm:3.0.9" +"@oclif/plugin-warn-if-update-available@npm:^3.1.11": + version: 3.1.18 + resolution: "@oclif/plugin-warn-if-update-available@npm:3.1.18" dependencies: - "@oclif/core": ^3.16.0 - chalk: ^5.3.0 - debug: ^4.1.0 + "@oclif/core": ^4 + ansis: ^3.3.1 + debug: ^4.3.5 http-call: ^5.2.2 - lodash.template: ^4.5.0 - checksum: a230f936efef2d7fedbf2d2e4accf7b88925d9a3ce46f4e1b8e0cdbe55c6736add54e11f7bc5c7284ec93d08550c47e2f0032306330bded1e4028abb00f16ac0 + lodash: ^4.17.21 + registry-auth-token: ^5.0.2 + checksum: cabf05005bdc6a96cc9eb97f22720d0f43ca3583fbed368452f51156fc606fb53c53747732da5ea68166aeffd79c89a513fff172ae35288f7203028657eafb7f languageName: node linkType: hard @@ -3906,15 +3749,6 @@ __metadata: languageName: node linkType: hard -"@octokit/auth-token@npm:^2.4.4": - version: 2.5.0 - resolution: "@octokit/auth-token@npm:2.5.0" - dependencies: - "@octokit/types": ^6.0.3 - checksum: 45949296c09abcd6beb4c3f69d45b0c1f265f9581d2a9683cf4d1800c4cf8259c2f58d58e44c16c20bffb85a0282a176c0d51f4af300e428b863f27b910e6297 - languageName: node - linkType: hard - "@octokit/auth-token@npm:^3.0.0": version: 3.0.3 resolution: "@octokit/auth-token@npm:3.0.3" @@ -3924,21 +3758,6 @@ __metadata: languageName: node linkType: hard -"@octokit/core@npm:^3.5.1": - version: 3.6.0 - resolution: "@octokit/core@npm:3.6.0" - dependencies: - "@octokit/auth-token": ^2.4.4 - "@octokit/graphql": ^4.5.8 - "@octokit/request": ^5.6.3 - "@octokit/request-error": ^2.0.5 - "@octokit/types": ^6.0.3 - before-after-hook: ^2.2.0 - universal-user-agent: ^6.0.0 - checksum: f81160129037bd8555d47db60cd5381637b7e3602ad70735a7bdf8f3d250c7b7114a666bb12ef7a8746a326a5d72ed30a1b8f8a5a170007f7285c8e217bef1f0 - languageName: node - linkType: hard - "@octokit/core@npm:^4.1.0": version: 4.2.0 resolution: "@octokit/core@npm:4.2.0" @@ -3954,17 +3773,6 @@ __metadata: languageName: node linkType: hard -"@octokit/endpoint@npm:^6.0.1": - version: 6.0.12 - resolution: "@octokit/endpoint@npm:6.0.12" - dependencies: - "@octokit/types": ^6.0.3 - is-plain-object: ^5.0.0 - universal-user-agent: ^6.0.0 - checksum: b48b29940af11c4b9bca41cf56809754bb8385d4e3a6122671799d27f0238ba575b3fde86d2d30a84f4dbbc14430940de821e56ecc6a9a92d47fc2b29a31479d - languageName: node - linkType: hard - "@octokit/endpoint@npm:^7.0.0": version: 7.0.5 resolution: "@octokit/endpoint@npm:7.0.5" @@ -3976,17 +3784,6 @@ __metadata: languageName: node linkType: hard -"@octokit/graphql@npm:^4.5.8": - version: 4.8.0 - resolution: "@octokit/graphql@npm:4.8.0" - dependencies: - "@octokit/request": ^5.6.0 - "@octokit/types": ^6.0.3 - universal-user-agent: ^6.0.0 - checksum: f68afe53f63900d4a16a0a733f2f500df2695b731f8ed32edb728d50edead7f5011437f71d069c2d2f6d656227703d0c832a3c8af58ecf82bd5dcc051f2d2d74 - languageName: node - linkType: hard - "@octokit/graphql@npm:^5.0.0": version: 5.0.5 resolution: "@octokit/graphql@npm:5.0.5" @@ -3998,13 +3795,6 @@ __metadata: languageName: node linkType: hard -"@octokit/openapi-types@npm:^12.11.0": - version: 12.11.0 - resolution: "@octokit/openapi-types@npm:12.11.0" - checksum: 8a7d4bd6288cc4085cabe0ca9af2b87c875c303af932cb138aa1b2290eb69d32407759ac23707bb02776466e671244a902e9857896903443a69aff4b6b2b0e3b - languageName: node - linkType: hard - "@octokit/openapi-types@npm:^16.0.0": version: 16.0.0 resolution: "@octokit/openapi-types@npm:16.0.0" @@ -4019,17 +3809,6 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^2.16.8": - version: 2.21.3 - resolution: "@octokit/plugin-paginate-rest@npm:2.21.3" - dependencies: - "@octokit/types": ^6.40.0 - peerDependencies: - "@octokit/core": ">=2" - checksum: acf31de2ba4021bceec7ff49c5b0e25309fc3c009d407f153f928ddf436ab66cd4217344138378d5523f5fb233896e1db58c9c7b3ffd9612a66d760bc5d319ed - languageName: node - linkType: hard - "@octokit/plugin-paginate-rest@npm:^6.0.0": version: 6.0.0 resolution: "@octokit/plugin-paginate-rest@npm:6.0.0" @@ -4050,18 +3829,6 @@ __metadata: languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:^5.12.0": - version: 5.16.2 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:5.16.2" - dependencies: - "@octokit/types": ^6.39.0 - deprecation: ^2.3.1 - peerDependencies: - "@octokit/core": ">=3" - checksum: 30fcc50c335d1093f03573d9fa3a4b7d027fc98b215c43e07e82ee8dabfa0af0cf1b963feb542312ae32d897a2f68dc671577206f30850215517bebedc5a2c73 - languageName: node - linkType: hard - "@octokit/plugin-rest-endpoint-methods@npm:^7.0.0": version: 7.0.1 resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.0.1" @@ -4074,17 +3841,6 @@ __metadata: languageName: node linkType: hard -"@octokit/request-error@npm:^2.0.5, @octokit/request-error@npm:^2.1.0": - version: 2.1.0 - resolution: "@octokit/request-error@npm:2.1.0" - dependencies: - "@octokit/types": ^6.0.3 - deprecation: ^2.0.0 - once: ^1.4.0 - checksum: baec2b5700498be01b4d958f9472cb776b3f3b0ea52924323a07e7a88572e24cac2cdf7eb04a0614031ba346043558b47bea2d346e98f0e8385b4261f138ef18 - languageName: node - linkType: hard - "@octokit/request-error@npm:^3.0.0": version: 3.0.3 resolution: "@octokit/request-error@npm:3.0.3" @@ -4096,20 +3852,6 @@ __metadata: languageName: node linkType: hard -"@octokit/request@npm:^5.6.0, @octokit/request@npm:^5.6.3": - version: 5.6.3 - resolution: "@octokit/request@npm:5.6.3" - dependencies: - "@octokit/endpoint": ^6.0.1 - "@octokit/request-error": ^2.1.0 - "@octokit/types": ^6.16.1 - is-plain-object: ^5.0.0 - node-fetch: ^2.6.7 - universal-user-agent: ^6.0.0 - checksum: c0b4542eb4baaf880d673c758d3e0b5c4a625a4ae30abf40df5548b35f1ff540edaac74625192b1aff42a79ac661e774da4ab7d5505f1cb4ef81239b1e8510c5 - languageName: node - linkType: hard - "@octokit/request@npm:^6.0.0": version: 6.2.3 resolution: "@octokit/request@npm:6.2.3" @@ -4124,18 +3866,6 @@ __metadata: languageName: node linkType: hard -"@octokit/rest@npm:^18.0.6": - version: 18.12.0 - resolution: "@octokit/rest@npm:18.12.0" - dependencies: - "@octokit/core": ^3.5.1 - "@octokit/plugin-paginate-rest": ^2.16.8 - "@octokit/plugin-request-log": ^1.0.4 - "@octokit/plugin-rest-endpoint-methods": ^5.12.0 - checksum: c18bd6676a60b66819b016b0f969fcd04d8dfa04d01b7af9af9a7410ff028c621c995185e29454c23c47906da506c1e01620711259989a964ebbfd9106f5b715 - languageName: node - linkType: hard - "@octokit/rest@npm:^19.0.3": version: 19.0.7 resolution: "@octokit/rest@npm:19.0.7" @@ -4148,15 +3878,6 @@ __metadata: languageName: node linkType: hard -"@octokit/types@npm:^6.0.3, @octokit/types@npm:^6.16.1, @octokit/types@npm:^6.39.0, @octokit/types@npm:^6.40.0": - version: 6.41.0 - resolution: "@octokit/types@npm:6.41.0" - dependencies: - "@octokit/openapi-types": ^12.11.0 - checksum: fd6f75e0b19b90d1a3d244d2b0c323ed8f2f05e474a281f60a321986683548ef2e0ec2b3a946aa9405d6092e055344455f69f58957c60f58368c8bdda5b7d2ab - languageName: node - linkType: hard - "@octokit/types@npm:^9.0.0": version: 9.0.0 resolution: "@octokit/types@npm:9.0.0" @@ -4415,29 +4136,30 @@ __metadata: languageName: node linkType: hard -"@sigstore/bundle@npm:^1.0.0": - version: 1.0.0 - resolution: "@sigstore/bundle@npm:1.0.0" - dependencies: - "@sigstore/protobuf-specs": ^0.2.0 - checksum: 9902b9fcd298127876646dd9600e2f55f187589027579e3779d93d014c618a80aa061bf5a72cd4ca0a41008e2a4d3f0099f5185fc695d1a09b4911824e7810a1 +"@pnpm/config.env-replace@npm:^1.1.0": + version: 1.1.0 + resolution: "@pnpm/config.env-replace@npm:1.1.0" + checksum: a3d2b57e35eec9543d9eb085854f6e33e8102dac99fdef2fad2eebdbbfc345e93299f0c20e8eb61c1b4c7aa123bfd47c175678626f161cda65dd147c2b6e1fa0 languageName: node linkType: hard -"@sigstore/protobuf-specs@npm:^0.2.0": - version: 0.2.0 - resolution: "@sigstore/protobuf-specs@npm:0.2.0" - checksum: 6b7c5d3612be552820461049aff18015e929b1f38f567d6c5c27ae612c2af0d55f2a4db17828e8cce32923eaf47d502fbce30c5967222ac8d74ecc66f524878c +"@pnpm/network.ca-file@npm:^1.0.1": + version: 1.0.2 + resolution: "@pnpm/network.ca-file@npm:1.0.2" + dependencies: + graceful-fs: 4.2.10 + checksum: d8d0884646500576bd5390464d13db1bb9a62e32a1069293e5bddb2ad8354b354b7e2d2a35e12850025651e795e6a80ce9e601c66312504667b7e3ee7b52becc languageName: node linkType: hard -"@sigstore/tuf@npm:^1.0.3": - version: 1.0.3 - resolution: "@sigstore/tuf@npm:1.0.3" +"@pnpm/npm-conf@npm:^2.1.0": + version: 2.3.1 + resolution: "@pnpm/npm-conf@npm:2.3.1" dependencies: - "@sigstore/protobuf-specs": ^0.2.0 - tuf-js: ^1.1.7 - checksum: 0a32594b73ce3b3a4dfeec438ff98866a952a48ee6c020ddf57795062d9d328bc4327bb0e0c8d24011e3870c7d4670bc142a47025cbe7218c776f08084085421 + "@pnpm/config.env-replace": ^1.1.0 + "@pnpm/network.ca-file": ^1.0.1 + config-chain: ^1.1.11 + checksum: 9e1e1ce5faa64719e866b02d10e28d727d809365eb3692ccfdc420ab6d2073b93abe403994691868f265e34a5601a8eee18ffff6562b27124d971418ba6bb815 languageName: node linkType: hard @@ -4455,6 +4177,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^5.2.0": + version: 5.6.0 + resolution: "@sindresorhus/is@npm:5.6.0" + checksum: 2e6e0c3acf188dcd9aea0f324ac1b6ad04c9fc672392a7b5a1218512fcde066965797eba8b9fe2108657a504388bd4a6664e6e6602555168e828a6df08b9f10e + languageName: node + linkType: hard + "@sinonjs/commons@npm:^1, @sinonjs/commons@npm:^1.0.2, @sinonjs/commons@npm:^1.4.0, @sinonjs/commons@npm:^1.7.0": version: 1.8.6 resolution: "@sinonjs/commons@npm:1.8.6" @@ -4492,385 +4221,396 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/abort-controller@npm:2.1.1" +"@smithy/abort-controller@npm:^3.1.5": + version: 3.1.5 + resolution: "@smithy/abort-controller@npm:3.1.5" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 4bfad0d6b3a75bd1e6f997aa41cc9d8ba8bfdf548cfe703553ad7b42f0bf3e06b595d584be7b9ab90d2e3b22aacad94c02c32e21bea96e46933443f09c59523a + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 538c88d6dfe84d92a7dead4eb149d48bc59857df8235057727c0481e851b0ceea6aabfd5cc059c9e37e66fbadead461c85d6a7c8436e2db6681f06333e814281 languageName: node linkType: hard -"@smithy/chunked-blob-reader-native@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/chunked-blob-reader-native@npm:2.1.1" +"@smithy/chunked-blob-reader-native@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/chunked-blob-reader-native@npm:3.0.0" dependencies: - "@smithy/util-base64": ^2.1.1 - tslib: ^2.5.0 - checksum: 82f475b9090e12306292d46b27cca841691a251db5c9b5520830f7e5c947bbe69b497619773b25754dcdd8580620fd3677f478e1325501549f6182d78e95c583 + "@smithy/util-base64": ^3.0.0 + tslib: ^2.6.2 + checksum: f97c0c0ce5e9bd2350883df3c232311aa82eb87eb387125f685900326f86fc3aca208e9004291f742f6978abf91a0c1112cc9a803cd0caf0dffbcfa9b6d0239e languageName: node linkType: hard -"@smithy/chunked-blob-reader@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/chunked-blob-reader@npm:2.1.1" +"@smithy/chunked-blob-reader@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/chunked-blob-reader@npm:3.0.0" dependencies: - tslib: ^2.5.0 - checksum: e9d7f6f80fffccb5b615aa4eecf0e48849e625a70a79acc371b74b3d5e6dffed3b0d21d8beafe2e1cc1ebc235b8c24ed7d7e31e8c3565d97efe1238dda82c813 + tslib: ^2.6.2 + checksum: 6f520884ade14f1073adb640db2f03eb22a9920f342f37958df3e98327890b741cd909b16cbbc6f70c6c8dd250d6b3a8d76841b685d4871b0403f309267def4f languageName: node linkType: hard -"@smithy/config-resolver@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/config-resolver@npm:2.1.1" +"@smithy/config-resolver@npm:^3.0.9": + version: 3.0.9 + resolution: "@smithy/config-resolver@npm:3.0.9" dependencies: - "@smithy/node-config-provider": ^2.2.1 - "@smithy/types": ^2.9.1 - "@smithy/util-config-provider": ^2.2.1 - "@smithy/util-middleware": ^2.1.1 - tslib: ^2.5.0 - checksum: 18c8af60cbc528887a82dc0eabaf0b398d868511dc6b10fa01f41c77ea9c2679ab2137feaee51aa9060dbc5c46fc33325a659f4bd54549c203f64e15dbacbc0a + "@smithy/node-config-provider": ^3.1.8 + "@smithy/types": ^3.5.0 + "@smithy/util-config-provider": ^3.0.0 + "@smithy/util-middleware": ^3.0.7 + tslib: ^2.6.2 + checksum: 87e61be2ae1690a69974c0860d455a87c696c2da163384d22b582ee0fbee322b73f5d69dea754a2d8681d1b70fd4b0ca8d993ecb13eecf54f28ba3ffabfa0c40 languageName: node linkType: hard -"@smithy/core@npm:^1.3.1": - version: 1.3.1 - resolution: "@smithy/core@npm:1.3.1" - dependencies: - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-retry": ^2.1.1 - "@smithy/middleware-serde": ^2.1.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/util-middleware": ^2.1.1 - tslib: ^2.5.0 - checksum: b8a34ac6000afaba2d3ddf85f3ef2ad9e70fc20ae54ccb7e79d22b7afe3b8fa9c2409ed14dd2d0cabc99a1d1f51fceaf91ab81d1d2c8bf11ca94101619f3cde2 +"@smithy/core@npm:^2.4.8": + version: 2.4.8 + resolution: "@smithy/core@npm:2.4.8" + dependencies: + "@smithy/middleware-endpoint": ^3.1.4 + "@smithy/middleware-retry": ^3.0.23 + "@smithy/middleware-serde": ^3.0.7 + "@smithy/protocol-http": ^4.1.4 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: ab9e635f1622e870272f2950bb8f810ec942246b529aa94bc455265d6ba03deb82a0779b74fd3d666f1857fab228061642f90f2f60b73b8f09f52c39b11dc0f2 languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^2.2.1": - version: 2.2.1 - resolution: "@smithy/credential-provider-imds@npm:2.2.1" +"@smithy/credential-provider-imds@npm:^3.2.4": + version: 3.2.4 + resolution: "@smithy/credential-provider-imds@npm:3.2.4" dependencies: - "@smithy/node-config-provider": ^2.2.1 - "@smithy/property-provider": ^2.1.1 - "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - tslib: ^2.5.0 - checksum: a4e693719384440718728772ea2126be133bbc83fa7bfcefd236942ccb28d1390f1b32fe3262bf330ba4c8e600d01ac73a57110eb42462ec1eb6bbd51e2676a6 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/property-provider": ^3.1.7 + "@smithy/types": ^3.5.0 + "@smithy/url-parser": ^3.0.7 + tslib: ^2.6.2 + checksum: d416f85450aa2402f37ea26a1052e596f92a8a1f9164524313b43ba1ceb9abd3b986c817dbcd6f4fc984054b246ec739efa786ad66ff5604777648a34fc58d54 languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/eventstream-codec@npm:2.1.1" +"@smithy/eventstream-codec@npm:^3.1.6": + version: 3.1.6 + resolution: "@smithy/eventstream-codec@npm:3.1.6" dependencies: - "@aws-crypto/crc32": 3.0.0 - "@smithy/types": ^2.9.1 - "@smithy/util-hex-encoding": ^2.1.1 - tslib: ^2.5.0 - checksum: 7e59028a69e669d1ca1a0fef788f9892a427fad32f33ded731cbfa3bde0163acbc1e7d207e0ce3eae2d3b53f48dce7a99ded092122cdf78e4f392cffd762bfe3 + "@aws-crypto/crc32": 5.2.0 + "@smithy/types": ^3.5.0 + "@smithy/util-hex-encoding": ^3.0.0 + tslib: ^2.6.2 + checksum: 9b7ec78dd0b15c2950d5f89c1240adda5240cab252ecd0e68ed55ac4da5fca4802b237341d42e8fc638c4db93f31459c40c7eb79d8dfc0446e2a925c3fdc1ba2 languageName: node linkType: hard -"@smithy/eventstream-serde-browser@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/eventstream-serde-browser@npm:2.1.1" +"@smithy/eventstream-serde-browser@npm:^3.0.10": + version: 3.0.10 + resolution: "@smithy/eventstream-serde-browser@npm:3.0.10" dependencies: - "@smithy/eventstream-serde-universal": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: c909b620de25e9779653742012c665df8c76bf5193bb79054ef302bc3c08b0fa5620884a5965a3a6ebbb4f059da1b05221662a7a652aa979f4830f26c534be60 + "@smithy/eventstream-serde-universal": ^3.0.9 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 292382ae41f5ca0d9d6b1791de2d7d91f93c6957c08ac7179b91d05afa1f116c754b260def0ead1d23ea8fd0f4359969db024470b74be976edadc69c931cb254 languageName: node linkType: hard -"@smithy/eventstream-serde-config-resolver@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/eventstream-serde-config-resolver@npm:2.1.1" +"@smithy/eventstream-serde-config-resolver@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 14d4d1c638be460290eb05dec3a700d742f8ce77814c1c235fbd7cf248941a387595f1cd684b9acfc3e081a8d9e6dc2810f10c894b3e08f16f0c3adb130cb736 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: c1762b21c665a580bb3c89e8811e9b0a22122ebd8633db2a78693f40910b5788c3e5603c905773bec6a1a72bf0e9785a4c011fded658f6f6f2ba616fc4ac5dd6 languageName: node linkType: hard -"@smithy/eventstream-serde-node@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/eventstream-serde-node@npm:2.1.1" +"@smithy/eventstream-serde-node@npm:^3.0.9": + version: 3.0.9 + resolution: "@smithy/eventstream-serde-node@npm:3.0.9" dependencies: - "@smithy/eventstream-serde-universal": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 4be3dd11854d66310273bae07faafd4ca872158be8d3ef7bdc1dec55a175e983975750ebdaf762e74daf80495e379bd2791971a50899076865759a75b2634d73 + "@smithy/eventstream-serde-universal": ^3.0.9 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 3f5dd216366f461d99c9100215d7e122fccf32ae78ffb6a5164277363ed1510c087bfcb3a31731f48368c179f57ea9b46ae2a19bbe3562da07cd6ada06a47e9c languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/eventstream-serde-universal@npm:2.1.1" +"@smithy/eventstream-serde-universal@npm:^3.0.9": + version: 3.0.9 + resolution: "@smithy/eventstream-serde-universal@npm:3.0.9" dependencies: - "@smithy/eventstream-codec": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 99c7cf5b869f8e6323e976335a3238b77d3b1c32005fc78093d448981883294e4d59bcbd419e88d6a53c76aab01c27bc9af63a5dfed9451d2302eaf6ccddbd64 + "@smithy/eventstream-codec": ^3.1.6 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: d247fdb9155063af562123dd1970f8d17a1871c3793355fc86c875bf3088aca44e6f3b17a704f4d9331a84ac9811b4592e3ecab54a90e600d6e717fc9f6781c6 languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^2.4.1": - version: 2.4.1 - resolution: "@smithy/fetch-http-handler@npm:2.4.1" +"@smithy/fetch-http-handler@npm:^3.2.9": + version: 3.2.9 + resolution: "@smithy/fetch-http-handler@npm:3.2.9" dependencies: - "@smithy/protocol-http": ^3.1.1 - "@smithy/querystring-builder": ^2.1.1 - "@smithy/types": ^2.9.1 - "@smithy/util-base64": ^2.1.1 - tslib: ^2.5.0 - checksum: c23701d45bca6842b5206939ccd587e3482ace9f656ae3dca92ff0bad3fefb846cc33683dff41a19186f2a5662ca6cd66c8aefda4664b7dfd95f9a616055a1c1 + "@smithy/protocol-http": ^4.1.4 + "@smithy/querystring-builder": ^3.0.7 + "@smithy/types": ^3.5.0 + "@smithy/util-base64": ^3.0.0 + tslib: ^2.6.2 + checksum: 3b8eed12bff9d39e23989ea424e112530e01c81f983f15a3bfc4265baa06feb230267d095588705c5a8002cc4a2bfcd834b0341bff60a6236dcc24599ecf8327 languageName: node linkType: hard -"@smithy/hash-blob-browser@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/hash-blob-browser@npm:2.1.1" +"@smithy/hash-blob-browser@npm:^3.1.6": + version: 3.1.6 + resolution: "@smithy/hash-blob-browser@npm:3.1.6" dependencies: - "@smithy/chunked-blob-reader": ^2.1.1 - "@smithy/chunked-blob-reader-native": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: f4dc57c11ef32ddea0e7094d2c230aa274f1e410d84c789d8f5e2ed8a090da8675ca76da9605d297285324107ea8106af1c2aab2859bd62d6e9a8db415eb8e55 + "@smithy/chunked-blob-reader": ^3.0.0 + "@smithy/chunked-blob-reader-native": ^3.0.0 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 4807ad388f552a5f27f168c4efa9cd88c14a2dc75a047137ccab88ef2dfb70729ef7800ca2ae12f2a41adb3149c5d4605eac81ef64880912766d6b59d258ad81 languageName: node linkType: hard -"@smithy/hash-node@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/hash-node@npm:2.1.1" +"@smithy/hash-node@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/hash-node@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - "@smithy/util-buffer-from": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 - checksum: 5d5aae69b94dcb8abaf9f6a5b53ee320c9e126445c4540fcf2169e8ea7ebd953acff7fd77ba514614f6ebbb0baf412e878eebcc3427a5b9b6f8ee39abbc59230 + "@smithy/types": ^3.5.0 + "@smithy/util-buffer-from": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 7a3b432e498efc1d8f229d58a760fae92f1d8a434eb9865b2b4dccea521bd318a97a366e0fdd2e41e2eb02ee6c78c9d3a076a993d5c970e33b0051b4d209128b languageName: node linkType: hard -"@smithy/hash-stream-node@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/hash-stream-node@npm:2.1.1" +"@smithy/hash-stream-node@npm:^3.1.6": + version: 3.1.6 + resolution: "@smithy/hash-stream-node@npm:3.1.6" dependencies: - "@smithy/types": ^2.9.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 - checksum: da3c4ba14c648ee0d2fe7d3298d601150ee0ce5ac0c7d9f54a88148b5f67b03513b41560f76f5f109f11196547b4dc4f26e314774794596d7e3ee1103a9906a8 + "@smithy/types": ^3.5.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: e6427f7865667ad3a72eb9aace0d19718100fd4b14fb9f1e85c09b68b0b7ed608e26d1c2b9c6829be2f89aaa3fa3c122b1a5d5beea43c1026a43f70e748d8483 languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/invalid-dependency@npm:2.1.1" +"@smithy/invalid-dependency@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/invalid-dependency@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: f95ecd9acd337a408b6608a3f451b24a61e26149878f61fc7855c724888f0d28abf0b798d16990dadb7eafc8027098f934c0cd44e75d01d31617bd1fbfd93935 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 6ccfd995686c12cceedf4408021d30e83b88785d77f5ab2e0ee2fab034828a782464f47828acf76d282d37daf20ffff9f27bdd1ce0499926299e560143b28cad languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/is-array-buffer@npm:2.1.1" +"@smithy/is-array-buffer@npm:^2.2.0": + version: 2.2.0 + resolution: "@smithy/is-array-buffer@npm:2.2.0" dependencies: - tslib: ^2.5.0 - checksum: 5dbf9ed59715c871321d0624e3842340c1d662d2e8b78313d1658d39eb793b3ac5c379d573eba0a2ca3add9b313848d4d93fd04bb8565c75fbab749928b239a6 + tslib: ^2.6.2 + checksum: cd12c2e27884fec89ca8966d33c9dc34d3234efe89b33a9b309c61ebcde463e6f15f6a02d31d4fddbfd6e5904743524ca5b95021b517b98fe10957c2da0cd5fc languageName: node linkType: hard -"@smithy/md5-js@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/md5-js@npm:2.1.1" +"@smithy/is-array-buffer@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/is-array-buffer@npm:3.0.0" dependencies: - "@smithy/types": ^2.9.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 - checksum: d15bc426a46d80d450b555a5ccd3d5a6bf37190f4b9ccb705852cd53ce61e4fe6fb08a569b87303ee787da57023f2b75f0e7893644af16c89e9aaf513f8afff3 + tslib: ^2.6.2 + checksum: ce7440fcb1ce3c46722cff11c33e2f62a9df86d74fa2054a8e6b540302a91211cf6e4e3b1b7aac7030c6c8909158c1b6867c394201fa8afc6b631979956610e5 languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/middleware-content-length@npm:2.1.1" +"@smithy/md5-js@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/md5-js@npm:3.0.7" dependencies: - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: cb0ea801f72a1a01f5956b3526df930fc19762b07d43a3871ff29815f621603410753d37710d72675d9761b93da32a38cfd5195582de8b6a47e299b1f073be25 + "@smithy/types": ^3.5.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: d9badbd5361babc30103ef9e9a6c3b24b49d058de1ccd6765fbe1867753f9c8a97100e1ce88509fa50e1aec3135603b466c2ef21af5acba281f745a6eea0f034 languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^2.4.1": - version: 2.4.1 - resolution: "@smithy/middleware-endpoint@npm:2.4.1" - dependencies: - "@smithy/middleware-serde": ^2.1.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/url-parser": ^2.1.1 - "@smithy/util-middleware": ^2.1.1 - tslib: ^2.5.0 - checksum: 685f74c76cba205bdb20ad7bda449b73e498ae2e9074a026d48b38c7b4456d8a0cfb4fdb48625b65f93f3a75e92eaf7951db28f8e9f44e50ce18fd59a7b325af +"@smithy/middleware-content-length@npm:^3.0.9": + version: 3.0.9 + resolution: "@smithy/middleware-content-length@npm:3.0.9" + dependencies: + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 0299e2573942b5f073d5dadf45778b61db530f79356e08594eb947060c603202282f45e6fd8c8f5e64f6184ca6b987cd3e8f55dfc8d189809af3d7b47230a2d7 languageName: node linkType: hard -"@smithy/middleware-retry@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/middleware-retry@npm:2.1.1" - dependencies: - "@smithy/node-config-provider": ^2.2.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/service-error-classification": ^2.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/util-middleware": ^2.1.1 - "@smithy/util-retry": ^2.1.1 - tslib: ^2.5.0 - uuid: ^8.3.2 - checksum: a4bc59d2ff8f65367aeb93391a2aafc7caf8031d8b2dfb32ee35748cdc46e06d5182c37bee90d7a107e890959bd40e6a7f4041bc1b0b36a99d14919b1cc78812 +"@smithy/middleware-endpoint@npm:^3.1.4": + version: 3.1.4 + resolution: "@smithy/middleware-endpoint@npm:3.1.4" + dependencies: + "@smithy/middleware-serde": ^3.0.7 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/shared-ini-file-loader": ^3.1.8 + "@smithy/types": ^3.5.0 + "@smithy/url-parser": ^3.0.7 + "@smithy/util-middleware": ^3.0.7 + tslib: ^2.6.2 + checksum: 34cc4115fc57c9db90e6b74f4039e35e9e3cec94411173a3c0c14bacf99d86712ee51423b98b4d62695a5425a53d108fc0a2e11510df4b17a36f0496af03ddc1 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/middleware-serde@npm:2.1.1" +"@smithy/middleware-retry@npm:^3.0.23": + version: 3.0.23 + resolution: "@smithy/middleware-retry@npm:3.0.23" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: ed77b80ac6b68640ee4bf8310bc4d9f5aa13de2741333f6f03a4983e897fa66e0de057d178e78d9ba095d5686d3e4531437c9dd2583366efe948bd75b2aa8581 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/protocol-http": ^4.1.4 + "@smithy/service-error-classification": ^3.0.7 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-retry": ^3.0.7 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: 8d991ce755f644d2e8934eeaef7af9a358dcabd452ed21533fa298a119919d1298f9211f23a9d291970a3ec7dd4c7479d0bdfbaef4ff4633d5375bdc289ff761 languageName: node linkType: hard -"@smithy/middleware-stack@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/middleware-stack@npm:2.1.1" +"@smithy/middleware-serde@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/middleware-serde@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 0d7c1051c96fcf19f7d5e96bc59484ce13df4e570c1da3eda74d23a7911b41eb61d6c378aad0aa21f7e9c72934148bdf39f9767c57abd4845aa4417a84e3f6e4 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 6ec3a000049a5e3212c5814b5500b562669a75ef42f4efecf13f0726614982488b89bb3d55fd163eb655a1e58bf490e387f8f5d5bfb4fc51bb63dffd550e15e6 languageName: node linkType: hard -"@smithy/node-config-provider@npm:^2.2.1": - version: 2.2.1 - resolution: "@smithy/node-config-provider@npm:2.2.1" +"@smithy/middleware-stack@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/middleware-stack@npm:3.0.7" dependencies: - "@smithy/property-provider": ^2.1.1 - "@smithy/shared-ini-file-loader": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 62ed3124d888a10cac633a250fbe12d6c5b8aa75ea691889abebce227cbaf155f3db00fa6beb453fbd6147e667e70819d043da1750980669451281a28eafd285 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: f29af8abb52e58b9cbb59c5187e0758279dd7d50c350ae2ad3cf123277fb652976c72be44d0be459e6db42294a0dca24eaf0fa6aead33a9e4b7109437102246f languageName: node linkType: hard -"@smithy/node-http-handler@npm:^2.3.1": - version: 2.3.1 - resolution: "@smithy/node-http-handler@npm:2.3.1" +"@smithy/node-config-provider@npm:^3.1.8": + version: 3.1.8 + resolution: "@smithy/node-config-provider@npm:3.1.8" dependencies: - "@smithy/abort-controller": ^2.1.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/querystring-builder": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: e6a514098f44cfc962318b15df79bb5e9de7fffe883fe073965879b2cf2436726709b5be14262871794104272e8506f793f8e77b8bf5b36398714a3a51512516 + "@smithy/property-provider": ^3.1.7 + "@smithy/shared-ini-file-loader": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 20b6d0e5e2487954a1a7235ca4bd4efa81e90f5cbd25b361e70e5d173807b346646109c62ace7c32d999938cb0825fa9aea54b597e487b18879dc433676d4e0c languageName: node linkType: hard -"@smithy/property-provider@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/property-provider@npm:2.1.1" +"@smithy/node-http-handler@npm:^3.2.4": + version: 3.2.4 + resolution: "@smithy/node-http-handler@npm:3.2.4" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: e87d70c4efe07e830cfb2094b046af89175b87b13259fba37641aa7bfc2ab0c7bf2397797ac48b92e1feb11bf6129b82b350519172093efd7ac4d3a4a98bbe2f + "@smithy/abort-controller": ^3.1.5 + "@smithy/protocol-http": ^4.1.4 + "@smithy/querystring-builder": ^3.0.7 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 658934366953828af04e5f8d0229f24e8ff783c1bd34b179203099321e4b41b19dfd921c3ef431d8067fc2d49a0c806d0c758fff6ea10606e092480dcf6b0f26 languageName: node linkType: hard -"@smithy/protocol-http@npm:^3.1.1": - version: 3.1.1 - resolution: "@smithy/protocol-http@npm:3.1.1" +"@smithy/property-provider@npm:^3.1.7": + version: 3.1.7 + resolution: "@smithy/property-provider@npm:3.1.7" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: a5be1c5b5bff18c5a35c23870e1ffa38da33e56f93bdd8f26c615f4c0d2d3e1effffe441e756c0b0ba3aad2dd0845332f634702bf8455ed865a04eebfef1329b + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: c0b9fdbfeb4100ddc27811f32af75d3b02496b2323b215f30a13f4de6f4d821597731b02123061cea23b6bb81fba91bc24ecc3cf0e8e035a8a100559b7d43e27 languageName: node linkType: hard -"@smithy/querystring-builder@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/querystring-builder@npm:2.1.1" +"@smithy/protocol-http@npm:^4.1.4": + version: 4.1.4 + resolution: "@smithy/protocol-http@npm:4.1.4" dependencies: - "@smithy/types": ^2.9.1 - "@smithy/util-uri-escape": ^2.1.1 - tslib: ^2.5.0 - checksum: b8623c7ef6d19fb21c41bfda29cce9c673ac501914085b39642ff5a72cf5742b19cd9de1a1851d13f2e1bbfc2e9522070b5ca32ed906aacf93f732a56e76098a + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: c0655e2031ec6ae96d63a125b76ca9bb46b3e4b8f4436ef0ea9bcf08303c1b6cdd4f0d17a1cd87cfdbe60bde34e5001d65f91d4e3eaa24cf560ed718967686de languageName: node linkType: hard -"@smithy/querystring-parser@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/querystring-parser@npm:2.1.1" +"@smithy/querystring-builder@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/querystring-builder@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: bfac40793b0e42f4e25137db4e7d866debfa32557359cc41e02a23174a6fd8e0132f098cef5669a3ddf5211e477c9c97d4aa9039b35c7b4a29f2207236da236e + "@smithy/types": ^3.5.0 + "@smithy/util-uri-escape": ^3.0.0 + tslib: ^2.6.2 + checksum: 0c41ce1993ce4b7dc509bc1fa50c42000a1cb5801601fc28d9113494349c337e88f77bff998f0debf0be0eba41d67d653a6648eea0f5b3b1e0f8a3cd57229631 languageName: node linkType: hard -"@smithy/service-error-classification@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/service-error-classification@npm:2.1.1" +"@smithy/querystring-parser@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/querystring-parser@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - checksum: 59a5e3cb0fb42d70fc2d85814124abbff60e28cc9aa45d87fde3370e25943abaf4b6baf62cc40e496c3687e9fa9161156a055ad29a4f7ce8dd7d937bbf49f9a7 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 5ef80af89f1c1aed44ce263d91da5ba48f0858136d1f1b041524e6cbcc7d5c5345642ff6ef876fe1469107a3cd9815fc084057be2601bcafa6ff383c21dff5d0 languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^2.3.1": - version: 2.3.1 - resolution: "@smithy/shared-ini-file-loader@npm:2.3.1" +"@smithy/service-error-classification@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/service-error-classification@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 89b0dfb65faab917fcb4a6a8f34a85d668a759ccbfd6c4dc3d6311e59a8f1b78baab1d97402c333d2207da810cb00de9d5b4379f114bde82135f9aa0d0069cab + "@smithy/types": ^3.5.0 + checksum: a6370ee348f4b66698a193a680ab5c81e0ed4d5fac8204cbbd9967c869feceb0b6d129f8d0e4823538ab699d7f3ab3ff8151e791221ee5f97742423b0e76b321 languageName: node linkType: hard -"@smithy/signature-v4@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/signature-v4@npm:2.1.1" - dependencies: - "@smithy/eventstream-codec": ^2.1.1 - "@smithy/is-array-buffer": ^2.1.1 - "@smithy/types": ^2.9.1 - "@smithy/util-hex-encoding": ^2.1.1 - "@smithy/util-middleware": ^2.1.1 - "@smithy/util-uri-escape": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 - checksum: fa3d4728b0bcf98e606a6e13a47f91efc6eb9edb6925ba48c3b9cecdf8170adf27e28a0684dabe385e8a7379d0743f52b19cd9a1a01884cd0f75c048c4324fd2 +"@smithy/shared-ini-file-loader@npm:^3.1.8": + version: 3.1.8 + resolution: "@smithy/shared-ini-file-loader@npm:3.1.8" + dependencies: + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 0ad620cb4a641786f205e6f01ac00433afee6dbe5d14180458841cab3b9322b580caf18c9f9cf24d71d063bdf3b5716b159045e386f10f1c87847fff85272b70 languageName: node linkType: hard -"@smithy/smithy-client@npm:^2.3.1": - version: 2.3.1 - resolution: "@smithy/smithy-client@npm:2.3.1" +"@smithy/signature-v4@npm:^4.2.0": + version: 4.2.0 + resolution: "@smithy/signature-v4@npm:4.2.0" dependencies: - "@smithy/middleware-endpoint": ^2.4.1 - "@smithy/middleware-stack": ^2.1.1 - "@smithy/protocol-http": ^3.1.1 - "@smithy/types": ^2.9.1 - "@smithy/util-stream": ^2.1.1 - tslib: ^2.5.0 - checksum: 9b13c361528b3120b1a1db17cd60521d04c72f664c2709be20934cea12756117441d2a33d0464ff3099be11ccb12946c62ece1126b9532eb8f6243a35d6fd171 + "@smithy/is-array-buffer": ^3.0.0 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + "@smithy/util-hex-encoding": ^3.0.0 + "@smithy/util-middleware": ^3.0.7 + "@smithy/util-uri-escape": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: edf0fa3ee5a65dbc132dd3a9f9ca6dcbeefa33b96e701dd7de4cb965ca3000ad706bf7ec87c50a9f71a86a6610fac5315ab96d5247e6b550b75548a3d9ecb667 + languageName: node + linkType: hard + +"@smithy/smithy-client@npm:^3.4.0": + version: 3.4.0 + resolution: "@smithy/smithy-client@npm:3.4.0" + dependencies: + "@smithy/middleware-endpoint": ^3.1.4 + "@smithy/middleware-stack": ^3.0.7 + "@smithy/protocol-http": ^4.1.4 + "@smithy/types": ^3.5.0 + "@smithy/util-stream": ^3.1.9 + tslib: ^2.6.2 + checksum: 4eb8387ca16064fc1c0c59d502f5d611fb3ee9c06e0ebd3c1a540bb8f1e709e0073bcc9aa9c3c337db1e3d4a799a376d2f29d3f90b008a431a6216805a217e6e languageName: node linkType: hard @@ -4883,185 +4623,206 @@ __metadata: languageName: node linkType: hard -"@smithy/types@npm:^2.9.1": - version: 2.9.1 - resolution: "@smithy/types@npm:2.9.1" +"@smithy/types@npm:^3.5.0": + version: 3.5.0 + resolution: "@smithy/types@npm:3.5.0" dependencies: - tslib: ^2.5.0 - checksum: 8570affb4abb5d0ead57293977fc915d44be481120defcabb87a3fb1c7b5d2501b117835eca357b5d54ea4bbee08032f9dc3d909ecbf0abb0cec2ca9678ae7bd + tslib: ^2.6.2 + checksum: 5d297005549991f6928daf038e0610c959423add6e435af970b8c8dcac988bf62b0cdbf4dd5df43197d9bc7af5c290792f17af6e2f5051be2ffa40dd98ab4659 languageName: node linkType: hard -"@smithy/url-parser@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/url-parser@npm:2.1.1" +"@smithy/url-parser@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/url-parser@npm:3.0.7" dependencies: - "@smithy/querystring-parser": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 5c939f3ff9c53a0b7a0c5a1ac7641f229598d2bf9499e1abf4d33c1c1cd13bd5f7fcfffd00c366ca9f8092d28979a4a958b80f9bbc91e817e4d1940451e93489 + "@smithy/querystring-parser": ^3.0.7 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: b0e4939c95de0183d90335a173d642602267070748fb95030d0949f5d113b0048c397e949b0861ed352d9c9a45221348f18a0a636d3219262da56e139232b004 languageName: node linkType: hard -"@smithy/util-base64@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-base64@npm:2.1.1" +"@smithy/util-base64@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-base64@npm:3.0.0" dependencies: - "@smithy/util-buffer-from": ^2.1.1 - tslib: ^2.5.0 - checksum: 6dbb93b8745798d56476d37c99dc9f53fe5fc29329b8161fc9e5c55c5a3062916b3e5e4dd596541b248979eefa550d8da7fbb6ab254bf069cb4c920aea6c3590 + "@smithy/util-buffer-from": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 413f26046a7e98b2661a078f218a8d040c820fc5a02f5e364aff58c3957e28fde1ac4048c2ebbad5d87b9da4b9aa98a8d4a7fb0d2ce97def33738bd7d8d79aa0 languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-body-length-browser@npm:2.1.1" +"@smithy/util-body-length-browser@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-body-length-browser@npm:3.0.0" dependencies: - tslib: ^2.5.0 - checksum: 6f7808a41b57a5ab1334f0d036ecec6809a959bcfe6a200f985f35e0c96e72f34fdcb6154873f795835d1d927098055e2dec31ebfb5e5382d1c4c612c80a37c0 + tslib: ^2.6.2 + checksum: b01d8258b9a25b262734fc49cefefe48583ba193c3eefd49a6f7fd5922c3015d23dda88b52f3dd9a16827cad16b5b9425eef01e91bd0c71bb5abc469d2952c07 languageName: node linkType: hard -"@smithy/util-body-length-node@npm:^2.2.1": - version: 2.2.1 - resolution: "@smithy/util-body-length-node@npm:2.2.1" +"@smithy/util-body-length-node@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-body-length-node@npm:3.0.0" dependencies: - tslib: ^2.5.0 - checksum: 6bddc6fac7c9875ae7baaf6088d91192fbe4405bc5c1b69100d52aa1bfebabcc194f5f1b159d8f6f3ade3b54e416f185781970c30a97d4b0a7cec6d02fc490c4 + tslib: ^2.6.2 + checksum: da1baf4790609d3dc28c88385c7274fdf9b91a641fe3c5af22b78e18156df17bd470181348f43b2c739680936b1dafb1526158dfd817c3d9ecb71e653b4cbe3f languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-buffer-from@npm:2.1.1" +"@smithy/util-buffer-from@npm:^2.2.0": + version: 2.2.0 + resolution: "@smithy/util-buffer-from@npm:2.2.0" dependencies: - "@smithy/is-array-buffer": ^2.1.1 - tslib: ^2.5.0 - checksum: 8dc7f9afaa356696f14a80cd983a750cbad8eba7c46498ed74fb8ec0cb307f14df64fb10ceb30b2d4792395bb8b216c89155a93dee0f2b3e5cab94fef459a195 + "@smithy/is-array-buffer": ^2.2.0 + tslib: ^2.6.2 + checksum: 424c5b7368ae5880a8f2732e298d17879a19ca925f24ca45e1c6c005f717bb15b76eb28174d308d81631ad457ea0088aab0fd3255dd42f45a535c81944ad64d3 languageName: node linkType: hard -"@smithy/util-config-provider@npm:^2.2.1": - version: 2.2.1 - resolution: "@smithy/util-config-provider@npm:2.2.1" +"@smithy/util-buffer-from@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-buffer-from@npm:3.0.0" dependencies: - tslib: ^2.5.0 - checksum: f5b34bcf6ef944779f20d7639070e87a521e1a5620e5a91f2d2dbd764824985930a68b71b0b2bde12e1eaac947155789b73a8c09c1aa7ab923f08e42a4173ef4 + "@smithy/is-array-buffer": ^3.0.0 + tslib: ^2.6.2 + checksum: 1bfc4ab093fe98132bbc1ccd36a0b9ad75a31ed26bac4b7e9350205513a2481eb190ae44679ab4fecc5e10d367b5e6592bbfbf792671579d17d17bd7f7f233f5 languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-defaults-mode-browser@npm:2.1.1" +"@smithy/util-config-provider@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-config-provider@npm:3.0.0" + dependencies: + tslib: ^2.6.2 + checksum: fc0f5f57d30261cf3a6693d8e338b9d269332c478ee18d905309a769844188190caf0564855d7e84f6c61e56aa556195dda89f65e8c30791951cf4999e4a70e7 + languageName: node + linkType: hard + +"@smithy/util-defaults-mode-browser@npm:^3.0.23": + version: 3.0.23 + resolution: "@smithy/util-defaults-mode-browser@npm:3.0.23" dependencies: - "@smithy/property-provider": ^2.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 + "@smithy/property-provider": ^3.1.7 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 bowser: ^2.11.0 - tslib: ^2.5.0 - checksum: 5d3b11be1768410e24ad9829dc70bed9b50419f85a8ca934c6296e21e278d87f665cfdb603241ef749f80d154a2c4be26cd29338daecc625d31b30af8bd9c139 + tslib: ^2.6.2 + checksum: 8b95eddff68fa1372ef4c2b076a928bee925ca04fcfc86de3a14956f297a69cd880b51176d5b008c093244c0776b6cd8d7bd355d6cfb609d99330f3996daea31 languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^2.1.1": - version: 2.2.0 - resolution: "@smithy/util-defaults-mode-node@npm:2.2.0" - dependencies: - "@smithy/config-resolver": ^2.1.1 - "@smithy/credential-provider-imds": ^2.2.1 - "@smithy/node-config-provider": ^2.2.1 - "@smithy/property-provider": ^2.1.1 - "@smithy/smithy-client": ^2.3.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: c4a69b73bc46c3bb5ff4149b80bdfa79f4c25b82253d9c7168c9920066e12830e1bea324dce09414b09791fd0379bdc05c39117155d5b37a229d226962a95d5f +"@smithy/util-defaults-mode-node@npm:^3.0.23": + version: 3.0.23 + resolution: "@smithy/util-defaults-mode-node@npm:3.0.23" + dependencies: + "@smithy/config-resolver": ^3.0.9 + "@smithy/credential-provider-imds": ^3.2.4 + "@smithy/node-config-provider": ^3.1.8 + "@smithy/property-provider": ^3.1.7 + "@smithy/smithy-client": ^3.4.0 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 6e961b50a1c1141d301b1fc4bd006ae9430567737a382ffd8a20db01bc8ef42fa6d38539fe7b99c2504d2b69165987d1b8cdeefd263157292608ef2ebdfb86fa languageName: node linkType: hard -"@smithy/util-endpoints@npm:^1.1.1": - version: 1.1.1 - resolution: "@smithy/util-endpoints@npm:1.1.1" +"@smithy/util-endpoints@npm:^2.1.3": + version: 2.1.3 + resolution: "@smithy/util-endpoints@npm:2.1.3" dependencies: - "@smithy/node-config-provider": ^2.2.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 40619bf739c1fc959486946cb49319f34c9c4c5c19f46cdefc7ff8e7331b84f6ad7a4aeb8a0268f6d77d266ff5ec9df8d2244094dd79ae469983e9c07e43766a + "@smithy/node-config-provider": ^3.1.8 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 63a362e1b521a63d9f535f4cfd4e4168e08be51f4e44a406adf840427b96f7295eee9343648a51c472a8fefa603b0f3644f876bc241b0a487d05343819f7aacf languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-hex-encoding@npm:2.1.1" +"@smithy/util-hex-encoding@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-hex-encoding@npm:3.0.0" dependencies: - tslib: ^2.5.0 - checksum: eae5c94fd4d57dccbae5ad4d7684787b1e9b1df944cf9fcb497cbefaed6aec49c0a777cc1ea4d10fa7002b82f0b73b8830ae2efe98ed35a62dcf3c4f7d08a4cd + tslib: ^2.6.2 + checksum: dd32fd71e915825987a18bf7c0f8f0c4956d0b17a0ee71592b5563bb20e04f24dbf81d36161aac07caab3bb5e535cc609fce20aa4a38f66b457c4c6f5c7748d9 languageName: node linkType: hard -"@smithy/util-middleware@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-middleware@npm:2.1.1" +"@smithy/util-middleware@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/util-middleware@npm:3.0.7" dependencies: - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 404bb944202df70ba0ff8bb6ea105ead0a6b365d5ef7bfafbfc919df228823563818f0ee36f0f1e20462200da2fb8c8961e20b237e4e1bd9f77c38dd701f39ab + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: ed1f9751d650ba5d980a39e140f50780b655b8842b3a0f9de13aa38d87e327eabc2dda1a0b8f35fa633f46cadb223669837137ab2aa01b600753a0ddca7bcbfb languageName: node linkType: hard -"@smithy/util-retry@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-retry@npm:2.1.1" +"@smithy/util-retry@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/util-retry@npm:3.0.7" dependencies: - "@smithy/service-error-classification": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 1747c75f55a208f16104483cd76ec45200dedaa924868e84d4882b88f8b4a8d3a4422834359fd9bfba242e0e96a474349ac0a6f5d804fb15b15e8b639b6d2ad0 + "@smithy/service-error-classification": ^3.0.7 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 8af7ed849a7db65e9229a885490cd843c3f9b35248c661d6197a31d7cc0aa33c1790734b716e80e19b569d8149b1f6d8a3dfab4d887a155e64a3ea03bd7d504d languageName: node linkType: hard -"@smithy/util-stream@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-stream@npm:2.1.1" - dependencies: - "@smithy/fetch-http-handler": ^2.4.1 - "@smithy/node-http-handler": ^2.3.1 - "@smithy/types": ^2.9.1 - "@smithy/util-base64": ^2.1.1 - "@smithy/util-buffer-from": ^2.1.1 - "@smithy/util-hex-encoding": ^2.1.1 - "@smithy/util-utf8": ^2.1.1 - tslib: ^2.5.0 - checksum: 3a060226b8a506e722d0d8c1c4b7a2989241f7946c8acc892a8a70d92d9952cc8619b14bf686c9c822115d99159c6c16534bad2d72ecc2809a56f865224e82a6 +"@smithy/util-stream@npm:^3.1.9": + version: 3.1.9 + resolution: "@smithy/util-stream@npm:3.1.9" + dependencies: + "@smithy/fetch-http-handler": ^3.2.9 + "@smithy/node-http-handler": ^3.2.4 + "@smithy/types": ^3.5.0 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-buffer-from": ^3.0.0 + "@smithy/util-hex-encoding": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 4a9777742034ce0f5a3403bbe99c54c84cb26aa55ad5255346a006a574e658ae36b9d001666e931ef485614d288c76e33e35c8966b0af52e3fa6a7ac9772de8b languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-uri-escape@npm:2.1.1" +"@smithy/util-uri-escape@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-uri-escape@npm:3.0.0" dependencies: - tslib: ^2.5.0 - checksum: 822ed7390e28d5c7b8dab5e5c5a8de998e0778220137962a71b47b2d8900289d48a3a2c9945e68e1cac921d43f61660045e7fdffe8df9e63004575fcf2aa99b2 + tslib: ^2.6.2 + checksum: d7ee01c978e2b08d0a89a3b678f5d5e5d5bb4ab4ab85567a238b1a6195dff1bdaf9ae62497e7f32ff5121b3dc007c370bcb6e8ef79b01fe5acdec5bbce8c7ce4 languageName: node linkType: hard -"@smithy/util-utf8@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-utf8@npm:2.1.1" +"@smithy/util-utf8@npm:^2.0.0": + version: 2.3.0 + resolution: "@smithy/util-utf8@npm:2.3.0" dependencies: - "@smithy/util-buffer-from": ^2.1.1 - tslib: ^2.5.0 - checksum: 286ce5cba3f45a8abd3d6c28e40b3204dd64300340818d77e42c1cbb0c2f6ad0c42f0e47ffaf38d74d0895b0dfd1750c5b55222ab4d205a3b39da4325971d303 + "@smithy/util-buffer-from": ^2.2.0 + tslib: ^2.6.2 + checksum: 00e55d4b4e37d48be0eef3599082402b933c52a1407fed7e8e8ad76d94d81a0b30b8bfaf2047c59d9c3af31e5f20e7a8c959cb7ae270f894255e05a2229964f0 languageName: node linkType: hard -"@smithy/util-waiter@npm:^2.1.1": - version: 2.1.1 - resolution: "@smithy/util-waiter@npm:2.1.1" +"@smithy/util-utf8@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-utf8@npm:3.0.0" dependencies: - "@smithy/abort-controller": ^2.1.1 - "@smithy/types": ^2.9.1 - tslib: ^2.5.0 - checksum: 52d9c82bb9684b6b11eeb2814fa1454514cb90aeeb87bfdf7c458613c13d18189712585486859c975824d08f2d1e3c817dd7e51c400531aaa479af8a06ea0bff + "@smithy/util-buffer-from": ^3.0.0 + tslib: ^2.6.2 + checksum: d97be1748963263a1161ba80417d82318b977b38542f3fdf0379b0162461188be680e5bfb66a89d65652f0fad6ecf2ab23a43205979216e50602488f73434da3 + languageName: node + linkType: hard + +"@smithy/util-waiter@npm:^3.1.6": + version: 3.1.6 + resolution: "@smithy/util-waiter@npm:3.1.6" + dependencies: + "@smithy/abort-controller": ^3.1.5 + "@smithy/types": ^3.5.0 + tslib: ^2.6.2 + checksum: 8375e3530c19565f98e3a6ccbf2a332939f3d01817f0d100d8fcf6033eac2233df9debef181572dce2589e76aae140a3cc713d8715d4b29f73a294a48f857575 languageName: node linkType: hard @@ -5074,10 +4835,12 @@ __metadata: languageName: node linkType: hard -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 +"@szmarczak/http-timer@npm:^5.0.1": + version: 5.0.1 + resolution: "@szmarczak/http-timer@npm:5.0.1" + dependencies: + defer-to-connect: ^2.0.1 + checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 languageName: node linkType: hard @@ -5116,23 +4879,6 @@ __metadata: languageName: node linkType: hard -"@tufjs/canonical-json@npm:1.0.0": - version: 1.0.0 - resolution: "@tufjs/canonical-json@npm:1.0.0" - checksum: 9ff3bcd12988fb23643690da3e009f9130b7b10974f8e7af4bd8ad230a228119de8609aa76d75264fe80f152b50872dea6ea53def69534436a4c24b4fcf6a447 - languageName: node - linkType: hard - -"@tufjs/models@npm:1.0.4": - version: 1.0.4 - resolution: "@tufjs/models@npm:1.0.4" - dependencies: - "@tufjs/canonical-json": 1.0.0 - minimatch: ^9.0.0 - checksum: b489baa854abce6865f360591c20d5eb7d8dde3fb150f42840c12bb7ee3e5e7a69eab9b2e44ea82ae1f8cd95b586963c5a5c5af8ba4ffa3614b3ddccbc306779 - languageName: node - linkType: hard - "@types/ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "@types/ansi-styles@npm:3.2.1" @@ -5193,15 +4939,6 @@ __metadata: languageName: node linkType: hard -"@types/cli-progress@npm:^3.11.5": - version: 3.11.5 - resolution: "@types/cli-progress@npm:3.11.5" - dependencies: - "@types/node": "*" - checksum: 571fb3b11646415ac49c90e8003b82f3ac58d75fde5952caf40b4a079517b6e25e79ab0a7455d0ab0398d0b2de062646dba075d3d1f8d147eed2ab4d41abbf64 - languageName: node - linkType: hard - "@types/color-name@npm:*": version: 1.1.0 resolution: "@types/color-name@npm:1.1.0" @@ -5225,13 +4962,6 @@ __metadata: languageName: node linkType: hard -"@types/expect@npm:^1.20.4": - version: 1.20.4 - resolution: "@types/expect@npm:1.20.4" - checksum: c09a9abec2c1776dd8948920dc3bad87b1206c843509d3d3002040983b1769b2e3914202a6c20b72e5c3fb5738a1ab87cb7be9d3fe9efabf2a324173b222a224 - languageName: node - linkType: hard - "@types/fs-extra@npm:^7.0.0": version: 7.0.0 resolution: "@types/fs-extra@npm:7.0.0" @@ -5259,6 +4989,13 @@ __metadata: languageName: node linkType: hard +"@types/http-cache-semantics@npm:^4.0.2": + version: 4.0.4 + resolution: "@types/http-cache-semantics@npm:4.0.4" + checksum: 7f4dd832e618bc1e271be49717d7b4066d77c2d4eed5b81198eb987e532bb3e1c7e02f45d77918185bad936f884b700c10cebe06305f50400f382ab75055f9e8 + languageName: node + linkType: hard + "@types/inquirer@npm:^8.2.10": version: 8.2.10 resolution: "@types/inquirer@npm:8.2.10" @@ -5383,13 +5120,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^15.6.1": - version: 15.14.9 - resolution: "@types/node@npm:15.14.9" - checksum: 49f7f0522a3af4b8389aee660e88426490cd54b86356672a1fedb49919a8797c00d090ec2dcc4a5df34edc2099d57fc2203d796c4e7fbd382f2022ccd789eee7 - languageName: node - linkType: hard - "@types/node@npm:^18.11.18": version: 18.19.24 resolution: "@types/node@npm:18.19.24" @@ -5408,6 +5138,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^22.5.5": + version: 22.7.5 + resolution: "@types/node@npm:22.7.5" + dependencies: + undici-types: ~6.19.2 + checksum: 1a8bbb504efaffcef7b8491074a428e5c0b5425b0c0ffb13e7262cb8462c275e8cc5eaf90a38d8fbf52a1eeda7c01ab3b940673c43fc2414140779c973e40ec6 + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -5580,16 +5319,6 @@ __metadata: languageName: node linkType: hard -"@types/vinyl@npm:^2.0.4": - version: 2.0.7 - resolution: "@types/vinyl@npm:2.0.7" - dependencies: - "@types/expect": ^1.20.4 - "@types/node": "*" - checksum: 8e6e341860a2a024d5802517fb171ffc66bfbd91b0eefe8dd4376e08733e468781417ba861b9d32bb8207707cf554e3aeb60d08297c5e666a40520af95082e2d - languageName: node - linkType: hard - "@types/wrap-ansi@npm:^3.0.0": version: 3.0.0 resolution: "@types/wrap-ansi@npm:3.0.0" @@ -5724,16 +5453,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.19.0": - version: 6.19.0 - resolution: "@typescript-eslint/scope-manager@npm:6.19.0" - dependencies: - "@typescript-eslint/types": 6.19.0 - "@typescript-eslint/visitor-keys": 6.19.0 - checksum: 47d9d1b70cd64f9d1bb717090850e0ff1a34e453c28b43fd0cecaea4db05cacebd60f5da55b35c4b3cc01491f02e9de358f82a0822b27c00e80e3d1a27de32d1 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/scope-manager@npm:6.21.0" @@ -5768,13 +5487,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.19.0": - version: 6.19.0 - resolution: "@typescript-eslint/types@npm:6.19.0" - checksum: 1371b5ba41c1d2879b3c2823ab01a30cf034e476ef53ff2a7f9e9a4a0056dfbbfecd3143031b05430aa6c749233cacbd01b72cea38a9ece1c6cf95a5cd43da6a - languageName: node - linkType: hard - "@typescript-eslint/types@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/types@npm:6.21.0" @@ -5800,25 +5512,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.19.0": - version: 6.19.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.19.0" - dependencies: - "@typescript-eslint/types": 6.19.0 - "@typescript-eslint/visitor-keys": 6.19.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - minimatch: 9.0.3 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 - peerDependenciesMeta: - typescript: - optional: true - checksum: 919f9588840cdab7e0ef6471f4c35d602523b142b2cffeabe9171d6ce65eb7f41614d0cb17e008e0d8e796374821ab053ced35b84642c3b1d491987362f2fdb5 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" @@ -5855,23 +5548,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^6.13.0": - version: 6.19.0 - resolution: "@typescript-eslint/utils@npm:6.19.0" - dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@types/json-schema": ^7.0.12 - "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.19.0 - "@typescript-eslint/types": 6.19.0 - "@typescript-eslint/typescript-estree": 6.19.0 - semver: ^7.5.4 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 05a26251a526232b08850b6c3327637213ef989453e353f3a8255433b74893a70d5c38369c528b762e853b7586d7830d728b372494e65f37770ecb05a88112d4 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/visitor-keys@npm:4.33.0" @@ -5882,16 +5558,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.19.0": - version: 6.19.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.19.0" - dependencies: - "@typescript-eslint/types": 6.19.0 - eslint-visitor-keys: ^3.4.1 - checksum: 35b11143e1b55ecf01e0f513085df2cc83d0781f4a8354dc10f6ec3356f66b91a1ed8abadb6fb66af1c1746f9c874eabc8b5636882466e229cda5d6a39aada08 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" @@ -5963,15 +5629,6 @@ __metadata: languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: ^5.0.0 - checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75 - languageName: node - linkType: hard - "acorn-import-attributes@npm:^1.9.5": version: 1.9.5 resolution: "acorn-import-attributes@npm:1.9.5" @@ -6049,7 +5706,7 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": +"agentkeepalive@npm:^4.2.1": version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" dependencies: @@ -6177,6 +5834,13 @@ __metadata: languageName: node linkType: hard +"ansis@npm:^3.3.1, ansis@npm:^3.3.2": + version: 3.3.2 + resolution: "ansis@npm:3.3.2" + checksum: 6d3e8a68a93b03a1e7166cbe63cb6831780a7a9b0bc6c3bf0a33c7237d528d00558af84a54827322a85667d4b52d21f796b884f6120ec203b5ed3f9404ec0d05 + languageName: node + linkType: hard + "anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" @@ -6219,16 +5883,6 @@ __metadata: languageName: node linkType: hard -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c - languageName: node - linkType: hard - "are-we-there-yet@npm:^3.0.0": version: 3.0.1 resolution: "are-we-there-yet@npm:3.0.1" @@ -6658,13 +6312,6 @@ __metadata: languageName: node linkType: hard -"binaryextensions@npm:^4.15.0, binaryextensions@npm:^4.16.0": - version: 4.18.0 - resolution: "binaryextensions@npm:4.18.0" - checksum: 6fe92a9004c5a7c08a8d49ac4087581043a0d195e76c288619c13e9232d0b80543f01da0037bb0f1b02830c174721fcad92bdfe76c84295cc8f308ee3b74d184 - languageName: node - linkType: hard - "bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -6763,16 +6410,6 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: ^1.3.1 - ieee754: ^1.2.1 - checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 - languageName: node - linkType: hard - "buildcheck@npm:~0.0.6": version: 0.0.6 resolution: "buildcheck@npm:0.0.6" @@ -6824,32 +6461,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^15.0.3, cacache@npm:^15.0.5, cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" - dependencies: - "@npmcli/fs": ^1.0.0 - "@npmcli/move-file": ^1.0.1 - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - glob: ^7.1.4 - infer-owner: ^1.0.4 - lru-cache: ^6.0.0 - minipass: ^3.1.1 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.2 - mkdirp: ^1.0.3 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^8.0.1 - tar: ^6.0.2 - unique-filename: ^1.1.1 - checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 - languageName: node - linkType: hard - "cacache@npm:^16.0.0, cacache@npm:^16.0.6, cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" @@ -6903,6 +6514,28 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^7.0.0": + version: 7.0.0 + resolution: "cacheable-lookup@npm:7.0.0" + checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 + languageName: node + linkType: hard + +"cacheable-request@npm:^10.2.8": + version: 10.2.14 + resolution: "cacheable-request@npm:10.2.14" + dependencies: + "@types/http-cache-semantics": ^4.0.2 + get-stream: ^6.0.1 + http-cache-semantics: ^4.1.1 + keyv: ^4.5.3 + mimic-response: ^4.0.0 + normalize-url: ^8.0.0 + responselike: ^3.0.0 + checksum: 56f2b8e1c497c91f8391f0b099d19907a7dde25e71087e622b23e45fc8061736c2a6964ef121b16f377c3c61079cf8dc17320ab54004209d1343e4d26aba7015 + languageName: node + linkType: hard + "cacheable-request@npm:^2.1.1": version: 2.1.4 resolution: "cacheable-request@npm:2.1.4" @@ -7311,15 +6944,6 @@ __metadata: languageName: node linkType: hard -"cli-table@npm:^0.3.1": - version: 0.3.11 - resolution: "cli-table@npm:0.3.11" - dependencies: - colors: 1.0.3 - checksum: 59fb61f992ac9bc8610ed98c72bf7f5d396c5afb42926b6747b46b0f8bb98a0dfa097998e77542ac334c1eb7c18dbf4f104d5783493273c5ec4c34084aa7c663 - languageName: node - linkType: hard - "cli-ux@npm:^4.9.3": version: 4.9.3 resolution: "cli-ux@npm:4.9.3" @@ -7429,13 +7053,6 @@ __metadata: languageName: node linkType: hard -"clone-buffer@npm:^1.0.0": - version: 1.0.0 - resolution: "clone-buffer@npm:1.0.0" - checksum: a39a35e7fd081e0f362ba8195bd15cbc8205df1fbe4598bb4e09c1f9a13c0320a47ab8a61a8aa83561e4ed34dc07666d73254ee952ddd3985e4286b082fe63b9 - languageName: node - linkType: hard - "clone-deep@npm:^4.0.1": version: 4.0.1 resolution: "clone-deep@npm:4.0.1" @@ -7456,13 +7073,6 @@ __metadata: languageName: node linkType: hard -"clone-stats@npm:^1.0.0": - version: 1.0.0 - resolution: "clone-stats@npm:1.0.0" - checksum: 654c0425afc5c5c55a4d95b2e0c6eccdd55b5247e7a1e7cca9000b13688b96b0a157950c72c5307f9fd61f17333ad796d3cd654778f2d605438012391cc4ada5 - languageName: node - linkType: hard - "clone@npm:^1.0.2": version: 1.0.4 resolution: "clone@npm:1.0.4" @@ -7470,24 +7080,6 @@ __metadata: languageName: node linkType: hard -"clone@npm:^2.1.1": - version: 2.1.2 - resolution: "clone@npm:2.1.2" - checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d - languageName: node - linkType: hard - -"cloneable-readable@npm:^1.0.0": - version: 1.1.3 - resolution: "cloneable-readable@npm:1.1.3" - dependencies: - inherits: ^2.0.1 - process-nextick-args: ^2.0.0 - readable-stream: ^2.3.5 - checksum: 23b3741225a80c1760dff58aafb6a45383d5ee2d42de7124e4e674387cfad2404493d685b35ebfca9098f99c296e5c5719e748c9750c13838a2016ea2d2bb83a - languageName: node - linkType: hard - "cmd-shim@npm:^5.0.0": version: 5.0.0 resolution: "cmd-shim@npm:5.0.0" @@ -7536,24 +7128,14 @@ __metadata: languageName: node linkType: hard -"color-name@npm:^1.0.0, color-name@npm:~1.1.4": +"color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard -"color-string@npm:^1.9.0": - version: 1.9.1 - resolution: "color-string@npm:1.9.1" - dependencies: - color-name: ^1.0.0 - simple-swizzle: ^0.2.2 - checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2, color-support@npm:^1.1.3": +"color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: @@ -7562,17 +7144,7 @@ __metadata: languageName: node linkType: hard -"color@npm:^4.2.3": - version: 4.2.3 - resolution: "color@npm:4.2.3" - dependencies: - color-convert: ^2.0.1 - color-string: ^1.9.0 - checksum: 0579629c02c631b426780038da929cca8e8d80a40158b09811a0112a107c62e10e4aad719843b791b1e658ab4e800558f2e87ca4522c8b32349d497ecb6adeb4 - languageName: node - linkType: hard - -"colors@npm:1.0.3, colors@npm:1.0.x": +"colors@npm:1.0.x": version: 1.0.3 resolution: "colors@npm:1.0.3" checksum: 234e8d3ab7e4003851cdd6a1f02eaa16dabc502ee5f4dc576ad7959c64b7477b15bd21177bab4055a4c0a66aa3d919753958030445f87c39a253d73b7a3637f5 @@ -7598,13 +7170,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:7.1.0": - version: 7.1.0 - resolution: "commander@npm:7.1.0" - checksum: 99c120b939b610b1fb4a14424b48dc6431643ec46836f251a26434ad77b1eed22577a36378cfd66ed4b56fc69f98553f7dcb30f1539e3685874fd77cfb6e52fb - languageName: node - linkType: hard - "commander@npm:^11.1.0": version: 11.1.0 resolution: "commander@npm:11.1.0" @@ -7675,7 +7240,7 @@ __metadata: languageName: node linkType: hard -"config-chain@npm:^1.1.12": +"config-chain@npm:^1.1.11, config-chain@npm:^1.1.12": version: 1.1.13 resolution: "config-chain@npm:1.1.13" dependencies: @@ -7705,7 +7270,7 @@ __metadata: languageName: node linkType: hard -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": +"console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed @@ -8166,13 +7731,6 @@ __metadata: languageName: node linkType: hard -"dateformat@npm:^4.5.0": - version: 4.6.3 - resolution: "dateformat@npm:4.6.3" - checksum: c3aa0617c0a5b30595122bc8d1bee6276a9221e4d392087b41cbbdf175d9662ae0e50d0d6dcdf45caeac5153c4b5b0844265f8cd2b2245451e3da19e39e3b65d - languageName: node - linkType: hard - "debug@npm:2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -8233,6 +7791,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.3.5, debug@npm:^4.3.7": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 + languageName: node + linkType: hard + "debuglog@npm:^1.0.1": version: 1.0.1 resolution: "debuglog@npm:1.0.1" @@ -8314,13 +7884,6 @@ __metadata: languageName: node linkType: hard -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 - languageName: node - linkType: hard - "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -8346,7 +7909,7 @@ __metadata: languageName: node linkType: hard -"defer-to-connect@npm:^2.0.0": +"defer-to-connect@npm:^2.0.0, defer-to-connect@npm:^2.0.1": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b @@ -8434,6 +7997,20 @@ __metadata: languageName: node linkType: hard +"detect-indent@npm:^7.0.1": + version: 7.0.1 + resolution: "detect-indent@npm:7.0.1" + checksum: cbf3f0b1c3c881934ca94428e1179b26ab2a587e0d719031d37a67fb506d49d067de54ff057cb1e772e75975fed5155c01cd4518306fee60988b1486e3fc7768 + languageName: node + linkType: hard + +"detect-newline@npm:^4.0.0": + version: 4.0.1 + resolution: "detect-newline@npm:4.0.1" + checksum: 0409ecdfb93419591ccff24fccfe2ddddad29b66637d1ed898872125b25af05014fdeedc9306339577060f69f59fe6e9830cdd80948597f136dfbffefa60599c + languageName: node + linkType: hard + "dezalgo@npm:^1.0.0": version: 1.0.3 resolution: "dezalgo@npm:1.0.3" @@ -8465,13 +8042,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -8578,7 +8148,7 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.6, ejs@npm:^3.1.7, ejs@npm:^3.1.8, ejs@npm:^3.1.9": +"ejs@npm:^3.1.10, ejs@npm:^3.1.6, ejs@npm:^3.1.7, ejs@npm:^3.1.8": version: 3.1.10 resolution: "ejs@npm:3.1.10" dependencies: @@ -8610,7 +8180,7 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.12, encoding@npm:^0.1.13": +"encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: @@ -8688,13 +8258,6 @@ __metadata: languageName: node linkType: hard -"error@npm:^10.4.0": - version: 10.4.0 - resolution: "error@npm:10.4.0" - checksum: 26c9ecb7af8de775c7f8c143aa2557cf42bf6dddbef1d68db8ad3501a29af872bea53ca4e2af20ac464bf7475a2827bd37898846fea27692c3ce66500a3e3fc2 - languageName: node - linkType: hard - "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": version: 1.21.2 resolution: "es-abstract@npm:1.21.2" @@ -9158,32 +8721,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-perfectionist@npm:^2.1.0": - version: 2.5.0 - resolution: "eslint-plugin-perfectionist@npm:2.5.0" - dependencies: - "@typescript-eslint/utils": ^6.13.0 - minimatch: ^9.0.3 - natural-compare-lite: ^1.4.0 - peerDependencies: - astro-eslint-parser: ^0.16.0 - eslint: ">=8.0.0" - svelte: ">=3.0.0" - svelte-eslint-parser: ^0.33.0 - vue-eslint-parser: ">=9.0.0" - peerDependenciesMeta: - astro-eslint-parser: - optional: true - svelte: - optional: true - svelte-eslint-parser: - optional: true - vue-eslint-parser: - optional: true - checksum: aae76d0f9131b87bdc93090d1053029f2b35bac8162a0f25f4cb4440ba229fdc2018a2101d89b3283c0e6f336309842fddd4b64b31145a14fa44e32ef8742a31 - languageName: node - linkType: hard - "eslint-plugin-promise@npm:^6.1.1": version: 6.1.1 resolution: "eslint-plugin-promise@npm:6.1.1" @@ -9504,13 +9041,6 @@ __metadata: languageName: node linkType: hard -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166 - languageName: node - linkType: hard - "eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" @@ -9518,14 +9048,7 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.3.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 - languageName: node - linkType: hard - -"execa@npm:5.1.1, execa@npm:^5.0.0, execa@npm:^5.1.1": +"execa@npm:5.1.1, execa@npm:^5.0.0": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -9706,7 +9229,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.3.2": +"fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -9742,14 +9265,14 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:4.2.5": - version: 4.2.5 - resolution: "fast-xml-parser@npm:4.2.5" +"fast-xml-parser@npm:4.4.1": + version: 4.4.1 + resolution: "fast-xml-parser@npm:4.4.1" dependencies: strnum: ^1.0.5 bin: fxparser: src/cli/cli.js - checksum: d32b22005504eeb207249bf40dc82d0994b5bb9ca9dcc731d335a1f425e47fe085b3cace3cf9d32172dd1a5544193c49e8615ca95b4bf95a4a4920a226b06d80 + checksum: f440c01cd141b98789ae777503bcb6727393296094cc82924ae9f88a5b971baa4eec7e65306c7e07746534caa661fc83694ff437d9012dc84dee39dfbfaab947 languageName: node linkType: hard @@ -9906,16 +9429,6 @@ __metadata: languageName: node linkType: hard -"find-yarn-workspace-root2@npm:1.2.16": - version: 1.2.16 - resolution: "find-yarn-workspace-root2@npm:1.2.16" - dependencies: - micromatch: ^4.0.2 - pkg-dir: ^4.2.0 - checksum: b4abdd37ab87c2172e2abab69ecbfed365d63232742cd1f0a165020fba1b200478e944ec2035c6aaf0ae142ac4c523cbf08670f45e59b242bcc295731b017825 - languageName: node - linkType: hard - "find-yarn-workspace-root@npm:^2.0.0": version: 2.0.0 resolution: "find-yarn-workspace-root@npm:2.0.0" @@ -9934,15 +9447,6 @@ __metadata: languageName: node linkType: hard -"first-chunk-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "first-chunk-stream@npm:2.0.0" - dependencies: - readable-stream: ^2.0.2 - checksum: 2fa86f93a455eac09a9dd1339464f06510183fb4f1062b936d10605bce5728ec5c564a268318efd7f2b55a1ce3ff4dc795585a99fe5dd1940caf28afeb284b47 - languageName: node - linkType: hard - "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" @@ -10047,6 +9551,13 @@ __metadata: languageName: node linkType: hard +"form-data-encoder@npm:^2.1.2": + version: 2.1.4 + resolution: "form-data-encoder@npm:2.1.4" + checksum: e0b3e5950fb69b3f32c273944620f9861f1933df9d3e42066e038e26dfb343d0f4465de9f27e0ead1a09d9df20bc2eed06a63c2ca2f8f00949e7202bae9e29dd + languageName: node + linkType: hard + "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -10256,23 +9767,6 @@ __metadata: languageName: node linkType: hard -"gauge@npm:^3.0.0": - version: 3.0.2 - resolution: "gauge@npm:3.0.2" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.1 - object-assign: ^4.1.1 - signal-exit: ^3.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 - languageName: node - linkType: hard - "gauge@npm:^4.0.3": version: 4.0.4 resolution: "gauge@npm:4.0.4" @@ -10408,7 +9902,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0": +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad @@ -10452,6 +9946,13 @@ __metadata: languageName: node linkType: hard +"git-hooks-list@npm:^3.0.0": + version: 3.1.0 + resolution: "git-hooks-list@npm:3.1.0" + checksum: 05cbdb29e1e14f3b6fde78c876a34383e4476b1be32e8486ad03293f01add884c1a8df8c2dce2ca5d99119c94951b2ff9fa9cbd51d834ae6477b6813cefb998f + languageName: node + linkType: hard + "git-raw-commits@npm:^2.0.8": version: 2.0.11 resolution: "git-raw-commits@npm:2.0.11" @@ -10517,10 +10018,10 @@ __metadata: languageName: node linkType: hard -"github-slugger@npm:^1.5.0": - version: 1.5.0 - resolution: "github-slugger@npm:1.5.0" - checksum: c70988224578b3bdaa25df65973ffc8c24594a77a28550c3636e495e49d17aef5cdb04c04fa3f1744babef98c61eecc6a43299a13ea7f3cc33d680bf9053ffbe +"github-slugger@npm:^2": + version: 2.0.0 + resolution: "github-slugger@npm:2.0.0" + checksum: 250375cde2058f21454872c2c79f72c4637340c30c51ff158ca4ec71cbc478f33d54477d787a662f9207aeb095a2060f155bc01f15329ba8a5fb6698e0fc81f8 languageName: node linkType: hard @@ -10533,15 +10034,6 @@ __metadata: languageName: node linkType: hard -"github-username@npm:^6.0.0": - version: 6.0.0 - resolution: "github-username@npm:6.0.0" - dependencies: - "@octokit/rest": ^18.0.6 - checksum: c40a6151dc293b66809c4c52c21dde2b0ea91a256e1a2eb489658947c12032aecd781c61b921e613f52290feb88c53994ee59a09450bfde2eeded34b3e07e2b7 - languageName: node - linkType: hard - "glob-parent@npm:^5.1.1, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -10618,20 +10110,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.0": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - "glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.1.5 resolution: "glob@npm:7.1.5" @@ -10739,7 +10217,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.1, globby@npm:^11.0.2, globby@npm:^11.0.3, globby@npm:^11.1.0": +"globby@npm:^11.0.2, globby@npm:^11.0.3, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -10753,6 +10231,19 @@ __metadata: languageName: node linkType: hard +"globby@npm:^13.1.2": + version: 13.2.2 + resolution: "globby@npm:13.2.2" + dependencies: + dir-glob: ^3.0.1 + fast-glob: ^3.3.0 + ignore: ^5.2.4 + merge2: ^1.4.1 + slash: ^4.0.0 + checksum: f3d84ced58a901b4fcc29c846983108c426631fe47e94872868b65565495f7bee7b3defd68923bd480582771fd4bbe819217803a164a618ad76f1d22f666f41e + languageName: node + linkType: hard + "globby@npm:^13.1.3": version: 13.1.4 resolution: "globby@npm:13.1.4" @@ -10782,7 +10273,7 @@ __metadata: languageName: node linkType: hard -"got@npm:^11, got@npm:^11.8.6": +"got@npm:^11.8.6": version: 11.8.6 resolution: "got@npm:11.8.6" dependencies: @@ -10801,6 +10292,25 @@ __metadata: languageName: node linkType: hard +"got@npm:^13": + version: 13.0.0 + resolution: "got@npm:13.0.0" + dependencies: + "@sindresorhus/is": ^5.2.0 + "@szmarczak/http-timer": ^5.0.1 + cacheable-lookup: ^7.0.0 + cacheable-request: ^10.2.8 + decompress-response: ^6.0.0 + form-data-encoder: ^2.1.2 + get-stream: ^6.0.1 + http2-wrapper: ^2.1.10 + lowercase-keys: ^3.0.0 + p-cancelable: ^3.0.0 + responselike: ^3.0.0 + checksum: bcae6601efd710bc6c5b454c5e44bcb16fcfe57a1065e2d61ff918c1d69c3cf124984ebf509ca64ed10f0da2d2b5531b77da05aa786e75849d084fb8fbea711b + languageName: node + linkType: hard + "got@npm:^8.3.1": version: 8.3.2 resolution: "got@npm:8.3.2" @@ -10826,7 +10336,14 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:4.2.10": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -10840,13 +10357,6 @@ __metadata: languageName: node linkType: hard -"grouped-queue@npm:^2.0.0": - version: 2.0.0 - resolution: "grouped-queue@npm:2.0.0" - checksum: be5c6cfac0db6b6f147d82d6a6629170afe84df8f8fe56bc3acfa53603c30141cf8a6a31b341c08d4acacd323385044fef2d750a979942c967c501fad5b6a633 - languageName: node - linkType: hard - "growl@npm:1.10.5": version: 1.10.5 resolution: "growl@npm:1.10.5" @@ -11226,7 +10736,7 @@ __metadata: nock: ^13.5.1 node-fetch: ^2.6.7 nyc: ^15.1.0 - oclif: 4.4.7 + oclif: 4.14.36 open: ^8.4.2 phoenix: ^1.6.14 portfinder: ^1.0.32 @@ -11310,12 +10820,12 @@ __metadata: languageName: node linkType: hard -"hosted-git-info@npm:^6.0.0": - version: 6.1.1 - resolution: "hosted-git-info@npm:6.1.1" +"hosted-git-info@npm:^7.0.0": + version: 7.0.2 + resolution: "hosted-git-info@npm:7.0.2" dependencies: - lru-cache: ^7.5.1 - checksum: fcd3ca2eaa05f3201425ccbb8aa47f88cdda4a3a6d79453f8e269f7171356278bd1db08f059d8439eb5eaa91c6a8a20800fc49cca6e9e4e899b202a332d5ba6b + lru-cache: ^10.0.1 + checksum: 467cf908a56556417b18e86ae3b8dee03c2360ef1d51e61c4028fe87f6f309b6ff038589c94b5666af207da9d972d5107698906aabeb78aca134641962a5c6f8 languageName: node linkType: hard @@ -11382,17 +10892,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -11436,6 +10935,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^2.1.10": + version: 2.2.1 + resolution: "http2-wrapper@npm:2.2.1" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.2.0 + checksum: e95e55e22c6fd61182ce81fecb9b7da3af680d479febe8ad870d05f7ebbc9f076e455193766f4e7934e50913bf1d8da3ba121fb5cd2928892390b58cf9d5c509 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -11496,22 +11005,13 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": +"ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e languageName: node linkType: hard -"ignore-walk@npm:^4.0.1": - version: 4.0.1 - resolution: "ignore-walk@npm:4.0.1" - dependencies: - minimatch: ^3.0.4 - checksum: 903cd5cb68d57b2e70fddb83d885aea55f137a44636254a29b08037797376d8d3e09d1c58935778f3a271bf6a2b41ecc54fc22260ac07190e09e1ec7253b49f3 - languageName: node - linkType: hard - "ignore-walk@npm:^5.0.1": version: 5.0.1 resolution: "ignore-walk@npm:5.0.1" @@ -11521,15 +11021,6 @@ __metadata: languageName: node linkType: hard -"ignore-walk@npm:^6.0.0": - version: 6.0.3 - resolution: "ignore-walk@npm:6.0.3" - dependencies: - minimatch: ^9.0.0 - checksum: d8ba534beb3a3fa48ddd32c79bbedb14a831ff7fab548674765d661d8f8d0df4b0827e3ad86e35cb15ff027655bfd6a477bd8d5d0411e229975a7c716f1fc9de - languageName: node - linkType: hard - "ignore@npm:^4.0.6": version: 4.0.6 resolution: "ignore@npm:4.0.6" @@ -11690,7 +11181,7 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^8.0.0, inquirer@npm:^8.2.4": +"inquirer@npm:^8.2.4": version: 8.2.5 resolution: "inquirer@npm:8.2.5" dependencies: @@ -11758,13 +11249,6 @@ __metadata: languageName: node linkType: hard -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 - languageName: node - linkType: hard - "into-stream@npm:^3.1.0": version: 3.1.0 resolution: "into-stream@npm:3.1.0" @@ -11825,13 +11309,6 @@ __metadata: languageName: node linkType: hard -"is-arrayish@npm:^0.3.1": - version: 0.3.2 - resolution: "is-arrayish@npm:0.3.2" - checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f - languageName: node - linkType: hard - "is-async-function@npm:^2.0.0": version: 2.0.0 resolution: "is-async-function@npm:2.0.0" @@ -11896,7 +11373,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" dependencies: @@ -11957,6 +11434,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -11998,6 +11484,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -12091,6 +11588,13 @@ __metadata: languageName: node linkType: hard +"is-plain-obj@npm:^4.1.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce + languageName: node + linkType: hard + "is-plain-object@npm:^2.0.4": version: 2.0.4 resolution: "is-plain-object@npm:2.0.4" @@ -12124,15 +11628,6 @@ __metadata: languageName: node linkType: hard -"is-scoped@npm:^2.1.0": - version: 2.1.0 - resolution: "is-scoped@npm:2.1.0" - dependencies: - scoped-regex: ^2.0.0 - checksum: bc4726ec6c71c10d095e815040e361ce9f75503b9c2b1dadd3af720222034cd35e2601e44002a9e372709abc1dba357195c64977395adac2c100789becc901fb - languageName: node - linkType: hard - "is-set@npm:^2.0.3": version: 2.0.3 resolution: "is-set@npm:2.0.3" @@ -12260,13 +11755,6 @@ __metadata: languageName: node linkType: hard -"is-utf8@npm:^0.2.0, is-utf8@npm:^0.2.1": - version: 0.2.1 - resolution: "is-utf8@npm:0.2.1" - checksum: 167ccd2be869fc228cc62c1a28df4b78c6b5485d15a29027d3b5dceb09b383e86a3522008b56dcac14b592b22f0a224388718c2505027a994fd8471465de54b3 - languageName: node - linkType: hard - "is-weakmap@npm:^2.0.2": version: 2.0.2 resolution: "is-weakmap@npm:2.0.2" @@ -12316,6 +11804,15 @@ __metadata: languageName: node linkType: hard +"is-wsl@npm:^3": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + languageName: node + linkType: hard + "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" @@ -12337,20 +11834,6 @@ __metadata: languageName: node linkType: hard -"isbinaryfile@npm:^4.0.10, isbinaryfile@npm:^4.0.8": - version: 4.0.10 - resolution: "isbinaryfile@npm:4.0.10" - checksum: a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686 - languageName: node - linkType: hard - -"isbinaryfile@npm:^5.0.0": - version: 5.0.0 - resolution: "isbinaryfile@npm:5.0.0" - checksum: 25cc27388d51b8322c103f5894f9e72ec04e017734e57c4b70be2666501ec7e7f6cbb4a5fcfd15260a7cac979bd1ddb7f5231f5a3098c0695c4e7c049513dfaf - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -12537,7 +12020,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -12600,13 +12083,6 @@ __metadata: languageName: node linkType: hard -"json-parse-even-better-errors@npm:^3.0.0": - version: 3.0.0 - resolution: "json-parse-even-better-errors@npm:3.0.0" - checksum: f1970b5220c7fa23d888565510752c3d5e863f93668a202fcaa719739fa41485dfc6a1db212f702ebd3c873851cc067aebc2917e3f79763cae2fdb95046f38f3 - languageName: node - linkType: hard - "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -12873,6 +12349,13 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:^3.1.2": + version: 3.1.2 + resolution: "lilconfig@npm:3.1.2" + checksum: 4e8b83ddd1d0ad722600994e6ba5d858ddca14f0587aa6b9c8185e17548149b5e13d4d583d811e9e9323157fa8c6a527e827739794c7502b59243c58e210b8c3 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.1.6 resolution: "lines-and-columns@npm:1.1.6" @@ -12924,18 +12407,6 @@ __metadata: languageName: node linkType: hard -"load-yaml-file@npm:^0.2.0": - version: 0.2.0 - resolution: "load-yaml-file@npm:0.2.0" - dependencies: - graceful-fs: ^4.1.5 - js-yaml: ^3.13.0 - pify: ^4.0.1 - strip-bom: ^3.0.0 - checksum: d86d7ec7b15a1c35b40fb0d8abe710a7de83e0c1186c1d35a7eaaf8581611828089a3e706f64560c2939762bc73f18a7b85aed9335058c640e033933cf317f11 - languageName: node - linkType: hard - "locate-path@npm:^2.0.0": version: 2.0.0 resolution: "locate-path@npm:2.0.0" @@ -12983,13 +12454,6 @@ __metadata: languageName: node linkType: hard -"lodash._reinterpolate@npm:^3.0.0": - version: 3.0.0 - resolution: "lodash._reinterpolate@npm:3.0.0" - checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 - languageName: node - linkType: hard - "lodash.defaults@npm:^4.1.0": version: 4.2.0 resolution: "lodash.defaults@npm:4.2.0" @@ -13046,25 +12510,6 @@ __metadata: languageName: node linkType: hard -"lodash.template@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.template@npm:4.5.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - lodash.templatesettings: ^4.0.0 - checksum: ca64e5f07b6646c9d3dbc0fe3aaa995cb227c4918abd1cef7a9024cd9c924f2fa389a0ec4296aa6634667e029bc81d4bbdb8efbfde11df76d66085e6c529b450 - languageName: node - linkType: hard - -"lodash.templatesettings@npm:^4.0.0": - version: 4.2.0 - resolution: "lodash.templatesettings@npm:4.2.0" - dependencies: - lodash._reinterpolate: ^3.0.0 - checksum: 863e025478b092997e11a04e9d9e735875eeff1ffcd6c61742aa8272e3c2cddc89ce795eb9726c4e74cef5991f722897ff37df7738a125895f23fc7d12a7bb59 - languageName: node - linkType: hard - "lodash.throttle@npm:^4.1.1": version: 4.1.1 resolution: "lodash.throttle@npm:4.1.1" @@ -13102,7 +12547,7 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:4.1.0, log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": +"log-symbols@npm:4.1.0, log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -13185,6 +12630,20 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^3.0.0": + version: 3.0.0 + resolution: "lowercase-keys@npm:3.0.0" + checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -13259,7 +12718,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.1, make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6": +"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" dependencies: @@ -13283,7 +12742,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^11.0.0, make-fetch-happen@npm:^11.0.1, make-fetch-happen@npm:^11.0.3, make-fetch-happen@npm:^11.1.1": +"make-fetch-happen@npm:^11.0.3": version: 11.1.1 resolution: "make-fetch-happen@npm:11.1.1" dependencies: @@ -13306,30 +12765,6 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - dependencies: - agentkeepalive: ^4.1.3 - cacache: ^15.2.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^6.0.0 - minipass: ^3.1.3 - minipass-collect: ^1.0.2 - minipass-fetch: ^1.3.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.2 - promise-retry: ^2.0.1 - socks-proxy-agent: ^6.0.0 - ssri: ^8.0.0 - checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 - languageName: node - linkType: hard - "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" @@ -13344,64 +12779,6 @@ __metadata: languageName: node linkType: hard -"mem-fs-editor@npm:^8.1.2 || ^9.0.0": - version: 9.5.0 - resolution: "mem-fs-editor@npm:9.5.0" - dependencies: - binaryextensions: ^4.16.0 - commondir: ^1.0.1 - deep-extend: ^0.6.0 - ejs: ^3.1.8 - globby: ^11.1.0 - isbinaryfile: ^4.0.8 - minimatch: ^3.1.2 - multimatch: ^5.0.0 - normalize-path: ^3.0.0 - textextensions: ^5.13.0 - peerDependencies: - mem-fs: ^2.1.0 - peerDependenciesMeta: - mem-fs: - optional: true - checksum: 65919d02f596c14245cc75f0493e0221973753ce9bd490b6eb47026e7d64cb18cb17c8760441c65c56c51d83bf6fbc2e6c0a858fa162dfd2054ee3d0210d3579 - languageName: node - linkType: hard - -"mem-fs-editor@npm:^9.0.0": - version: 9.7.0 - resolution: "mem-fs-editor@npm:9.7.0" - dependencies: - binaryextensions: ^4.16.0 - commondir: ^1.0.1 - deep-extend: ^0.6.0 - ejs: ^3.1.8 - globby: ^11.1.0 - isbinaryfile: ^5.0.0 - minimatch: ^7.2.0 - multimatch: ^5.0.0 - normalize-path: ^3.0.0 - textextensions: ^5.13.0 - peerDependencies: - mem-fs: ^2.1.0 - peerDependenciesMeta: - mem-fs: - optional: true - checksum: 25d566b0a0b841ea347f91196f4486386622070655907dab5cc63c0fd49c0ef9f752a1c3e6384b43e9dbd0518086d4a316d1fbed1f0a002b68f291167d1b9520 - languageName: node - linkType: hard - -"mem-fs@npm:^1.2.0 || ^2.0.0": - version: 2.2.1 - resolution: "mem-fs@npm:2.2.1" - dependencies: - "@types/node": ^15.6.1 - "@types/vinyl": ^2.0.4 - vinyl: ^2.0.1 - vinyl-file: ^3.0.0 - checksum: e44fb4acf8391a847b9e9494115b27300eda77aa7c6caea533786f43d385253515b0c0ff4f00906744b2bd31010df923cc448bb6efb9593f41df5d40b0e69046 - languageName: node - linkType: hard - "meow@npm:^8.0.0": version: 8.1.2 resolution: "meow@npm:8.1.2" @@ -13489,6 +12866,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-response@npm:4.0.0" + checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 + languageName: node + linkType: hard + "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -13514,7 +12898,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": +"minimatch@npm:9.0.3, minimatch@npm:^9.0.1": version: 9.0.3 resolution: "minimatch@npm:9.0.3" dependencies: @@ -13523,7 +12907,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -13541,12 +12925,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^7.2.0": - version: 7.4.6 - resolution: "minimatch@npm:7.4.6" +"minimatch@npm:^9.0.5": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: ^2.0.1 - checksum: 1a6c8d22618df9d2a88aabeef1de5622eb7b558e9f8010be791cb6b0fa6e102d39b11c28d75b855a1e377b12edc7db8ff12a99c20353441caa6a05e78deb5da9 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 languageName: node linkType: hard @@ -13577,21 +12961,6 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^1.3.2, minipass-fetch@npm:^1.4.1": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 - dependenciesMeta: - encoding: - optional: true - checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 - languageName: node - linkType: hard - "minipass-fetch@npm:^2.0.3": version: 2.1.2 resolution: "minipass-fetch@npm:2.1.2" @@ -13641,7 +13010,7 @@ __metadata: languageName: node linkType: hard -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": +"minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: @@ -13659,7 +13028,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: @@ -13682,7 +13051,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -13807,7 +13176,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3": +"ms@npm:2.1.3, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -13893,13 +13262,6 @@ __metadata: languageName: node linkType: hard -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -13914,7 +13276,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": +"negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 @@ -14041,26 +13403,6 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^8.2.0": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 - nopt: ^5.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 341710b5da39d3660e6a886b37e210d33f8282047405c2e62c277bcc744c7552c5b8b972ebc3a7d5c2813794e60cc48c3ebd142c46d6e0321db4db6c92dd0355 - languageName: node - linkType: hard - "node-gyp@npm:^9.0.0": version: 9.3.1 resolution: "node-gyp@npm:9.3.1" @@ -14178,7 +13520,7 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^3.0.0, normalize-package-data@npm:^3.0.3": +"normalize-package-data@npm:^3.0.0": version: 3.0.3 resolution: "normalize-package-data@npm:3.0.3" dependencies: @@ -14202,15 +13544,14 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^5.0.0": - version: 5.0.0 - resolution: "normalize-package-data@npm:5.0.0" +"normalize-package-data@npm:^6": + version: 6.0.2 + resolution: "normalize-package-data@npm:6.0.2" dependencies: - hosted-git-info: ^6.0.0 - is-core-module: ^2.8.1 + hosted-git-info: ^7.0.0 semver: ^7.3.5 validate-npm-package-license: ^3.0.4 - checksum: a459f05eaf7c2b643c61234177f08e28064fde97da15800e3d3ac0404e28450d43ac46fc95fbf6407a9bf20af4c58505ad73458a912dc1517f8c1687b1d68c27 + checksum: ea35f8de68e03fc845f545c8197857c0cd256207fdb809ca63c2b39fe76ae77765ee939eb21811fb6c3b533296abf49ebe3cd617064f98a775adaccb24ff2e03 languageName: node linkType: hard @@ -14239,6 +13580,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^8.0.0": + version: 8.0.1 + resolution: "normalize-url@npm:8.0.1" + checksum: 43ea9ef0d6d135dd1556ab67aa4b74820f0d9d15aa504b59fa35647c729f1147dfce48d3ad504998fd1010f089cfb82c86c6d9126eb5c5bd2e9bd25f3a97749b + languageName: node + linkType: hard + "npm-bundled@npm:^1.1.1": version: 1.1.2 resolution: "npm-bundled@npm:1.1.2" @@ -14257,24 +13605,6 @@ __metadata: languageName: node linkType: hard -"npm-bundled@npm:^3.0.0": - version: 3.0.0 - resolution: "npm-bundled@npm:3.0.0" - dependencies: - npm-normalize-package-bin: ^3.0.0 - checksum: 110859c2d6dcd7941dac0932a29171cbde123060486a4b6e897aaf5e025abeb3d9ffcdfe9e9271992e6396b2986c2c534f1029a45a7c196f1257fa244305dbf8 - languageName: node - linkType: hard - -"npm-install-checks@npm:^4.0.0": - version: 4.0.0 - resolution: "npm-install-checks@npm:4.0.0" - dependencies: - semver: ^7.1.1 - checksum: 8308ff48e61e0863d7f148f62543e1f6c832525a7d8002ea742d5e478efa8b29bf65a87f9fb82786e15232e4b3d0362b126c45afdceed4c051c0d3c227dd0ace - languageName: node - linkType: hard - "npm-install-checks@npm:^5.0.0": version: 5.0.0 resolution: "npm-install-checks@npm:5.0.0" @@ -14284,15 +13614,6 @@ __metadata: languageName: node linkType: hard -"npm-install-checks@npm:^6.0.0": - version: 6.1.1 - resolution: "npm-install-checks@npm:6.1.1" - dependencies: - semver: ^7.1.1 - checksum: 8fb3ed05cfd3fdeb20d2fd22d45a89cd509afac3b05d188af7d9bcdf07ed745d1346943692782a4dca4c42b2c1fec34eb42fdf20e2ef8bb5b249fbb5a811ce3b - languageName: node - linkType: hard - "npm-normalize-package-bin@npm:^1.0.1": version: 1.0.1 resolution: "npm-normalize-package-bin@npm:1.0.1" @@ -14307,13 +13628,6 @@ __metadata: languageName: node linkType: hard -"npm-normalize-package-bin@npm:^3.0.0": - version: 3.0.1 - resolution: "npm-normalize-package-bin@npm:3.0.1" - checksum: de416d720ab22137a36292ff8a333af499ea0933ef2320a8c6f56a73b0f0448227fec4db5c890d702e26d21d04f271415eab6580b5546456861cc0c19498a4bf - languageName: node - linkType: hard - "npm-package-arg@npm:8.1.1": version: 8.1.1 resolution: "npm-package-arg@npm:8.1.1" @@ -14325,29 +13639,6 @@ __metadata: languageName: node linkType: hard -"npm-package-arg@npm:^10.0.0": - version: 10.1.0 - resolution: "npm-package-arg@npm:10.1.0" - dependencies: - hosted-git-info: ^6.0.0 - proc-log: ^3.0.0 - semver: ^7.3.5 - validate-npm-package-name: ^5.0.0 - checksum: 8fe4b6a742502345e4836ed42fdf26c544c9f75563c476c67044a481ada6e81f71b55462489c7e1899d516e4347150e58028036a90fa11d47e320bcc9365fd30 - languageName: node - linkType: hard - -"npm-package-arg@npm:^8.0.1, npm-package-arg@npm:^8.1.2, npm-package-arg@npm:^8.1.5": - version: 8.1.5 - resolution: "npm-package-arg@npm:8.1.5" - dependencies: - hosted-git-info: ^4.0.1 - semver: ^7.3.4 - validate-npm-package-name: ^3.0.0 - checksum: ae76afbcebb4ea8d0b849b8b18ed1b0491030fb04a0af5d75f1b8390cc50bec186ced9fbe60f47d939eab630c7c0db0919d879ac56a87d3782267dfe8eec60d3 - languageName: node - linkType: hard - "npm-package-arg@npm:^9.0.0, npm-package-arg@npm:^9.0.1": version: 9.1.2 resolution: "npm-package-arg@npm:9.1.2" @@ -14360,20 +13651,6 @@ __metadata: languageName: node linkType: hard -"npm-packlist@npm:^3.0.0": - version: 3.0.0 - resolution: "npm-packlist@npm:3.0.0" - dependencies: - glob: ^7.1.6 - ignore-walk: ^4.0.1 - npm-bundled: ^1.1.1 - npm-normalize-package-bin: ^1.0.1 - bin: - npm-packlist: bin/index.js - checksum: 8550ecdec5feb2708aa8289e71c3e9ed72dd792642dd3d2c871955504c0e460bc1c2106483a164eb405b3cdfcfddf311315d4a647fca1a511f710654c015a91e - languageName: node - linkType: hard - "npm-packlist@npm:^5.1.0, npm-packlist@npm:^5.1.1": version: 5.1.3 resolution: "npm-packlist@npm:5.1.3" @@ -14388,27 +13665,6 @@ __metadata: languageName: node linkType: hard -"npm-packlist@npm:^7.0.0": - version: 7.0.4 - resolution: "npm-packlist@npm:7.0.4" - dependencies: - ignore-walk: ^6.0.0 - checksum: 5ffa1f8f0b32141a60a66713fa3ed03b8ee4800b1ed6b59194d03c3c85da88f3fc21e1de29b665f322678bae85198732b16aa76c0a7cb0e283f9e0db50752233 - languageName: node - linkType: hard - -"npm-pick-manifest@npm:^6.0.0, npm-pick-manifest@npm:^6.1.0, npm-pick-manifest@npm:^6.1.1": - version: 6.1.1 - resolution: "npm-pick-manifest@npm:6.1.1" - dependencies: - npm-install-checks: ^4.0.0 - npm-normalize-package-bin: ^1.0.1 - npm-package-arg: ^8.1.2 - semver: ^7.3.4 - checksum: 7a7b9475ae95cf903d37471229efbd12a829a9a7a1020ba36e75768aaa35da4c3a087fde3f06070baf81ec6b2ea2b660f022a1172644e6e7188199d7c1d2954b - languageName: node - linkType: hard - "npm-pick-manifest@npm:^7.0.0": version: 7.0.2 resolution: "npm-pick-manifest@npm:7.0.2" @@ -14421,32 +13677,6 @@ __metadata: languageName: node linkType: hard -"npm-pick-manifest@npm:^8.0.0": - version: 8.0.2 - resolution: "npm-pick-manifest@npm:8.0.2" - dependencies: - npm-install-checks: ^6.0.0 - npm-normalize-package-bin: ^3.0.0 - npm-package-arg: ^10.0.0 - semver: ^7.3.5 - checksum: c9f71b57351a3a241a7e56148332f2f341a09dff2a1b1f4ffb1517eac25f1888ac7fbce4939e522cbd533577448c307d05fff0c32430cc03c8c6179fac320cd4 - languageName: node - linkType: hard - -"npm-registry-fetch@npm:^12.0.0, npm-registry-fetch@npm:^12.0.1": - version: 12.0.2 - resolution: "npm-registry-fetch@npm:12.0.2" - dependencies: - make-fetch-happen: ^10.0.1 - minipass: ^3.1.6 - minipass-fetch: ^1.4.1 - minipass-json-stream: ^1.0.1 - minizlib: ^2.1.2 - npm-package-arg: ^8.1.5 - checksum: 88ef49b6fad104165f183ec804a65471a23cead40fa035ac57f2cbe084feffe9c10bed8c4234af3fa549d947108450d5359b41ae5dec9a1ffca4d8fa7c7f78b8 - languageName: node - linkType: hard - "npm-registry-fetch@npm:^13.0.0, npm-registry-fetch@npm:^13.0.1, npm-registry-fetch@npm:^13.3.0": version: 13.3.1 resolution: "npm-registry-fetch@npm:13.3.1" @@ -14462,21 +13692,6 @@ __metadata: languageName: node linkType: hard -"npm-registry-fetch@npm:^14.0.0": - version: 14.0.5 - resolution: "npm-registry-fetch@npm:14.0.5" - dependencies: - make-fetch-happen: ^11.0.0 - minipass: ^5.0.0 - minipass-fetch: ^3.0.0 - minipass-json-stream: ^1.0.1 - minizlib: ^2.1.2 - npm-package-arg: ^10.0.0 - proc-log: ^3.0.0 - checksum: c63649642955b424bc1baaff5955027144af312ae117ba8c24829e74484f859482591fe89687c6597d83e930c8054463eef23020ac69146097a72cc62ff10986 - languageName: node - linkType: hard - "npm-run-path@npm:^2.0.0": version: 2.0.2 resolution: "npm-run-path@npm:2.0.2" @@ -14495,18 +13710,6 @@ __metadata: languageName: node linkType: hard -"npmlog@npm:^5.0.1": - version: 5.0.1 - resolution: "npmlog@npm:5.0.1" - dependencies: - are-we-there-yet: ^2.0.0 - console-control-strings: ^1.1.0 - gauge: ^3.0.0 - set-blocking: ^2.0.0 - checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f - languageName: node - linkType: hard - "npmlog@npm:^6.0.0, npmlog@npm:^6.0.2": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -14731,32 +13934,37 @@ __metadata: languageName: node linkType: hard -"oclif@npm:4.4.7": - version: 4.4.7 - resolution: "oclif@npm:4.4.7" +"oclif@npm:4.14.36": + version: 4.14.36 + resolution: "oclif@npm:4.14.36" dependencies: - "@aws-sdk/client-cloudfront": ^3.504.0 - "@aws-sdk/client-s3": ^3.504.0 - "@oclif/core": ^3.18.2 - "@oclif/plugin-help": ^6.0.12 - "@oclif/plugin-not-found": ^3.0.9 - "@oclif/plugin-warn-if-update-available": ^3.0.9 + "@aws-sdk/client-cloudfront": ^3.645.0 + "@aws-sdk/client-s3": ^3.651.1 + "@inquirer/confirm": ^3.1.22 + "@inquirer/input": ^2.2.4 + "@inquirer/select": ^2.5.0 + "@oclif/core": ^4 + "@oclif/plugin-help": ^6.2.10 + "@oclif/plugin-not-found": ^3.2.21 + "@oclif/plugin-warn-if-update-available": ^3.1.11 async-retry: ^1.3.3 + chalk: ^4 change-case: ^4 - debug: ^4.3.3 - eslint-plugin-perfectionist: ^2.1.0 + debug: ^4.3.4 + ejs: ^3.1.10 find-yarn-workspace-root: ^2.0.0 fs-extra: ^8.1 - github-slugger: ^1.5.0 - got: ^11 - lodash.template: ^4.5.0 - normalize-package-data: ^3.0.3 - semver: ^7.3.8 - yeoman-environment: ^3.15.1 - yeoman-generator: ^5.8.0 + github-slugger: ^2 + got: ^13 + lodash: ^4.17.21 + normalize-package-data: ^6 + semver: ^7.6.3 + sort-package-json: ^2.10.1 + tiny-jsonc: ^1.0.1 + validate-npm-package-name: ^5.0.1 bin: oclif: bin/run.js - checksum: a3070f7536c14e6f16162b1d549b12e050919261cad410534b373ce166a4c9629bdae2a6e89748974ff20429b0fbd2f7edd7306ac0dca64a665d91e8184138fb + checksum: f43f1fe0b7ba9f8d8124585351215b8d8029f874f87f5e7309eba62ffbee53c24056e17083d8226b51d6405e0fb4788a719e2120700cf0c9e53cfb52670e0511 languageName: node linkType: hard @@ -14910,6 +14118,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^3.0.0": + version: 3.0.0 + resolution: "p-cancelable@npm:3.0.0" + checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 + languageName: node + linkType: hard + "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -15081,16 +14296,6 @@ __metadata: languageName: node linkType: hard -"p-transform@npm:^1.3.0": - version: 1.3.0 - resolution: "p-transform@npm:1.3.0" - dependencies: - debug: ^4.3.2 - p-queue: ^6.6.2 - checksum: d1e2d6ad75241878c302531c262e3c13ea50f5e8c9fbfbf119faf415b719158858ae97dda44b8ec91ad9a7efbbcdb731e452b75df860f9515569d57ea66f9cec - languageName: node - linkType: hard - "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" @@ -15126,35 +14331,6 @@ __metadata: languageName: node linkType: hard -"pacote@npm:^12.0.0, pacote@npm:^12.0.2": - version: 12.0.3 - resolution: "pacote@npm:12.0.3" - dependencies: - "@npmcli/git": ^2.1.0 - "@npmcli/installed-package-contents": ^1.0.6 - "@npmcli/promise-spawn": ^1.2.0 - "@npmcli/run-script": ^2.0.0 - cacache: ^15.0.5 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - infer-owner: ^1.0.4 - minipass: ^3.1.3 - mkdirp: ^1.0.3 - npm-package-arg: ^8.0.1 - npm-packlist: ^3.0.0 - npm-pick-manifest: ^6.0.0 - npm-registry-fetch: ^12.0.0 - promise-retry: ^2.0.1 - read-package-json-fast: ^2.0.1 - rimraf: ^3.0.2 - ssri: ^8.0.1 - tar: ^6.1.0 - bin: - pacote: lib/bin.js - checksum: 730e2b344619daff078b1f7c085c2da3b1417f1667204384cba981409098af2375b130a6470f75ea22f09b83c00fe227143b68e50d0dd7ff972e28a697b9c1d5 - languageName: node - linkType: hard - "pacote@npm:^13.0.3, pacote@npm:^13.6.1": version: 13.6.2 resolution: "pacote@npm:13.6.2" @@ -15182,35 +14358,7 @@ __metadata: tar: ^6.1.11 bin: pacote: lib/bin.js - checksum: a7b7f97094ab570a23e1c174537e9953a4d53176cc4b18bac77d7728bd89e2b9fa331d0f78fa463add03df79668a918bbdaa2750819504ee39242063abf53c6e - languageName: node - linkType: hard - -"pacote@npm:^15.2.0": - version: 15.2.0 - resolution: "pacote@npm:15.2.0" - dependencies: - "@npmcli/git": ^4.0.0 - "@npmcli/installed-package-contents": ^2.0.1 - "@npmcli/promise-spawn": ^6.0.1 - "@npmcli/run-script": ^6.0.0 - cacache: ^17.0.0 - fs-minipass: ^3.0.0 - minipass: ^5.0.0 - npm-package-arg: ^10.0.0 - npm-packlist: ^7.0.0 - npm-pick-manifest: ^8.0.0 - npm-registry-fetch: ^14.0.0 - proc-log: ^3.0.0 - promise-retry: ^2.0.1 - read-package-json: ^6.0.0 - read-package-json-fast: ^3.0.0 - sigstore: ^1.3.0 - ssri: ^10.0.0 - tar: ^6.1.11 - bin: - pacote: lib/bin.js - checksum: c731572be2bf226b117eba076d242bd4cd8be7aa01e004af3374a304ad7ab330539e22644bc33de12d2a7d45228ccbcbf4d710f59c84414f3d09a1a95ee6f0bf + checksum: a7b7f97094ab570a23e1c174537e9953a4d53176cc4b18bac77d7728bd89e2b9fa331d0f78fa463add03df79668a918bbdaa2750819504ee39242063abf53c6e languageName: node linkType: hard @@ -15313,16 +14461,6 @@ __metadata: languageName: node linkType: hard -"password-prompt@npm:^1.1.3": - version: 1.1.3 - resolution: "password-prompt@npm:1.1.3" - dependencies: - ansi-escapes: ^4.3.2 - cross-spawn: ^7.0.3 - checksum: 9a5fdbd7360db896809704c141acfe9258450a9982c4c177b82a1e6c69d204800cdab6064abac6736bd7d31142c80108deedf4484146594747cb3ce776816e97 - languageName: node - linkType: hard - "path-case@npm:^3.0.4": version: 3.0.4 resolution: "path-case@npm:3.0.4" @@ -15541,18 +14679,6 @@ __metadata: languageName: node linkType: hard -"preferred-pm@npm:^3.0.3": - version: 3.0.3 - resolution: "preferred-pm@npm:3.0.3" - dependencies: - find-up: ^5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: ^4.0.0 - which-pm: 2.0.0 - checksum: 0de0948cb6ae22213f2ad7868032d89f1e1443d9caabc22ceeb9d284f19d359d65b67fab178f4db5c8c6ca6ae34642bdc72730b70ab1899ea158e2677a88a6d0 - languageName: node - linkType: hard - "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -15567,13 +14693,6 @@ __metadata: languageName: node linkType: hard -"pretty-bytes@npm:^5.3.0": - version: 5.6.0 - resolution: "pretty-bytes@npm:5.6.0" - checksum: 9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd - languageName: node - linkType: hard - "printf@npm:0.6.1": version: 0.6.1 resolution: "printf@npm:0.6.1" @@ -15581,13 +14700,6 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^1.0.0": - version: 1.0.0 - resolution: "proc-log@npm:1.0.0" - checksum: 249605d5b28bfa0499d70da24ab056ad1e082a301f0a46d0ace6e8049cf16aaa0e71d9ea5cab29b620ffb327c18af97f0e012d1db090673447e7c1d33239dd96 - languageName: node - linkType: hard - "proc-log@npm:^2.0.0, proc-log@npm:^2.0.1": version: 2.0.1 resolution: "proc-log@npm:2.0.1" @@ -15595,14 +14707,7 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 - languageName: node - linkType: hard - -"process-nextick-args@npm:^2.0.0, process-nextick-args@npm:~2.0.0": +"process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf @@ -15618,13 +14723,6 @@ __metadata: languageName: node linkType: hard -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - "progress@npm:^2.0.0": version: 2.0.3 resolution: "progress@npm:2.0.3" @@ -15886,7 +14984,7 @@ __metadata: languageName: node linkType: hard -"read-package-json-fast@npm:^2.0.1, read-package-json-fast@npm:^2.0.2, read-package-json-fast@npm:^2.0.3": +"read-package-json-fast@npm:^2.0.2, read-package-json-fast@npm:^2.0.3": version: 2.0.3 resolution: "read-package-json-fast@npm:2.0.3" dependencies: @@ -15896,16 +14994,6 @@ __metadata: languageName: node linkType: hard -"read-package-json-fast@npm:^3.0.0": - version: 3.0.2 - resolution: "read-package-json-fast@npm:3.0.2" - dependencies: - json-parse-even-better-errors: ^3.0.0 - npm-normalize-package-bin: ^3.0.0 - checksum: 8d406869f045f1d76e2a99865a8fd1c1af9c1dc06200b94d2b07eef87ed734b22703a8d72e1cd36ea36cc48e22020bdd187f88243c7dd0563f72114d38c17072 - languageName: node - linkType: hard - "read-package-json@npm:^5.0.0, read-package-json@npm:^5.0.1": version: 5.0.2 resolution: "read-package-json@npm:5.0.2" @@ -15918,18 +15006,6 @@ __metadata: languageName: node linkType: hard -"read-package-json@npm:^6.0.0": - version: 6.0.4 - resolution: "read-package-json@npm:6.0.4" - dependencies: - glob: ^10.2.2 - json-parse-even-better-errors: ^3.0.0 - normalize-package-data: ^5.0.0 - npm-normalize-package-bin: ^3.0.0 - checksum: ce40c4671299753f1349aebe44693cd250d6936c4bacfb31cd884c87f24a0174ba5f651ee2866cf5e57365451cba38bc1db9c2a371e4ba7502fb46dcad50f1d7 - languageName: node - linkType: hard - "read-pkg-up@npm:^3.0.0": version: 3.0.0 resolution: "read-pkg-up@npm:3.0.0" @@ -16005,7 +15081,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.2, readable-stream@npm:^2.3.5, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.0, readable-stream@npm:~2.3.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -16042,19 +15118,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^4.3.0": - version: 4.4.2 - resolution: "readable-stream@npm:4.4.2" - dependencies: - abort-controller: ^3.0.0 - buffer: ^6.0.3 - events: ^3.3.0 - process: ^0.11.10 - string_decoder: ^1.3.0 - checksum: 6f4063763dbdb52658d22d3f49ca976420e1fbe16bbd241f744383715845350b196a2f08b8d6330f8e219153dff34b140aeefd6296da828e1041a7eab1f20d5e - languageName: node - linkType: hard - "readdir-scoped-modules@npm:^1.1.0": version: 1.1.0 resolution: "readdir-scoped-modules@npm:1.1.0" @@ -16076,15 +15139,6 @@ __metadata: languageName: node linkType: hard -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b - languageName: node - linkType: hard - "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0" @@ -16188,6 +15242,15 @@ __metadata: languageName: node linkType: hard +"registry-auth-token@npm:^5.0.2": + version: 5.0.2 + resolution: "registry-auth-token@npm:5.0.2" + dependencies: + "@pnpm/npm-conf": ^2.1.0 + checksum: 0d7683b71ee418993e7872b389024b13645c4295eb7bb850d10728eaf46065db24ea4d47dc6cbb71a60d1aa4bef077b0d8b7363c9ac9d355fdba47bebdfb01dd + languageName: node + linkType: hard + "release-zalgo@npm:^1.0.0": version: 1.0.0 resolution: "release-zalgo@npm:1.0.0" @@ -16197,13 +15260,6 @@ __metadata: languageName: node linkType: hard -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - "repeat-string@npm:^1.6.1": version: 1.6.1 resolution: "repeat-string@npm:1.6.1" @@ -16211,13 +15267,6 @@ __metadata: languageName: node linkType: hard -"replace-ext@npm:^1.0.0": - version: 1.0.1 - resolution: "replace-ext@npm:1.0.1" - checksum: 4994ea1aaa3d32d152a8d98ff638988812c4fa35ba55485630008fe6f49e3384a8a710878e6fd7304b42b38d1b64c1cd070e78ece411f327735581a79dd88571 - languageName: node - linkType: hard - "req-cwd@npm:^2.0.0": version: 2.0.0 resolution: "req-cwd@npm:2.0.0" @@ -16335,7 +15384,7 @@ __metadata: languageName: node linkType: hard -"resolve-alpn@npm:^1.0.0": +"resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 @@ -16372,19 +15421,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e - languageName: node - linkType: hard - "resolve@npm:^1.10.0": version: 1.11.1 resolution: "resolve@npm:1.11.1" @@ -16429,19 +15465,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b - languageName: node - linkType: hard - "resolve@patch:resolve@^1.10.0#~builtin": version: 1.11.1 resolution: "resolve@patch:resolve@npm%3A1.11.1#~builtin::version=1.11.1&hash=c3c19d" @@ -16504,6 +15527,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^3.0.0": + version: 3.0.0 + resolution: "responselike@npm:3.0.0" + dependencies: + lowercase-keys: ^3.0.0 + checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -16618,7 +15650,7 @@ __metadata: husky: 8.0.3 lerna: ^6.4.1 mkdirp: ^0.5.2 - oclif: 4.4.7 + oclif: 4.14.36 promise-request-retry: ^1.0.2 qqjs: 0.3.11 standard: 17.1.0 @@ -16626,7 +15658,7 @@ __metadata: languageName: unknown linkType: soft -"run-async@npm:^2.0.0, run-async@npm:^2.4.0": +"run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 @@ -16670,7 +15702,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -16722,13 +15754,6 @@ __metadata: languageName: node linkType: hard -"scoped-regex@npm:^2.0.0": - version: 2.1.0 - resolution: "scoped-regex@npm:2.1.0" - checksum: 4e820444cb79727bb302d94dafe07999cce18b6026e4866583466821b3d246403034bc46085e1f4b63ec99491b637540a7c74fb2a66c5c4287700ec357d8af86 - languageName: node - linkType: hard - "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0, semver@npm:^5.6.0": version: 5.7.1 resolution: "semver@npm:5.7.1" @@ -16749,7 +15774,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.0, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.1, semver@npm:^7.5.2, semver@npm:^7.5.4": +"semver@npm:7.6.0, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.1, semver@npm:^7.5.2, semver@npm:^7.5.4": version: 7.6.0 resolution: "semver@npm:7.6.0" dependencies: @@ -16769,6 +15794,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.0, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + "sentence-case@npm:^3.0.4": version: 3.0.4 resolution: "sentence-case@npm:3.0.4" @@ -16884,19 +15918,6 @@ __metadata: languageName: node linkType: hard -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 - languageName: node - linkType: hard - "shellwords@npm:^0.1.1": version: 0.1.1 resolution: "shellwords@npm:0.1.1" @@ -16948,29 +15969,6 @@ __metadata: languageName: node linkType: hard -"sigstore@npm:^1.3.0": - version: 1.8.0 - resolution: "sigstore@npm:1.8.0" - dependencies: - "@sigstore/bundle": ^1.0.0 - "@sigstore/protobuf-specs": ^0.2.0 - "@sigstore/tuf": ^1.0.3 - make-fetch-happen: ^11.0.1 - bin: - sigstore: bin/sigstore.js - checksum: 9886278224da4f25cc4823ff961d04addc81b71fd2310cfe019bcd8094590cafaa0d78a648cf665b1fb3ba13388ace4c970cba563572a967e8aa0c26067a402b - languageName: node - linkType: hard - -"simple-swizzle@npm:^0.2.2": - version: 0.2.2 - resolution: "simple-swizzle@npm:0.2.2" - dependencies: - is-arrayish: ^0.3.1 - checksum: a7f3f2ab5c76c4472d5c578df892e857323e452d9f392e1b5cf74b74db66e6294a1e1b8b390b519fa1b96b5b613f2a37db6cffef52c3f1f8f3c5ea64eb2d54c0 - languageName: node - linkType: hard - "sinon@npm:^7.2.4": version: 7.4.1 resolution: "sinon@npm:7.4.1" @@ -17038,17 +16036,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^6.0.0": - version: 6.2.1 - resolution: "socks-proxy-agent@npm:6.2.1" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 9ca089d489e5ee84af06741135c4b0d2022977dad27ac8d649478a114cdce87849e8d82b7c22b51501a4116e231241592946fc7fae0afc93b65030ee57084f58 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -17088,12 +16075,28 @@ __metadata: languageName: node linkType: hard -"sort-keys@npm:^4.2.0": - version: 4.2.0 - resolution: "sort-keys@npm:4.2.0" +"sort-object-keys@npm:^1.1.3": + version: 1.1.3 + resolution: "sort-object-keys@npm:1.1.3" + checksum: abea944d6722a1710a1aa6e4f9509da085d93d5fc0db23947cb411eedc7731f80022ce8fa68ed83a53dd2ac7441fcf72a3f38c09b3d9bbc4ff80546aa2e151ad + languageName: node + linkType: hard + +"sort-package-json@npm:^2.10.1": + version: 2.10.1 + resolution: "sort-package-json@npm:2.10.1" dependencies: - is-plain-obj: ^2.0.0 - checksum: 1535ffd5a789259fc55107d5c3cec09b3e47803a9407fcaae37e1b9e0b813762c47dfee35b6e71e20ca7a69798d0a4791b2058a07f6cab5ef17b2dae83cedbda + detect-indent: ^7.0.1 + detect-newline: ^4.0.0 + get-stdin: ^9.0.0 + git-hooks-list: ^3.0.0 + globby: ^13.1.2 + is-plain-obj: ^4.1.0 + semver: ^7.6.0 + sort-object-keys: ^1.1.3 + bin: + sort-package-json: cli.js + checksum: 861d8161565fba322414d70b6be10fb331680549b73399778965be628783833c85c4e02929bcea5a2d96994884b0327dfe2f7c7a79409c901d2582b703f5333d languageName: node linkType: hard @@ -17267,15 +16270,6 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" - dependencies: - minipass: ^3.1.1 - checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 - languageName: node - linkType: hard - "ssri@npm:^9.0.0, ssri@npm:^9.0.1": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -17496,15 +16490,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.3.0": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - "string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" @@ -17559,34 +16544,6 @@ __metadata: languageName: node linkType: hard -"strip-bom-buf@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-bom-buf@npm:1.0.0" - dependencies: - is-utf8: ^0.2.1 - checksum: 246665fa1c50eb0852ed174fdbd7da34edb444165e7dda2cd58e66b49a2900707d9f8d3f94bcc8542fe1f46ae7b4274a3411b8ab9e43cd1dcf1b77416e324cfb - languageName: node - linkType: hard - -"strip-bom-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-bom-stream@npm:2.0.0" - dependencies: - first-chunk-stream: ^2.0.0 - strip-bom: ^2.0.0 - checksum: 3e2ff494d9181537ceee35c7bb662fee9dfcebba0779f004e7c1455278f2616c0915b66d8d5432a6cb7e23c792c199717b4661a12e8fa2728a18961dd0203a2e - languageName: node - linkType: hard - -"strip-bom@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-bom@npm:2.0.0" - dependencies: - is-utf8: ^0.2.0 - checksum: 08efb746bc67b10814cd03d79eb31bac633393a782e3f35efbc1b61b5165d3806d03332a97f362822cf0d4dd14ba2e12707fcff44fe1c870c48a063a0c9e4944 - languageName: node - linkType: hard - "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -17651,7 +16608,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:8.1.1, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1": +"supports-color@npm:8.1.1, supports-color@npm:^8, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -17776,7 +16733,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.0.2, tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.2": +"tar@npm:^6.1.0, tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -17841,13 +16798,6 @@ __metadata: languageName: node linkType: hard -"textextensions@npm:^5.12.0, textextensions@npm:^5.13.0": - version: 5.15.0 - resolution: "textextensions@npm:5.15.0" - checksum: aa172e941e81b44e0d35fa217f758a0d8ba0342dac31539914225a2382b5792ef58bff3ec9009b9c85b0c0605f5a79a906bd97827a2e591d647137fcdbf867d3 - languageName: node - linkType: hard - "through2@npm:^2.0.0": version: 2.0.5 resolution: "through2@npm:2.0.5" @@ -17891,6 +16841,13 @@ __metadata: languageName: node linkType: hard +"tiny-jsonc@npm:^1.0.1": + version: 1.0.1 + resolution: "tiny-jsonc@npm:1.0.1" + checksum: b345484a25a86d8a757a4fe02e52a4517290636988c25d84099d895a387205d3af74b3be7598bdbbfa13bbfdd5a5122198fe341877e239975e6622ff34465c20 + languageName: node + linkType: hard + "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" @@ -17982,13 +16939,6 @@ __metadata: languageName: node linkType: hard -"treeverse@npm:^1.0.4": - version: 1.0.4 - resolution: "treeverse@npm:1.0.4" - checksum: 712640acd811060ff552a3c761f700d18d22a4da544d31b4e290817ac4bbbfcfe33b58f85e7a5787e6ff7351d3a9100670721a289ca14eb87b36ad8a0c20ebd8 - languageName: node - linkType: hard - "treeverse@npm:^2.0.0": version: 2.0.0 resolution: "treeverse@npm:2.0.0" @@ -18087,7 +17037,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:1.14.1, tslib@npm:^1.11.1": +"tslib@npm:1.14.1": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -18143,6 +17093,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.6.2": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 1606d5c89f88d466889def78653f3aab0f88692e80bb2066d090ca6112ae250ec1cfa9dbfaab0d17b60da15a4186e8ec4d893801c67896b277c17374e36e1d28 + languageName: node + linkType: hard + "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -18154,17 +17111,6 @@ __metadata: languageName: node linkType: hard -"tuf-js@npm:^1.1.7": - version: 1.1.7 - resolution: "tuf-js@npm:1.1.7" - dependencies: - "@tufjs/models": 1.0.4 - debug: ^4.3.4 - make-fetch-happen: ^11.1.1 - checksum: 089fc0dabe1fcaeca8b955b358b34272f23237ac9e074b5f983349eb44d9688fd137f28f493bbd8dfd865d1af4e76e0cc869d307eadd054d1b404914c3124ae5 - languageName: node - linkType: hard - "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -18418,12 +17364,10 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 languageName: node linkType: hard @@ -18445,15 +17389,6 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a - languageName: node - linkType: hard - "unique-slug@npm:^3.0.0": version: 3.0.0 resolution: "unique-slug@npm:3.0.0" @@ -18509,13 +17444,6 @@ __metadata: languageName: node linkType: hard -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 - languageName: node - linkType: hard - "upath@npm:^2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" @@ -18631,6 +17559,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 39931f6da74e307f51c0fb463dc2462807531dc80760a9bff1e35af4316131b4fc3203d16da60ae33f07fdca5b56f3f1dd662da0c99fea9aaeab2004780cc5f4 + languageName: node + linkType: hard + "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -18680,12 +17617,10 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-name@npm:^5.0.0": - version: 5.0.0 - resolution: "validate-npm-package-name@npm:5.0.0" - dependencies: - builtins: ^5.0.0 - checksum: 5342a994986199b3c28e53a8452a14b2bb5085727691ea7aa0d284a6606b127c371e0925ae99b3f1ef7cc7d2c9de75f52eb61a3d1cc45e39bca1e3a9444cbb4e +"validate-npm-package-name@npm:^5.0.1": + version: 5.0.1 + resolution: "validate-npm-package-name@npm:5.0.1" + checksum: 0d583a1af23aeffea7748742cf22b6802458736fb8b60323ba5949763824d46f796474b0e1b9206beb716f9d75269e19dbd7795d6b038b29d561be95dd827381 languageName: node linkType: hard @@ -18714,33 +17649,6 @@ __metadata: languageName: node linkType: hard -"vinyl-file@npm:^3.0.0": - version: 3.0.0 - resolution: "vinyl-file@npm:3.0.0" - dependencies: - graceful-fs: ^4.1.2 - pify: ^2.3.0 - strip-bom-buf: ^1.0.0 - strip-bom-stream: ^2.0.0 - vinyl: ^2.0.1 - checksum: e187a74d41f45d22e8faa17b5552a795aca7c4084034dd9683086ace3752651f164c42aee1961081005f8299388b0a62ad1e3eea991a8d3747db58502f900ff4 - languageName: node - linkType: hard - -"vinyl@npm:^2.0.1": - version: 2.2.1 - resolution: "vinyl@npm:2.2.1" - dependencies: - clone: ^2.1.1 - clone-buffer: ^1.0.0 - clone-stats: ^1.0.0 - cloneable-readable: ^1.0.0 - remove-trailing-separator: ^1.0.1 - replace-ext: ^1.0.0 - checksum: 1f663973f1362f2d074b554f79ff7673187667082373b3d3e628beb1fc2a7ff33024f10b492fbd8db421a09ea3b7b22c3d3de4a0f0e73ead7b4685af570b906f - languageName: node - linkType: hard - "vscode-languageserver-textdocument@npm:^1.0.11": version: 1.0.11 resolution: "vscode-languageserver-textdocument@npm:1.0.11" @@ -18840,16 +17748,6 @@ __metadata: languageName: node linkType: hard -"which-pm@npm:2.0.0": - version: 2.0.0 - resolution: "which-pm@npm:2.0.0" - dependencies: - load-yaml-file: ^0.2.0 - path-exists: ^4.0.0 - checksum: e556635eaf237b3a101043a21c2890af045db40eac4df3575161d4fb834c2aa65456f81c60d8ea4db2d51fe5ac549d989eeabd17278767c2e4179361338ac5ce - languageName: node - linkType: hard - "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" @@ -18899,18 +17797,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^3.0.0": - version: 3.0.1 - resolution: "which@npm:3.0.1" - dependencies: - isexe: ^2.0.0 - bin: - node-which: bin/which.js - checksum: adf720fe9d84be2d9190458194f814b5e9015ae4b88711b150f30d0f4d0b646544794b86f02c7ebeec1db2029bc3e83a7ff156f542d7521447e5496543e26890 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -19268,81 +18155,6 @@ __metadata: languageName: node linkType: hard -"yeoman-environment@npm:^3.15.1": - version: 3.19.3 - resolution: "yeoman-environment@npm:3.19.3" - dependencies: - "@npmcli/arborist": ^4.0.4 - are-we-there-yet: ^2.0.0 - arrify: ^2.0.1 - binaryextensions: ^4.15.0 - chalk: ^4.1.0 - cli-table: ^0.3.1 - commander: 7.1.0 - dateformat: ^4.5.0 - debug: ^4.1.1 - diff: ^5.0.0 - error: ^10.4.0 - escape-string-regexp: ^4.0.0 - execa: ^5.0.0 - find-up: ^5.0.0 - globby: ^11.0.1 - grouped-queue: ^2.0.0 - inquirer: ^8.0.0 - is-scoped: ^2.1.0 - isbinaryfile: ^4.0.10 - lodash: ^4.17.10 - log-symbols: ^4.0.0 - mem-fs: ^1.2.0 || ^2.0.0 - mem-fs-editor: ^8.1.2 || ^9.0.0 - minimatch: ^3.0.4 - npmlog: ^5.0.1 - p-queue: ^6.6.2 - p-transform: ^1.3.0 - pacote: ^12.0.2 - preferred-pm: ^3.0.3 - pretty-bytes: ^5.3.0 - readable-stream: ^4.3.0 - semver: ^7.1.3 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - text-table: ^0.2.0 - textextensions: ^5.12.0 - untildify: ^4.0.0 - bin: - yoe: cli/index.js - checksum: 9d5127304fb5afd176284f0978085095525c919fb82a83e908dc53994e50430f22e9271daddd367d85a197c1ec77f6e88a6fd8d1bda0954382bef0f627c7b7e6 - languageName: node - linkType: hard - -"yeoman-generator@npm:^5.8.0": - version: 5.9.0 - resolution: "yeoman-generator@npm:5.9.0" - dependencies: - chalk: ^4.1.0 - dargs: ^7.0.0 - debug: ^4.1.1 - execa: ^5.1.1 - github-username: ^6.0.0 - lodash: ^4.17.11 - mem-fs-editor: ^9.0.0 - minimist: ^1.2.5 - pacote: ^15.2.0 - read-pkg-up: ^7.0.1 - run-async: ^2.0.0 - semver: ^7.2.1 - shelljs: ^0.8.5 - sort-keys: ^4.2.0 - text-table: ^0.2.0 - peerDependencies: - yeoman-environment: ^3.2.0 - peerDependenciesMeta: - yeoman-environment: - optional: true - checksum: f9e76e21af33acf9b8421f889fccac45e6f335f7a3b8d6741f5efc0eb2f950e9e04a5cbb20897e0084fd8a52a4a12a8221200b1bd40b948c94e1f32204019fed - languageName: node - linkType: hard - "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1" @@ -19363,3 +18175,10 @@ __metadata: checksum: f2e05b767ed3141e6372a80af9caa4715d60969227f38b1a4370d60bffe153c9c5b33a862905609afc9b375ec57cd40999810d20e5e10229a204e8bde7ef255c languageName: node linkType: hard + +"yoctocolors-cjs@npm:^2.1.2": + version: 2.1.2 + resolution: "yoctocolors-cjs@npm:2.1.2" + checksum: 1c474d4b30a8c130e679279c5c2c33a0d48eba9684ffa0252cc64846c121fb56c3f25457fef902edbe1e2d7a7872130073a9fc8e795299d75e13fa3f5f548f1b + languageName: node + linkType: hard From 79c17fa06fac52ac1f790e7851928233ff4ea937 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 10 Oct 2024 17:10:49 -0400 Subject: [PATCH 04/67] feat: add generation column to spaces command (#3029) * feat: add generation column to spaces command * chore: udpate types reference * test: update spaces/index tests to include generation in table --- packages/cli/src/commands/spaces/index.ts | 11 ++++++++--- .../unit/commands/spaces/index.unit.test.ts | 17 ++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/commands/spaces/index.ts b/packages/cli/src/commands/spaces/index.ts index 1d030034f0..bd78327269 100644 --- a/packages/cli/src/commands/spaces/index.ts +++ b/packages/cli/src/commands/spaces/index.ts @@ -1,9 +1,9 @@ import color from '@heroku-cli/color' import {Command, flags as Flags} from '@heroku-cli/command' import {ux} from '@oclif/core' -import * as Heroku from '@heroku-cli/schema' +import {Space} from '../../lib/types/fir' -type SpaceArray = Array> +type SpaceArray = Array> export default class Index extends Command { static topic = 'spaces' @@ -16,7 +16,11 @@ export default class Index extends Command { public async run(): Promise { const {flags} = await this.parse(Index) const {team, json} = flags - let {body: spaces} = await this.heroku.get('/spaces') + let {body: spaces} = await this.heroku.get('/spaces', { + headers: { + Accept: 'application/vnd.heroku+json; version=3.fir', + }, + }) if (team) { spaces = spaces.filter(s => s.team.name === team) } @@ -54,6 +58,7 @@ export default class Index extends Command { Team: {get: space => space.team.name}, Region: {get: space => space.region.name}, State: {get: space => space.state}, + Generation: {get: space => space.generation}, createdAt: { header: 'Created At', get: space => space.created_at, diff --git a/packages/cli/test/unit/commands/spaces/index.unit.test.ts b/packages/cli/test/unit/commands/spaces/index.unit.test.ts index f2c33d58ce..1219aa3b8d 100644 --- a/packages/cli/test/unit/commands/spaces/index.unit.test.ts +++ b/packages/cli/test/unit/commands/spaces/index.unit.test.ts @@ -15,6 +15,7 @@ describe('spaces', function () { region: {name: 'my-region'}, state: 'allocated', created_at: now.toISOString(), + generation: 'cedar', }] afterEach(function () { @@ -30,9 +31,9 @@ describe('spaces', function () { api.done() expect(heredoc(stdout.output)).to.eq(heredoc` - Name Team Region State Created At - ──────── ─────── ───────── ───────── ──────────────────────── - my-space my-team my-region allocated ${now.toISOString()} + Name Team Region State Generation Created At + ──────── ─────── ───────── ───────── ────────── ──────────────────────── + my-space my-team my-region allocated cedar ${now.toISOString()} `) }) @@ -55,15 +56,17 @@ describe('spaces', function () { team: {name: 'other-team'}, region: {name: 'my-region'}, state: 'allocated', - created_at: now.toISOString()}])) + created_at: now.toISOString(), + generation: 'cedar', + }])) await runCommand(Cmd, ['--team', 'my-team']) api.done() expect(heredoc(stdout.output)).to.eq(heredoc` - Name Team Region State Created At - ──────── ─────── ───────── ───────── ──────────────────────── - my-space my-team my-region allocated ${now.toISOString()} + Name Team Region State Generation Created At + ──────── ─────── ───────── ───────── ────────── ──────────────────────── + my-space my-team my-region allocated cedar ${now.toISOString()} `) }) From e51affbcca6ec6f5e7f628397f294126b0c4f03b Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 10 Oct 2024 14:59:14 -0700 Subject: [PATCH 05/67] feat: Add telemetry index command to list telemetry drains (#3031) * Add telemetry index command to list telemetry drains * Require space or app for command --- cspell-dictionary.txt | 2 + packages/cli/src/commands/telemetry/index.ts | 46 +++++++++ packages/cli/src/lib/types/telemetry.d.ts | 20 ++++ .../commands/telemetry/index.unit.test.ts | 99 +++++++++++++++++++ 4 files changed, 167 insertions(+) create mode 100644 packages/cli/src/commands/telemetry/index.ts create mode 100644 packages/cli/src/lib/types/telemetry.d.ts create mode 100644 packages/cli/test/unit/commands/telemetry/index.unit.test.ts diff --git a/cspell-dictionary.txt b/cspell-dictionary.txt index 847c6be2bc..f7b4967b0e 100644 --- a/cspell-dictionary.txt +++ b/cspell-dictionary.txt @@ -221,6 +221,8 @@ ossp otherapp otherdb otta +otlpgrpc +otlphttp papertrail passw pcxid diff --git a/packages/cli/src/commands/telemetry/index.ts b/packages/cli/src/commands/telemetry/index.ts new file mode 100644 index 0000000000..4802dfe282 --- /dev/null +++ b/packages/cli/src/commands/telemetry/index.ts @@ -0,0 +1,46 @@ +import {Command, flags as Flags} from '@heroku-cli/command' +import {ux} from '@oclif/core' +import {TelemetryDrains} from '../../lib/types/telemetry' + +export default class Index extends Command { + static topic = 'telemetry' + static description = 'list telemetry drains' + static flags = { + space: Flags.string({char: 's', description: 'filter by space name', exactlyOne: ['app', 'space']}), + app: Flags.app({description: 'filter by app name'}), + }; + + public async run(): Promise { + const {flags} = await this.parse(Index) + const {app, space} = flags + + if (app) { + const {body: appTelemetryDrains} = await this.heroku.get(`/apps/${app}/telemetry-drains`, { + headers: { + Accept: 'application/vnd.heroku+json; version=3.fir', + }, + }) + this.display(appTelemetryDrains, 'App') + } else if (space) { + const {body: spaceTelemetryDrains} = await this.heroku.get(`/spaces/${space}/telemetry-drains`, { + headers: { + Accept: 'application/vnd.heroku+json; version=3.fir', + }, + }) + this.display(spaceTelemetryDrains, 'Space') + } + } + + protected display(telemetryDrains: TelemetryDrains, ownerType: 'App' | 'Space') { + ux.styledHeader(`${ownerType} Telemetry Drains`) + ux.table( + telemetryDrains, + { + ID: {get: telemetryDrain => telemetryDrain.id}, + Signals: {get: telemetryDrain => telemetryDrain.capabilities}, + Endpoint: {get: telemetryDrain => telemetryDrain.exporter.endpoint}, + [ownerType]: {get: telemetryDrain => telemetryDrain.owner.name}, + }, + ) + } +} diff --git a/packages/cli/src/lib/types/telemetry.d.ts b/packages/cli/src/lib/types/telemetry.d.ts new file mode 100644 index 0000000000..4d77fa64f4 --- /dev/null +++ b/packages/cli/src/lib/types/telemetry.d.ts @@ -0,0 +1,20 @@ +export type TelemetryDrains = TelemetryDrain[] + +export type TelemetryDrain = { + id: string; + capabilities: string[]; + owner: TelemetryDrainOwner; + exporter: TelemetryExporter +} + +type TelemetryDrainOwner = { + id: string; + name?: string; + type: 'app' | 'space'; +} + +type TelemetryExporter = { + type: 'otlphttp' | 'otlpgrpc'; + endpoint: string; + headers: unknown; +} diff --git a/packages/cli/test/unit/commands/telemetry/index.unit.test.ts b/packages/cli/test/unit/commands/telemetry/index.unit.test.ts new file mode 100644 index 0000000000..7900b2273d --- /dev/null +++ b/packages/cli/test/unit/commands/telemetry/index.unit.test.ts @@ -0,0 +1,99 @@ +import {stdout} from 'stdout-stderr' +import Cmd from '../../../../src/commands/telemetry' +import runCommand from '../../../helpers/runCommand' +import * as nock from 'nock' +import expectOutput from '../../../helpers/utils/expectOutput' +import heredoc from 'tsheredoc' +import {TelemetryDrains} from '../../../../src/lib/types/telemetry' + +describe('telemetry:index', function () { + const appId = '87654321-5717-4562-b3fc-2c963f66afa6' + const spaceId = '12345678-5717-4562-b3fc-2c963f66afa6' + let appTelemetryDrains: TelemetryDrains + let spaceTelemetryDrains: TelemetryDrains + + beforeEach(function () { + spaceTelemetryDrains = [ + { + id: '44444321-5717-4562-b3fc-2c963f66afa6', + owner: {id: spaceId, type: 'space', name: 'myspace'}, + capabilities: ['traces', 'metrics', 'logs'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, + }, + ] + appTelemetryDrains = [ + { + id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', + owner: {id: appId, type: 'app', name: 'myapp'}, + capabilities: ['traces', 'metrics'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, + }, + { + id: '55555f64-5717-4562-b3fc-2c963f66afa6', + owner: {id: appId, type: 'app', name: 'myapp'}, + capabilities: ['logs'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.papertrail.com/', + headers: { + 'x-papertrail-team': 'your-api-key', + 'x-papertrail-dataset': 'your-dataset', + }, + }, + }, + ] + }) + + afterEach(function () { + return nock.cleanAll() + }) + + it('shows space telemetry drains', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .get(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrains) + + await runCommand(Cmd, [ + '--space', + spaceId, + ]) + expectOutput(stdout.output, heredoc(` + === Space Telemetry Drains + Id Signals Endpoint Space + ──────────────────────────────────── ─────────────────────────────── ───────────────────────── ─────── + 44444321-5717-4562-b3fc-2c963f66afa6 [ 'traces', 'metrics', 'logs' ] https://api.honeycomb.io/ myspace + `)) + }) + + it('shows app telemetry drains', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .get(`/apps/${appId}/telemetry-drains`) + .reply(200, appTelemetryDrains) + + await runCommand(Cmd, [ + '--app', + appId, + ]) + expectOutput(stdout.output, heredoc(` + === App Telemetry Drains + Id Signals Endpoint App + ──────────────────────────────────── ─────────────────────── ─────────────────────────── ───── + 3fa85f64-5717-4562-b3fc-2c963f66afa6 [ 'traces', 'metrics' ] https://api.honeycomb.io/ myapp + 55555f64-5717-4562-b3fc-2c963f66afa6 [ 'logs' ] https://api.papertrail.com/ myapp + `)) + }) +}) From 78f3d4251e21f9052123d1e82121107c9ce6bab3 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 11 Oct 2024 09:11:43 -0700 Subject: [PATCH 06/67] Add telemetry info command (#3034) --- packages/cli/src/commands/telemetry/info.ts | 35 ++++++++ .../unit/commands/telemetry/info.unit.test.ts | 83 +++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 packages/cli/src/commands/telemetry/info.ts create mode 100644 packages/cli/test/unit/commands/telemetry/info.unit.test.ts diff --git a/packages/cli/src/commands/telemetry/info.ts b/packages/cli/src/commands/telemetry/info.ts new file mode 100644 index 0000000000..d39907cf4a --- /dev/null +++ b/packages/cli/src/commands/telemetry/info.ts @@ -0,0 +1,35 @@ +import {Command} from '@heroku-cli/command' +import {Args, ux} from '@oclif/core' +import {TelemetryDrain} from '../../lib/types/telemetry' + +export default class Info extends Command { + static topic = 'telemetry' + static description = 'show a telemetry drain\'s info' + static args = { + telemetry_drain_id: Args.string({required: true, description: 'ID of the drain to show info for'}), + }; + + public async run(): Promise { + const {args} = await this.parse(Info) + const {telemetry_drain_id} = args + + const {body: telemetryDrain} = await this.heroku.get(`/telemetry-drains/${telemetry_drain_id}`, { + headers: { + Accept: 'application/vnd.heroku+json; version=3.fir', + }, + }) + this.display(telemetryDrain) + } + + protected display(telemetryDrain: TelemetryDrain) { + ux.styledHeader(telemetryDrain.id) + const drainType = telemetryDrain.owner.type.charAt(0).toUpperCase() + telemetryDrain.owner.type.slice(1) + ux.styledObject({ + [drainType]: telemetryDrain.owner.name, + Signals: telemetryDrain.capabilities.join(', '), + Endpoint: telemetryDrain.exporter.endpoint, + Kind: telemetryDrain.exporter.type, + Headers: telemetryDrain.exporter.headers, + }, ['App', 'Space', 'Signals', 'Endpoint', 'Kind', 'Headers']) + } +} diff --git a/packages/cli/test/unit/commands/telemetry/info.unit.test.ts b/packages/cli/test/unit/commands/telemetry/info.unit.test.ts new file mode 100644 index 0000000000..39db9ac1e6 --- /dev/null +++ b/packages/cli/test/unit/commands/telemetry/info.unit.test.ts @@ -0,0 +1,83 @@ +import {stdout} from 'stdout-stderr' +import Cmd from '../../../../src/commands/telemetry/info' +import runCommand from '../../../helpers/runCommand' +import * as nock from 'nock' +import expectOutput from '../../../helpers/utils/expectOutput' +import heredoc from 'tsheredoc' +import {TelemetryDrain} from '../../../../src/lib/types/telemetry' + +describe('telemetry:info', function () { + const appId = '87654321-5717-4562-b3fc-2c963f66afa6' + const spaceId = '12345678-5717-4562-b3fc-2c963f66afa6' + let appTelemetryDrain: TelemetryDrain + let spaceTelemetryDrain: TelemetryDrain + + beforeEach(function () { + spaceTelemetryDrain = { + id: '44444321-5717-4562-b3fc-2c963f66afa6', + owner: {id: spaceId, type: 'space', name: 'myspace'}, + capabilities: ['traces', 'metrics', 'logs'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, + } + appTelemetryDrain = { + id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', + owner: {id: appId, type: 'app', name: 'myapp'}, + capabilities: ['traces', 'metrics'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, + } + }) + + afterEach(function () { + return nock.cleanAll() + }) + + it('shows info for space telemetry drain', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .get(`/telemetry-drains/${spaceTelemetryDrain.id}`) + .reply(200, spaceTelemetryDrain) + + await runCommand(Cmd, [ + spaceTelemetryDrain.id, + ]) + expectOutput(stdout.output, heredoc(` + === ${spaceTelemetryDrain.id} + Space: ${spaceTelemetryDrain.owner.name} + Signals: ${spaceTelemetryDrain.capabilities.join(', ')} + Endpoint: ${spaceTelemetryDrain.exporter.endpoint} + Kind: ${spaceTelemetryDrain.exporter.type} + Headers: x-honeycomb-team: 'your-api-key', x-honeycomb-dataset: 'your-dataset' + `)) + }) + + it('shows info for app telemetry drains', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .get(`/telemetry-drains/${appTelemetryDrain.id}`) + .reply(200, appTelemetryDrain) + + await runCommand(Cmd, [ + appTelemetryDrain.id, + ]) + expectOutput(stdout.output, heredoc(` + === ${appTelemetryDrain.id} + App: ${appTelemetryDrain.owner.name} + Signals: ${appTelemetryDrain.capabilities.join(', ')} + Endpoint: ${appTelemetryDrain.exporter.endpoint} + Kind: ${appTelemetryDrain.exporter.type} + Headers: x-honeycomb-team: 'your-api-key', x-honeycomb-dataset: 'your-dataset' + `)) + }) +}) From adeb98613886789a6b818e80f126da66ec43fbf8 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Mon, 14 Oct 2024 11:18:32 -0400 Subject: [PATCH 07/67] feat: add basic flags, logic, and tests for telemetry:add --- cspell-dictionary.txt | 1 + packages/cli/package.json | 1 + packages/cli/src/commands/telemetry/add.ts | 41 +++++ .../cli/test/fixtures/telemetry/fixtures.ts | 3 + .../unit/commands/telemetry/add.unit.test.ts | 144 ++++++++++++++++++ yarn.lock | 79 ++++++++++ 6 files changed, 269 insertions(+) create mode 100644 packages/cli/src/commands/telemetry/add.ts create mode 100644 packages/cli/test/fixtures/telemetry/fixtures.ts create mode 100644 packages/cli/test/unit/commands/telemetry/add.unit.test.ts diff --git a/cspell-dictionary.txt b/cspell-dictionary.txt index f7b4967b0e..441179fe4b 100644 --- a/cspell-dictionary.txt +++ b/cspell-dictionary.txt @@ -98,6 +98,7 @@ Gdvb getreqs Ghpcy githuborg +gprc hamurai herokai herokuapp diff --git a/packages/cli/package.json b/packages/cli/package.json index 92d439ec82..7a22f4b497 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -115,6 +115,7 @@ "bats": "^1.1.0", "chai": "^4.4.1", "chai-as-promised": "^7.1.1", + "chai-nock": "^1.3.0", "globby": "^10.0.2", "lodash": "^4.17.11", "lolex": "^3.1.0", diff --git a/packages/cli/src/commands/telemetry/add.ts b/packages/cli/src/commands/telemetry/add.ts new file mode 100644 index 0000000000..6e23e4b727 --- /dev/null +++ b/packages/cli/src/commands/telemetry/add.ts @@ -0,0 +1,41 @@ +import {Command, flags as Flags} from '@heroku-cli/command' +import {ux} from '@oclif/core' +import {TelemetryDrains} from '../../lib/types/telemetry' + +export default class Add extends Command { + static description = 'Add and configure a new telemetry drain. Defaults to collecting all telemetry unless otherwise specified.' + + static flags = { + app: Flags.app({exactlyOne: ['app', 'remote', 'space']}), + remote: Flags.remote(), + space: Flags.string({char: 's'}), + signal: Flags.string({default: 'all'}), + } + + private validateAndFormatSignal = function (signalInput: string | undefined): string[] { + const signalOptions = ['traces', 'metrics', 'logs'] + if (!signalInput || signalInput === 'all') return signalOptions + const signalArray = signalInput.split(',') + signalArray.forEach(signal => { + if (!signalOptions.includes(signal)) { + ux.error(`Invalid signal option: ${signal}. Signals must include some combination of "traces", "metrics", or "logs". The option "all" can be used on its own to include all three.`, {exit: 1}) + } + }) + return signalArray + } + + public async run(): Promise { + const {flags} = await this.parse(Add) + const {app, space, signal} = flags + const drainConfig = { + signals: this.validateAndFormatSignal(signal), + } + + await this.heroku.put(`/spaces/${space}/telemetry-drains`, { + body: drainConfig, + headers: { + Accept: 'application/vnd.heroku+json; version=3.fir', + }, + }) + } +} diff --git a/packages/cli/test/fixtures/telemetry/fixtures.ts b/packages/cli/test/fixtures/telemetry/fixtures.ts new file mode 100644 index 0000000000..fcbe4db707 --- /dev/null +++ b/packages/cli/test/fixtures/telemetry/fixtures.ts @@ -0,0 +1,3 @@ +export const addAllDrainsConfig = { + signals: ['traces', 'metrics', 'logs'], +} diff --git a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts new file mode 100644 index 0000000000..4536c6438d --- /dev/null +++ b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts @@ -0,0 +1,144 @@ +import {stdout, stderr} from 'stdout-stderr' +import Cmd from '../../../../src/commands/telemetry/add' +import runCommand from '../../../helpers/runCommand' +import * as chai from 'chai' +import * as chaiNock from 'chai-nock' +import * as nock from 'nock' +import expectOutput from '../../../helpers/utils/expectOutput' +import heredoc from 'tsheredoc' +import {TelemetryDrains} from '../../../../src/lib/types/telemetry' +import {addAllDrainsConfig} from '../../../fixtures/telemetry/fixtures' + +chai.use(chaiNock) +const expect = chai.expect + +describe('telemetry:index', function () { + const appId = '87654321-5717-4562-b3fc-2c963f66afa6' + const spaceId = '12345678-5717-4562-b3fc-2c963f66afa6' + let appTelemetryDrains: TelemetryDrains + let spaceTelemetryDrains: TelemetryDrains + + beforeEach(function () { + spaceTelemetryDrains = [ + { + id: '44444321-5717-4562-b3fc-2c963f66afa6', + owner: {id: spaceId, type: 'space', name: 'myspace'}, + capabilities: ['traces', 'metrics', 'logs'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, + }, + ] + appTelemetryDrains = [ + { + id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', + owner: {id: appId, type: 'app', name: 'myapp'}, + capabilities: ['traces', 'metrics'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, + }, + { + id: '55555f64-5717-4562-b3fc-2c963f66afa6', + owner: {id: appId, type: 'app', name: 'myapp'}, + capabilities: ['logs'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.papertrail.com/', + headers: { + 'x-papertrail-team': 'your-api-key', + 'x-papertrail-dataset': 'your-dataset', + }, + }, + }, + ] + }) + + afterEach(function () { + return nock.cleanAll() + }) + + it('returns an error if an app, remote, or space is not set', async function () { + try { + await runCommand(Cmd) + } catch (error) { + const {message} = error as { message: string } + expect(message).to.contain('Exactly one of the following must be provided: --app, --remote, --space') + } + }) + + it('returns an error if values are provided for both the app and the space flags', async function () { + try { + await runCommand(Cmd, [ + '--app', + 'myapp', + '--space', + 'myspace', + ]) + } catch (error) { + const {message} = error as { message: string } + expect(message).to.contain('--space cannot also be provided when using --app') + } + }) + + it('correctly assembles telemetry configuration when all flags are correctly set') + + it('sets ["logs", "metrics", "traces"] as the default value for the --signal flag', async function () { + const telemetryNock = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .put(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrains) + + await runCommand(Cmd, [ + '--space', + spaceId, + ]) + + expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) + }) + it('does not accept options other than logs, metrics, traces, or all for the --signal flag', async function () { + const telemetryNock = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .put(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrains) + + await runCommand(Cmd, [ + '--space', + spaceId, + '--signal', + 'all', + ]) + + expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) + }) + + it('sets the signals to logs, metrics, and traces if "all" is specified for the --signal flag', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .put(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrains) + + try { + await runCommand(Cmd, [ + '--space', + spaceId, + '--signal', + 'logs,foo', + ]) + } catch (error) { + const {message} = error as { message: string } + expect(message).to.contain('Invalid signal option: foo. Signals must include some combination of "traces", "metrics", or "logs". The option "all" can be used on its own to include all three.') + } + }) + it('returns an error when the --signal flag is set to "all" in combination with other options') + it('sets the transport protocol to http when an http endpoint is provided and no --transport flag value is added') + it('sets the transport protocol to gprc when a gprc endpoint is provided and no --transport flag value is added') + it('returns an error when a transport protocol other than gprc or http is set using the --transport flag') +}) diff --git a/yarn.lock b/yarn.lock index 86fe5c72c3..692578f58c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6698,6 +6698,31 @@ __metadata: languageName: node linkType: hard +"chai-nock@npm:^1.3.0": + version: 1.3.0 + resolution: "chai-nock@npm:1.3.0" + dependencies: + chai: ^4.2.0 + deep-equal: ^1.0.1 + checksum: c1d531691650328a6c3244423a4e4c8efc785c9f7dec26381741734543407a94b4fc28dd9794012d06e7a0149de945cf8e9b9c9cb67e2cf159c3145dde593e94 + languageName: node + linkType: hard + +"chai@npm:^4.2.0": + version: 4.5.0 + resolution: "chai@npm:4.5.0" + dependencies: + assertion-error: ^1.1.0 + check-error: ^1.0.3 + deep-eql: ^4.1.3 + get-func-name: ^2.0.2 + loupe: ^2.3.6 + pathval: ^1.1.1 + type-detect: ^4.1.0 + checksum: 70e5a8418a39e577e66a441cc0ce4f71fd551a650a71de30dd4e3e31e75ed1f5aa7119cf4baf4a2cb5e85c0c6befdb4d8a05811fad8738c1a6f3aa6a23803821 + languageName: node + linkType: hard + "chai@npm:^4.4.1": version: 4.4.1 resolution: "chai@npm:4.4.1" @@ -7884,6 +7909,20 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:^1.0.1": + version: 1.1.2 + resolution: "deep-equal@npm:1.1.2" + dependencies: + is-arguments: ^1.1.1 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + object-is: ^1.1.5 + object-keys: ^1.1.1 + regexp.prototype.flags: ^1.5.1 + checksum: 2d50f27fff785fb272cdef038ee5365ee5a30ab1aab053976e6a6add44cc60abd99b38179a46a01ac52c5e54ebb220e8f1a3a1954da20678b79c46ef4d97c9db + languageName: node + linkType: hard + "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -10714,6 +10753,7 @@ __metadata: bytes: ^3.1.2 chai: ^4.4.1 chai-as-promised: ^7.1.1 + chai-nock: ^1.3.0 chalk: ^2.4.2 commander: ^2.15.1 date-fns: ^2.30.0 @@ -11281,6 +11321,16 @@ __metadata: languageName: node linkType: hard +"is-arguments@npm:^1.1.1": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 + languageName: node + linkType: hard + "is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": version: 3.0.2 resolution: "is-array-buffer@npm:3.0.2" @@ -13840,6 +13890,16 @@ __metadata: languageName: node linkType: hard +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + checksum: 3ea22759967e6f2380a2cbbd0f737b42dc9ddb2dfefdb159a1b927fea57335e1b058b564bfa94417db8ad58cddab33621a035de6f5e5ad56d89f2dd03e66c6a1 + languageName: node + linkType: hard + "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -15216,6 +15276,18 @@ __metadata: languageName: node linkType: hard +"regexp.prototype.flags@npm:^1.5.1": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-errors: ^1.3.0 + set-function-name: ^2.0.2 + checksum: 83ff0705b837f7cb6d664010a11642250f36d3f642263dd0f3bdfe8f150261aa7b26b50ee97f21c1da30ef82a580bb5afedbef5f45639d69edaafbeac9bbb0ed + languageName: node + linkType: hard + "regexp.prototype.flags@npm:^1.5.2": version: 1.5.2 resolution: "regexp.prototype.flags@npm:1.5.2" @@ -17161,6 +17233,13 @@ __metadata: languageName: node linkType: hard +"type-detect@npm:^4.1.0": + version: 4.1.0 + resolution: "type-detect@npm:4.1.0" + checksum: 3b32f873cd02bc7001b00a61502b7ddc4b49278aabe68d652f732e1b5d768c072de0bc734b427abf59d0520a5f19a2e07309ab921ef02018fa1cb4af155cdb37 + languageName: node + linkType: hard + "type-fest@npm:^0.18.0": version: 0.18.1 resolution: "type-fest@npm:0.18.1" From a32765d5481aa0a2d15eb2ac6aa72a08381253e8 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Mon, 14 Oct 2024 12:40:14 -0400 Subject: [PATCH 08/67] feat: add endpoint and transport flags to telemetry:add --- packages/cli/src/commands/telemetry/add.ts | 16 ++++-- .../cli/test/fixtures/telemetry/fixtures.ts | 4 ++ .../unit/commands/telemetry/add.unit.test.ts | 55 +++++++++++++++++-- 3 files changed, 65 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/commands/telemetry/add.ts b/packages/cli/src/commands/telemetry/add.ts index 6e23e4b727..ce27a84ca1 100644 --- a/packages/cli/src/commands/telemetry/add.ts +++ b/packages/cli/src/commands/telemetry/add.ts @@ -6,10 +6,12 @@ export default class Add extends Command { static description = 'Add and configure a new telemetry drain. Defaults to collecting all telemetry unless otherwise specified.' static flags = { - app: Flags.app({exactlyOne: ['app', 'remote', 'space']}), + app: Flags.app({exactlyOne: ['app', 'remote', 'space'], description: 'app to add drain to'}), remote: Flags.remote(), - space: Flags.string({char: 's'}), - signal: Flags.string({default: 'all'}), + space: Flags.string({char: 's', description: 'space to add drain to'}), + signal: Flags.string({default: 'all', description: 'comma-delimited list of signals to collect (traces, metrics, logs). Use "all" to collect all signals.'}), + endpoint: Flags.string({required: true, description: 'drain url'}), + transport: Flags.string({required: true, options: ['http', 'gprc']}), } private validateAndFormatSignal = function (signalInput: string | undefined): string[] { @@ -26,12 +28,16 @@ export default class Add extends Command { public async run(): Promise { const {flags} = await this.parse(Add) - const {app, space, signal} = flags + const {app, space, signal, endpoint, transport} = flags const drainConfig = { signals: this.validateAndFormatSignal(signal), + exporter: { + endpoint, + type: `otlp${transport}`, + }, } - await this.heroku.put(`/spaces/${space}/telemetry-drains`, { + await this.heroku.post(`/spaces/${space}/telemetry-drains`, { body: drainConfig, headers: { Accept: 'application/vnd.heroku+json; version=3.fir', diff --git a/packages/cli/test/fixtures/telemetry/fixtures.ts b/packages/cli/test/fixtures/telemetry/fixtures.ts index fcbe4db707..82de73aa8f 100644 --- a/packages/cli/test/fixtures/telemetry/fixtures.ts +++ b/packages/cli/test/fixtures/telemetry/fixtures.ts @@ -1,3 +1,7 @@ export const addAllDrainsConfig = { signals: ['traces', 'metrics', 'logs'], + exporter: { + endpoint: 'https://api.testendpoint.com', + transport: 'otlphttp', + }, } diff --git a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts index 4536c6438d..b2b884a25c 100644 --- a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts @@ -91,7 +91,22 @@ describe('telemetry:index', function () { } }) - it('correctly assembles telemetry configuration when all flags are correctly set') + it('correctly assembles telemetry configuration when all flags are correctly set', async function () { + const telemetryNock = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .post(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrains) + + await runCommand(Cmd, [ + '--space', + spaceId, + '--endpoint', + 'https://api.testendpoint.com', + '--transport', + 'http', + ]) + + expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) + }) it('sets ["logs", "metrics", "traces"] as the default value for the --signal flag', async function () { const telemetryNock = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) @@ -101,6 +116,10 @@ describe('telemetry:index', function () { await runCommand(Cmd, [ '--space', spaceId, + '--endpoint', + 'https://api.testendpoint.com', + '--transport', + 'http', ]) expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) @@ -115,6 +134,10 @@ describe('telemetry:index', function () { spaceId, '--signal', 'all', + '--endpoint', + 'https://api.testendpoint.com', + '--transport', + 'http', ]) expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) @@ -131,14 +154,36 @@ describe('telemetry:index', function () { spaceId, '--signal', 'logs,foo', + '--endpoint', + 'https://api.testendpoint.com', + '--transport', + 'http', ]) } catch (error) { const {message} = error as { message: string } expect(message).to.contain('Invalid signal option: foo. Signals must include some combination of "traces", "metrics", or "logs". The option "all" can be used on its own to include all three.') } }) - it('returns an error when the --signal flag is set to "all" in combination with other options') - it('sets the transport protocol to http when an http endpoint is provided and no --transport flag value is added') - it('sets the transport protocol to gprc when a gprc endpoint is provided and no --transport flag value is added') - it('returns an error when a transport protocol other than gprc or http is set using the --transport flag') + + it('returns an error when the --signal flag is set to "all" in combination with other options', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + .put(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrains) + + try { + await runCommand(Cmd, [ + '--space', + spaceId, + '--signal', + 'logs,all', + '--endpoint', + 'https://api.testendpoint.com', + '--transport', + 'http', + ]) + } catch (error) { + const {message} = error as { message: string } + expect(message).to.contain('Invalid signal option: all. Signals must include some combination of "traces", "metrics", or "logs". The option "all" can be used on its own to include all three.') + } + }) }) From 2005912516d69e59d9469a7578f7ab5b55f44090 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 17 Oct 2024 14:42:59 -0400 Subject: [PATCH 09/67] feat: separate calls for app and space drains and update tests --- packages/cli/src/commands/telemetry/add.ts | 52 +++++-- .../cli/test/fixtures/telemetry/fixtures.ts | 42 +++++- .../unit/commands/telemetry/add.unit.test.ts | 136 +++++------------- 3 files changed, 114 insertions(+), 116 deletions(-) diff --git a/packages/cli/src/commands/telemetry/add.ts b/packages/cli/src/commands/telemetry/add.ts index ce27a84ca1..e70db7a317 100644 --- a/packages/cli/src/commands/telemetry/add.ts +++ b/packages/cli/src/commands/telemetry/add.ts @@ -1,19 +1,23 @@ import {Command, flags as Flags} from '@heroku-cli/command' -import {ux} from '@oclif/core' -import {TelemetryDrains} from '../../lib/types/telemetry' +import {Args, ux} from '@oclif/core' +import {TelemetryDrain} from '../../lib/types/telemetry' export default class Add extends Command { static description = 'Add and configure a new telemetry drain. Defaults to collecting all telemetry unless otherwise specified.' static flags = { app: Flags.app({exactlyOne: ['app', 'remote', 'space'], description: 'app to add drain to'}), - remote: Flags.remote(), + remote: Flags.remote({description: 'git remote of app to add drain to'}), space: Flags.string({char: 's', description: 'space to add drain to'}), signal: Flags.string({default: 'all', description: 'comma-delimited list of signals to collect (traces, metrics, logs). Use "all" to collect all signals.'}), endpoint: Flags.string({required: true, description: 'drain url'}), transport: Flags.string({required: true, options: ['http', 'gprc']}), } + static args = { + headers: Args.string({required: true, description: 'custom headers to configure the drain in json format'}), + } + private validateAndFormatSignal = function (signalInput: string | undefined): string[] { const signalOptions = ['traces', 'metrics', 'logs'] if (!signalInput || signalInput === 'all') return signalOptions @@ -26,22 +30,50 @@ export default class Add extends Command { return signalArray } + private getTypeAndName = function (app: string | undefined, space: string | undefined) { + if (app) { + return {type: 'app', name: app} + } + + return {type: 'space', name: space} + } + public async run(): Promise { - const {flags} = await this.parse(Add) + const {flags, args} = await this.parse(Add) const {app, space, signal, endpoint, transport} = flags + const {headers} = args + const typeAndName = this.getTypeAndName(app, space) const drainConfig = { + owner: { + type: typeAndName.type, + id: typeAndName.name, + }, signals: this.validateAndFormatSignal(signal), exporter: { endpoint, type: `otlp${transport}`, + headers: JSON.parse(headers), }, } - await this.heroku.post(`/spaces/${space}/telemetry-drains`, { - body: drainConfig, - headers: { - Accept: 'application/vnd.heroku+json; version=3.fir', - }, - }) + if (app) { + const {body: drain} = await this.heroku.post(`/apps/${app}/telemetry-drains`, { + body: drainConfig, + headers: { + Accept: 'application/vnd.heroku+json; version=3.sdk', + }, + }) + + ux.log(`successfully added drain ${drain.exporter.endpoint}`) + } else if (space) { + const {body: drain} = await this.heroku.post(`/spaces/${space}/telemetry-drains`, { + body: drainConfig, + headers: { + Accept: 'application/vnd.heroku+json; version=3.sdk', + }, + }) + + ux.log(`successfully added drain ${drain.exporter.endpoint}`) + } } } diff --git a/packages/cli/test/fixtures/telemetry/fixtures.ts b/packages/cli/test/fixtures/telemetry/fixtures.ts index 82de73aa8f..43241375d5 100644 --- a/packages/cli/test/fixtures/telemetry/fixtures.ts +++ b/packages/cli/test/fixtures/telemetry/fixtures.ts @@ -1,7 +1,41 @@ -export const addAllDrainsConfig = { - signals: ['traces', 'metrics', 'logs'], +export const spaceTelemetryDrain1 = { + id: '44444321-5717-4562-b3fc-2c963f66afa6', + owner: {id: '12345678-5717-4562-b3fc-2c963f66afa6', type: 'space', name: 'myspace'}, + capabilities: ['traces', 'metrics', 'logs'], exporter: { - endpoint: 'https://api.testendpoint.com', - transport: 'otlphttp', + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, +} + +export const appTelemetryDrain1 = { + id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', + owner: {id: '87654321-5717-4562-b3fc-2c963f66afa6', type: 'app', name: 'myapp'}, + capabilities: ['traces', 'metrics'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.honeycomb.io/', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, +} + +export const appTelemetryDrain2 = { + id: '55555f64-5717-4562-b3fc-2c963f66afa6', + owner: {id: '87654321-5717-4562-b3fc-2c963f66afa6', type: 'app', name: 'myapp'}, + capabilities: ['logs'], + exporter: { + type: 'otlphttp', + endpoint: 'https://api.papertrail.com/', + headers: { + 'x-papertrail-team': 'your-api-key', + 'x-papertrail-dataset': 'your-dataset', + }, }, } diff --git a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts index b2b884a25c..be45208220 100644 --- a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts @@ -1,76 +1,25 @@ -import {stdout, stderr} from 'stdout-stderr' +import {stdout} from 'stdout-stderr' import Cmd from '../../../../src/commands/telemetry/add' import runCommand from '../../../helpers/runCommand' -import * as chai from 'chai' -import * as chaiNock from 'chai-nock' +import {expect} from 'chai' import * as nock from 'nock' import expectOutput from '../../../helpers/utils/expectOutput' -import heredoc from 'tsheredoc' -import {TelemetryDrains} from '../../../../src/lib/types/telemetry' -import {addAllDrainsConfig} from '../../../fixtures/telemetry/fixtures' +import {spaceTelemetryDrain1, appTelemetryDrain1} from '../../../fixtures/telemetry/fixtures' -chai.use(chaiNock) -const expect = chai.expect +const appId = appTelemetryDrain1.owner.id +const spaceId = spaceTelemetryDrain1.owner.id +const testEndpoint = appTelemetryDrain1.exporter.endpoint describe('telemetry:index', function () { - const appId = '87654321-5717-4562-b3fc-2c963f66afa6' - const spaceId = '12345678-5717-4562-b3fc-2c963f66afa6' - let appTelemetryDrains: TelemetryDrains - let spaceTelemetryDrains: TelemetryDrains - - beforeEach(function () { - spaceTelemetryDrains = [ - { - id: '44444321-5717-4562-b3fc-2c963f66afa6', - owner: {id: spaceId, type: 'space', name: 'myspace'}, - capabilities: ['traces', 'metrics', 'logs'], - exporter: { - type: 'otlphttp', - endpoint: 'https://api.honeycomb.io/', - headers: { - 'x-honeycomb-team': 'your-api-key', - 'x-honeycomb-dataset': 'your-dataset', - }, - }, - }, - ] - appTelemetryDrains = [ - { - id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', - owner: {id: appId, type: 'app', name: 'myapp'}, - capabilities: ['traces', 'metrics'], - exporter: { - type: 'otlphttp', - endpoint: 'https://api.honeycomb.io/', - headers: { - 'x-honeycomb-team': 'your-api-key', - 'x-honeycomb-dataset': 'your-dataset', - }, - }, - }, - { - id: '55555f64-5717-4562-b3fc-2c963f66afa6', - owner: {id: appId, type: 'app', name: 'myapp'}, - capabilities: ['logs'], - exporter: { - type: 'otlphttp', - endpoint: 'https://api.papertrail.com/', - headers: { - 'x-papertrail-team': 'your-api-key', - 'x-papertrail-dataset': 'your-dataset', - }, - }, - }, - ] - }) - afterEach(function () { return nock.cleanAll() }) it('returns an error if an app, remote, or space is not set', async function () { try { - await runCommand(Cmd) + await runCommand(Cmd, [ + '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', + ]) } catch (error) { const {message} = error as { message: string } expect(message).to.contain('Exactly one of the following must be provided: --app, --remote, --space') @@ -80,6 +29,7 @@ describe('telemetry:index', function () { it('returns an error if values are provided for both the app and the space flags', async function () { try { await runCommand(Cmd, [ + '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--app', 'myapp', '--space', @@ -91,71 +41,56 @@ describe('telemetry:index', function () { } }) - it('correctly assembles telemetry configuration when all flags are correctly set', async function () { - const telemetryNock = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) - .post(`/spaces/${spaceId}/telemetry-drains`) - .reply(200, spaceTelemetryDrains) + it('successfully creates a telemetry drain for an app', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .post(`/apps/${appId}/telemetry-drains`) + .reply(200, spaceTelemetryDrain1) await runCommand(Cmd, [ - '--space', - spaceId, + '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', + '--app', + appId, + '--signal', + 'logs', '--endpoint', - 'https://api.testendpoint.com', + testEndpoint, '--transport', 'http', ]) - expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) + expectOutput(stdout.output, `successfully added drain ${testEndpoint}`) }) - it('sets ["logs", "metrics", "traces"] as the default value for the --signal flag', async function () { - const telemetryNock = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) - .put(`/spaces/${spaceId}/telemetry-drains`) - .reply(200, spaceTelemetryDrains) - - await runCommand(Cmd, [ - '--space', - spaceId, - '--endpoint', - 'https://api.testendpoint.com', - '--transport', - 'http', - ]) - - expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) - }) - it('does not accept options other than logs, metrics, traces, or all for the --signal flag', async function () { - const telemetryNock = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) - .put(`/spaces/${spaceId}/telemetry-drains`) - .reply(200, spaceTelemetryDrains) + it('successfully creates a telemetry drain for a space', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .post(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrain1) await runCommand(Cmd, [ + '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--space', spaceId, '--signal', - 'all', + 'logs', '--endpoint', - 'https://api.testendpoint.com', + testEndpoint, '--transport', 'http', ]) - expect(telemetryNock).to.have.been.requestedWith(addAllDrainsConfig) + expectOutput(stdout.output, `successfully added drain ${testEndpoint}`) }) - it('sets the signals to logs, metrics, and traces if "all" is specified for the --signal flag', async function () { - nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) - .put(`/spaces/${spaceId}/telemetry-drains`) - .reply(200, spaceTelemetryDrains) - + it('does not accept options other than logs, metrics, traces, or all for the --signal flag', async function () { try { await runCommand(Cmd, [ + '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--space', spaceId, '--signal', 'logs,foo', '--endpoint', - 'https://api.testendpoint.com', + testEndpoint, '--transport', 'http', ]) @@ -166,18 +101,15 @@ describe('telemetry:index', function () { }) it('returns an error when the --signal flag is set to "all" in combination with other options', async function () { - nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) - .put(`/spaces/${spaceId}/telemetry-drains`) - .reply(200, spaceTelemetryDrains) - try { await runCommand(Cmd, [ + '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--space', spaceId, '--signal', 'logs,all', '--endpoint', - 'https://api.testendpoint.com', + testEndpoint, '--transport', 'http', ]) From ca0eef5b6ad63b40c8ae0f73c8b03941bfa3ce32 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 17 Oct 2024 14:48:13 -0400 Subject: [PATCH 10/67] chore: update telemetry/index tests to use fixtures --- .../cli/test/fixtures/telemetry/fixtures.ts | 8 +-- .../commands/telemetry/index.unit.test.ts | 52 +++---------------- 2 files changed, 12 insertions(+), 48 deletions(-) diff --git a/packages/cli/test/fixtures/telemetry/fixtures.ts b/packages/cli/test/fixtures/telemetry/fixtures.ts index 43241375d5..28fc955c0a 100644 --- a/packages/cli/test/fixtures/telemetry/fixtures.ts +++ b/packages/cli/test/fixtures/telemetry/fixtures.ts @@ -1,4 +1,6 @@ -export const spaceTelemetryDrain1 = { +import {TelemetryDrain} from '../../../src/lib/types/telemetry' + +export const spaceTelemetryDrain1: TelemetryDrain = { id: '44444321-5717-4562-b3fc-2c963f66afa6', owner: {id: '12345678-5717-4562-b3fc-2c963f66afa6', type: 'space', name: 'myspace'}, capabilities: ['traces', 'metrics', 'logs'], @@ -12,7 +14,7 @@ export const spaceTelemetryDrain1 = { }, } -export const appTelemetryDrain1 = { +export const appTelemetryDrain1: TelemetryDrain = { id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', owner: {id: '87654321-5717-4562-b3fc-2c963f66afa6', type: 'app', name: 'myapp'}, capabilities: ['traces', 'metrics'], @@ -26,7 +28,7 @@ export const appTelemetryDrain1 = { }, } -export const appTelemetryDrain2 = { +export const appTelemetryDrain2: TelemetryDrain = { id: '55555f64-5717-4562-b3fc-2c963f66afa6', owner: {id: '87654321-5717-4562-b3fc-2c963f66afa6', type: 'app', name: 'myapp'}, capabilities: ['logs'], diff --git a/packages/cli/test/unit/commands/telemetry/index.unit.test.ts b/packages/cli/test/unit/commands/telemetry/index.unit.test.ts index 7900b2273d..1901e84b02 100644 --- a/packages/cli/test/unit/commands/telemetry/index.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/index.unit.test.ts @@ -5,57 +5,19 @@ import * as nock from 'nock' import expectOutput from '../../../helpers/utils/expectOutput' import heredoc from 'tsheredoc' import {TelemetryDrains} from '../../../../src/lib/types/telemetry' +import {spaceTelemetryDrain1, appTelemetryDrain1, appTelemetryDrain2} from '../../../fixtures/telemetry/fixtures' describe('telemetry:index', function () { - const appId = '87654321-5717-4562-b3fc-2c963f66afa6' - const spaceId = '12345678-5717-4562-b3fc-2c963f66afa6' + let appId: string + let spaceId: string let appTelemetryDrains: TelemetryDrains let spaceTelemetryDrains: TelemetryDrains beforeEach(function () { - spaceTelemetryDrains = [ - { - id: '44444321-5717-4562-b3fc-2c963f66afa6', - owner: {id: spaceId, type: 'space', name: 'myspace'}, - capabilities: ['traces', 'metrics', 'logs'], - exporter: { - type: 'otlphttp', - endpoint: 'https://api.honeycomb.io/', - headers: { - 'x-honeycomb-team': 'your-api-key', - 'x-honeycomb-dataset': 'your-dataset', - }, - }, - }, - ] - appTelemetryDrains = [ - { - id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', - owner: {id: appId, type: 'app', name: 'myapp'}, - capabilities: ['traces', 'metrics'], - exporter: { - type: 'otlphttp', - endpoint: 'https://api.honeycomb.io/', - headers: { - 'x-honeycomb-team': 'your-api-key', - 'x-honeycomb-dataset': 'your-dataset', - }, - }, - }, - { - id: '55555f64-5717-4562-b3fc-2c963f66afa6', - owner: {id: appId, type: 'app', name: 'myapp'}, - capabilities: ['logs'], - exporter: { - type: 'otlphttp', - endpoint: 'https://api.papertrail.com/', - headers: { - 'x-papertrail-team': 'your-api-key', - 'x-papertrail-dataset': 'your-dataset', - }, - }, - }, - ] + appId = appTelemetryDrain1.owner.id + spaceId = spaceTelemetryDrain1.owner.id + spaceTelemetryDrains = [spaceTelemetryDrain1] + appTelemetryDrains = [appTelemetryDrain1, appTelemetryDrain2] }) afterEach(function () { From d14c0f7168e8e1521dba4ee02139eb3941e7050f Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 17 Oct 2024 14:57:45 -0400 Subject: [PATCH 11/67] chore: fix test name and remove chai-nock --- packages/cli/package.json | 1 - .../unit/commands/telemetry/add.unit.test.ts | 2 +- yarn.lock | 79 ------------------- 3 files changed, 1 insertion(+), 81 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 7a22f4b497..92d439ec82 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -115,7 +115,6 @@ "bats": "^1.1.0", "chai": "^4.4.1", "chai-as-promised": "^7.1.1", - "chai-nock": "^1.3.0", "globby": "^10.0.2", "lodash": "^4.17.11", "lolex": "^3.1.0", diff --git a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts index be45208220..22e9901b7d 100644 --- a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts @@ -10,7 +10,7 @@ const appId = appTelemetryDrain1.owner.id const spaceId = spaceTelemetryDrain1.owner.id const testEndpoint = appTelemetryDrain1.exporter.endpoint -describe('telemetry:index', function () { +describe('telemetry:add', function () { afterEach(function () { return nock.cleanAll() }) diff --git a/yarn.lock b/yarn.lock index 692578f58c..86fe5c72c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6698,31 +6698,6 @@ __metadata: languageName: node linkType: hard -"chai-nock@npm:^1.3.0": - version: 1.3.0 - resolution: "chai-nock@npm:1.3.0" - dependencies: - chai: ^4.2.0 - deep-equal: ^1.0.1 - checksum: c1d531691650328a6c3244423a4e4c8efc785c9f7dec26381741734543407a94b4fc28dd9794012d06e7a0149de945cf8e9b9c9cb67e2cf159c3145dde593e94 - languageName: node - linkType: hard - -"chai@npm:^4.2.0": - version: 4.5.0 - resolution: "chai@npm:4.5.0" - dependencies: - assertion-error: ^1.1.0 - check-error: ^1.0.3 - deep-eql: ^4.1.3 - get-func-name: ^2.0.2 - loupe: ^2.3.6 - pathval: ^1.1.1 - type-detect: ^4.1.0 - checksum: 70e5a8418a39e577e66a441cc0ce4f71fd551a650a71de30dd4e3e31e75ed1f5aa7119cf4baf4a2cb5e85c0c6befdb4d8a05811fad8738c1a6f3aa6a23803821 - languageName: node - linkType: hard - "chai@npm:^4.4.1": version: 4.4.1 resolution: "chai@npm:4.4.1" @@ -7909,20 +7884,6 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^1.0.1": - version: 1.1.2 - resolution: "deep-equal@npm:1.1.2" - dependencies: - is-arguments: ^1.1.1 - is-date-object: ^1.0.5 - is-regex: ^1.1.4 - object-is: ^1.1.5 - object-keys: ^1.1.1 - regexp.prototype.flags: ^1.5.1 - checksum: 2d50f27fff785fb272cdef038ee5365ee5a30ab1aab053976e6a6add44cc60abd99b38179a46a01ac52c5e54ebb220e8f1a3a1954da20678b79c46ef4d97c9db - languageName: node - linkType: hard - "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -10753,7 +10714,6 @@ __metadata: bytes: ^3.1.2 chai: ^4.4.1 chai-as-promised: ^7.1.1 - chai-nock: ^1.3.0 chalk: ^2.4.2 commander: ^2.15.1 date-fns: ^2.30.0 @@ -11321,16 +11281,6 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.1.1": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 - languageName: node - linkType: hard - "is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": version: 3.0.2 resolution: "is-array-buffer@npm:3.0.2" @@ -13890,16 +13840,6 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.1.5": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - checksum: 3ea22759967e6f2380a2cbbd0f737b42dc9ddb2dfefdb159a1b927fea57335e1b058b564bfa94417db8ad58cddab33621a035de6f5e5ad56d89f2dd03e66c6a1 - languageName: node - linkType: hard - "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -15276,18 +15216,6 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.1": - version: 1.5.3 - resolution: "regexp.prototype.flags@npm:1.5.3" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-errors: ^1.3.0 - set-function-name: ^2.0.2 - checksum: 83ff0705b837f7cb6d664010a11642250f36d3f642263dd0f3bdfe8f150261aa7b26b50ee97f21c1da30ef82a580bb5afedbef5f45639d69edaafbeac9bbb0ed - languageName: node - linkType: hard - "regexp.prototype.flags@npm:^1.5.2": version: 1.5.2 resolution: "regexp.prototype.flags@npm:1.5.2" @@ -17233,13 +17161,6 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:^4.1.0": - version: 4.1.0 - resolution: "type-detect@npm:4.1.0" - checksum: 3b32f873cd02bc7001b00a61502b7ddc4b49278aabe68d652f732e1b5d768c072de0bc734b427abf59d0520a5f19a2e07309ab921ef02018fa1cb4af155cdb37 - languageName: node - linkType: hard - "type-fest@npm:^0.18.0": version: 0.18.1 resolution: "type-fest@npm:0.18.1" From 0283e6ea0c3b471ec3eb427b7aaff27427ce0774 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 17 Oct 2024 13:58:11 -0700 Subject: [PATCH 12/67] add generation to spaces:create (#3040) * Add generation as option to spaces:create * Remove hidden features option until support for it arrives in 3.sdk --- packages/cli/src/commands/spaces/create.ts | 39 ++++-- .../unit/commands/spaces/create.unit.test.ts | 115 ++++++++++++++---- 2 files changed, 114 insertions(+), 40 deletions(-) diff --git a/packages/cli/src/commands/spaces/create.ts b/packages/cli/src/commands/spaces/create.ts index 6d481ad931..c1ead945cf 100644 --- a/packages/cli/src/commands/spaces/create.ts +++ b/packages/cli/src/commands/spaces/create.ts @@ -1,7 +1,7 @@ import color from '@heroku-cli/color' import {Command, flags} from '@heroku-cli/command' import {Args, ux} from '@oclif/core' -import * as Heroku from '@heroku-cli/schema' +import {Space} from '../../lib/types/fir' import heredoc from 'tsheredoc' import {displayShieldState} from '../../lib/spaces/spaces' import {RegionCompletion} from '../../lib/autocomplete/completions' @@ -28,15 +28,16 @@ export default class Create extends Command { `] static flags = { - space: flags.string({char: 's', description: 'name of space to create'}), channel: flags.string({hidden: true}), - region: flags.string({description: 'region name', completion: RegionCompletion}), - features: flags.string({hidden: true, description: 'a list of features separated by commas'}), - 'log-drain-url': flags.string({hidden: true, description: 'direct log drain url'}), - shield: flags.boolean({hidden: true, description: 'create a Shield space'}), cidr: flags.string({description: 'RFC-1918 CIDR the space will use'}), - 'kpi-url': flags.string({hidden: true, description: 'self-managed KPI endpoint to use'}), 'data-cidr': flags.string({description: 'RFC-1918 CIDR used by Heroku Data resources for the space'}), + // features: flags.string({hidden: true, description: 'a list of features separated by commas'}), + generation: flags.string({description: 'generation for space', default: 'cedar', options: ['cedar', 'fir']}), + 'kpi-url': flags.string({hidden: true, description: 'self-managed KPI endpoint to use'}), + 'log-drain-url': flags.string({hidden: true, description: 'direct log drain url'}), + region: flags.string({description: 'region name', completion: RegionCompletion}), + shield: flags.boolean({hidden: true, description: 'create a Shield space'}), + space: flags.string({char: 's', description: 'name of space to create'}), team: flags.team({required: true}), } @@ -46,7 +47,7 @@ export default class Create extends Command { public async run(): Promise { const {flags, args} = await this.parse(Create) - const {channel, region, features, 'log-drain-url': logDrainUrl, shield, cidr, 'kpi-url': kpiUrl, 'data-cidr': dataCidr, team} = flags + const {channel, region, features, generation, 'log-drain-url': logDrainUrl, shield, cidr, 'kpi-url': kpiUrl, 'data-cidr': dataCidr, team} = flags const spaceName = flags.space || args.space if (!spaceName) { @@ -61,10 +62,22 @@ export default class Create extends Command { const spaceType = shield ? 'Shield' : 'Standard' ux.action.start(`Creating space ${color.green(spaceName as string)} in team ${color.cyan(team as string)}`) - const {body: space} = await this.heroku.post>('/spaces', { + const {body: space} = await this.heroku.post>('/spaces', { + headers: { + Accept: 'application/vnd.heroku+json; version=3.sdk', + }, body: { - name: spaceName, team: team, channel_name: channel, region: region, features: splitCsv(features), - log_drain_url: logDrainUrl, shield, cidr, kpi_url: kpiUrl, data_cidr: dataCidr, + channel_name: channel, + cidr, + data_cidr: dataCidr, + // features: splitCsv(features), + generation, + kpi_url: kpiUrl, + log_drain_url: logDrainUrl, + name: spaceName, + region, + shield, + team, }, }) ux.action.stop() @@ -74,7 +87,7 @@ export default class Create extends Command { ux.styledHeader(space.name) ux.styledObject({ - ID: space.id, Team: space.team.name, Region: space.region.name, CIDR: space.cidr, 'Data CIDR': space.data_cidr, State: space.state, Shield: displayShieldState(space), 'Created at': space.created_at, - }, ['ID', 'Team', 'Region', 'CIDR', 'Data CIDR', 'State', 'Shield', 'Created at']) + ID: space.id, Team: space.team.name, Region: space.region.name, CIDR: space.cidr, 'Data CIDR': space.data_cidr, State: space.state, Shield: displayShieldState(space), Generation: space.generation, 'Created at': space.created_at, + }, ['ID', 'Team', 'Region', 'CIDR', 'Data CIDR', 'State', 'Shield', 'Generation', 'Created at']) } } diff --git a/packages/cli/test/unit/commands/spaces/create.unit.test.ts b/packages/cli/test/unit/commands/spaces/create.unit.test.ts index 5bc86dfcaf..8c9dcb314b 100644 --- a/packages/cli/test/unit/commands/spaces/create.unit.test.ts +++ b/packages/cli/test/unit/commands/spaces/create.unit.test.ts @@ -14,19 +14,21 @@ describe('spaces:create', function () { }) it('creates a Standard space', async function () { - const api = nock('https://api.heroku.com') + const api = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .post('/spaces', { + // features: features, + generation: 'cedar', name: 'my-space', - team: 'my-team', region: 'my-region', - features: features, + team: 'my-team', }) .reply(201, { shield: false, name: 'my-space', team: {name: 'my-team'}, region: {name: 'my-region'}, - features: ['one', 'two'], + // features: ['one', 'two'], + generation: 'cedar', state: 'allocated', created_at: now, cidr: '10.0.0.0/16', @@ -37,7 +39,7 @@ describe('spaces:create', function () { '--team=my-team', '--space=my-space', '--region=my-region', - '--features=one, two', + // '--features=one, two', ]) api.done() @@ -51,24 +53,27 @@ describe('spaces:create', function () { Data CIDR: 172.23.0.0/20 State: allocated Shield: off + Generation: cedar Created at: ${now.toISOString()} `) }) it('shows Standard Private Space Add-on cost warning', async function () { - const api = nock('https://api.heroku.com') + const api = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .post('/spaces', { + // features: features, + generation: 'cedar', name: 'my-space', - team: 'my-team', region: 'my-region', - features: features, + team: 'my-team', }) .reply(201, { shield: false, name: 'my-space', team: {name: 'my-team'}, region: {name: 'my-region'}, - features: ['one', 'two'], + // features: ['one', 'two'], + generation: 'cedar', state: 'allocated', created_at: now, cidr: '10.0.0.0/16', @@ -79,7 +84,7 @@ describe('spaces:create', function () { '--team=my-team', '--space=my-space', '--region=my-region', - '--features=one, two', + // '--features=one, two', ]) api.done() @@ -90,20 +95,22 @@ describe('spaces:create', function () { }) it('creates a Shield space', async function () { - const api = nock('https://api.heroku.com') + const api = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .post('/spaces', { + // features: features, + generation: 'cedar', name: 'my-space', - team: 'my-team', region: 'my-region', - features: features, shield: true, + team: 'my-team', }) .reply(201, { shield: true, name: 'my-space', team: {name: 'my-team'}, region: {name: 'my-region'}, - features: ['one', 'two'], + // features: ['one', 'two'], + generation: 'cedar', state: 'allocated', created_at: now, cidr: '10.0.0.0/16', @@ -114,7 +121,7 @@ describe('spaces:create', function () { '--team=my-team', '--space=my-space', '--region=my-region', - '--features=one, two', + // '--features=one, two', '--shield', ]) @@ -129,25 +136,28 @@ describe('spaces:create', function () { Data CIDR: 172.23.0.0/20 State: allocated Shield: on + Generation: cedar Created at: ${now.toISOString()} `) }) it('shows Shield Private Space Add-on cost warning', async function () { - const api = nock('https://api.heroku.com') + const api = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .post('/spaces', { + // features: features, + generation: 'cedar', name: 'my-space', - team: 'my-team', region: 'my-region', - features: features, shield: true, + team: 'my-team', }) .reply(201, { shield: true, name: 'my-space', team: {name: 'my-team'}, region: {name: 'my-region'}, - features: ['one', 'two'], + // features: ['one', 'two'], + generation: 'cedar', state: 'allocated', created_at: now, cidr: '10.0.0.0/16', @@ -158,7 +168,7 @@ describe('spaces:create', function () { '--team=my-team', '--space=my-space', '--region=my-region', - '--features=one, two', + // '--features=one, two', '--shield', ]) @@ -170,21 +180,22 @@ describe('spaces:create', function () { }) it('creates a space with custom cidr and data cidr', async function () { - const api = nock('https://api.heroku.com') + const api = nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .post('/spaces', { - name: 'my-space', - team: 'my-team', - region: 'my-region', cidr: '10.0.0.0/24', data_cidr: '172.23.0.0/28', - features: features, + // features: features, + generation: 'cedar', + name: 'my-space', + region: 'my-region', + team: 'my-team', }) .reply(201, { shield: false, name: 'my-space', team: {name: 'my-team'}, region: {name: 'my-region'}, - features: ['one', 'two'], + // features: ['one', 'two'], state: 'allocated', created_at: now, cidr: '10.0.0.0/24', @@ -195,7 +206,7 @@ describe('spaces:create', function () { '--team=my-team', '--space=my-space', '--region=my-region', - '--features=one, two', + // '--features=one, two', '--cidr=10.0.0.0/24', '--data-cidr=172.23.0.0/28', ]) @@ -214,4 +225,54 @@ describe('spaces:create', function () { Created at: ${now.toISOString()} `) }) + + it('creates a fir space', async function () { + const firSpace = { + cidr: '10.0.0.0/16', + created_at: now, + data_cidr: '172.23.0.0/20', + // features: ['one', 'two'], + generation: 'fir', + name: 'my-space', + region: {name: 'my-region'}, + shield: false, + state: 'allocated', + team: {name: 'my-team'}, + } + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .post('/spaces', { + // features: firSpace.features, + generation: firSpace.generation, + name: firSpace.name, + region: firSpace.region.name, + team: firSpace.team.name, + }) + .reply(201, firSpace) + + await runCommand(Cmd, [ + '--team', + firSpace.team.name, + '--space', + firSpace.name, + '--region', + firSpace.region.name, + // '--features', + // firSpace.features.join(','), + '--generation', + firSpace.generation, + ]) + + expect(stdout.output).to.eq(heredoc` + === ${firSpace.name} + + Team: ${firSpace.team.name} + Region: ${firSpace.region.name} + CIDR: ${firSpace.cidr} + Data CIDR: ${firSpace.data_cidr} + State: ${firSpace.state} + Shield: off + Generation: ${firSpace.generation} + Created at: ${now.toISOString()} + `) + }) }) From 82372c10fa49e1945660318233fe0af60d6b4618 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 17 Oct 2024 14:22:46 -0700 Subject: [PATCH 13/67] Switch 3.fir to 3.sdk (#3044) --- packages/cli/src/commands/spaces/index.ts | 2 +- packages/cli/src/commands/telemetry/index.ts | 4 ++-- packages/cli/src/commands/telemetry/info.ts | 2 +- packages/cli/test/unit/commands/telemetry/index.unit.test.ts | 4 ++-- packages/cli/test/unit/commands/telemetry/info.unit.test.ts | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/cli/src/commands/spaces/index.ts b/packages/cli/src/commands/spaces/index.ts index bd78327269..2cf4941e6d 100644 --- a/packages/cli/src/commands/spaces/index.ts +++ b/packages/cli/src/commands/spaces/index.ts @@ -18,7 +18,7 @@ export default class Index extends Command { const {team, json} = flags let {body: spaces} = await this.heroku.get('/spaces', { headers: { - Accept: 'application/vnd.heroku+json; version=3.fir', + Accept: 'application/vnd.heroku+json; version=3.sdk', }, }) if (team) { diff --git a/packages/cli/src/commands/telemetry/index.ts b/packages/cli/src/commands/telemetry/index.ts index 4802dfe282..69e806d680 100644 --- a/packages/cli/src/commands/telemetry/index.ts +++ b/packages/cli/src/commands/telemetry/index.ts @@ -17,14 +17,14 @@ export default class Index extends Command { if (app) { const {body: appTelemetryDrains} = await this.heroku.get(`/apps/${app}/telemetry-drains`, { headers: { - Accept: 'application/vnd.heroku+json; version=3.fir', + Accept: 'application/vnd.heroku+json; version=3.sdk', }, }) this.display(appTelemetryDrains, 'App') } else if (space) { const {body: spaceTelemetryDrains} = await this.heroku.get(`/spaces/${space}/telemetry-drains`, { headers: { - Accept: 'application/vnd.heroku+json; version=3.fir', + Accept: 'application/vnd.heroku+json; version=3.sdk', }, }) this.display(spaceTelemetryDrains, 'Space') diff --git a/packages/cli/src/commands/telemetry/info.ts b/packages/cli/src/commands/telemetry/info.ts index d39907cf4a..b92374cc98 100644 --- a/packages/cli/src/commands/telemetry/info.ts +++ b/packages/cli/src/commands/telemetry/info.ts @@ -15,7 +15,7 @@ export default class Info extends Command { const {body: telemetryDrain} = await this.heroku.get(`/telemetry-drains/${telemetry_drain_id}`, { headers: { - Accept: 'application/vnd.heroku+json; version=3.fir', + Accept: 'application/vnd.heroku+json; version=3.sdk', }, }) this.display(telemetryDrain) diff --git a/packages/cli/test/unit/commands/telemetry/index.unit.test.ts b/packages/cli/test/unit/commands/telemetry/index.unit.test.ts index 1901e84b02..6152b47087 100644 --- a/packages/cli/test/unit/commands/telemetry/index.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/index.unit.test.ts @@ -25,7 +25,7 @@ describe('telemetry:index', function () { }) it('shows space telemetry drains', async function () { - nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .get(`/spaces/${spaceId}/telemetry-drains`) .reply(200, spaceTelemetryDrains) @@ -42,7 +42,7 @@ describe('telemetry:index', function () { }) it('shows app telemetry drains', async function () { - nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .get(`/apps/${appId}/telemetry-drains`) .reply(200, appTelemetryDrains) diff --git a/packages/cli/test/unit/commands/telemetry/info.unit.test.ts b/packages/cli/test/unit/commands/telemetry/info.unit.test.ts index 39db9ac1e6..d158314a67 100644 --- a/packages/cli/test/unit/commands/telemetry/info.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/info.unit.test.ts @@ -46,7 +46,7 @@ describe('telemetry:info', function () { }) it('shows info for space telemetry drain', async function () { - nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .get(`/telemetry-drains/${spaceTelemetryDrain.id}`) .reply(200, spaceTelemetryDrain) @@ -64,7 +64,7 @@ describe('telemetry:info', function () { }) it('shows info for app telemetry drains', async function () { - nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) .get(`/telemetry-drains/${appTelemetryDrain.id}`) .reply(200, appTelemetryDrain) From af5fcb8fb5f0e837051f8bbba20cec9d4f41a0f4 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 17 Oct 2024 16:08:38 -0700 Subject: [PATCH 14/67] Add telemetry remove command (#3035) * Add telemetry remove command * Allow for passing --app or --space to delete drains * switch to 3.sdk variant, use fixutres in tests --- packages/cli/src/commands/telemetry/remove.ts | 67 +++++++++++ .../commands/telemetry/remove.unit.test.ts | 105 ++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 packages/cli/src/commands/telemetry/remove.ts create mode 100644 packages/cli/test/unit/commands/telemetry/remove.unit.test.ts diff --git a/packages/cli/src/commands/telemetry/remove.ts b/packages/cli/src/commands/telemetry/remove.ts new file mode 100644 index 0000000000..833cd7413a --- /dev/null +++ b/packages/cli/src/commands/telemetry/remove.ts @@ -0,0 +1,67 @@ +import {flags, Command} from '@heroku-cli/command' +import {Args, ux} from '@oclif/core' +import {TelemetryDrain} from '../../lib/types/telemetry' +import heredoc from 'tsheredoc' + +export default class Remove extends Command { + static topic = 'telemetry' + static description = 'remove a telemetry drain' + static args = { + telemetry_drain_id: Args.string({description: 'ID of the drain to remove'}), + } + + static flags = { + app: flags.app({description: 'name of the app to remove all drains from'}), + space: flags.string({char: 's', description: 'name of the space to remove all drains from'}), + } + + public async run(): Promise { + const {args, flags} = await this.parse(Remove) + const {app, space} = flags + const {telemetry_drain_id} = args + if (!(app || space || telemetry_drain_id)) { + ux.error(heredoc(` + Requires either --app or --space or a TELEMETRY_DRAIN_ID to be provided. + See more help with --help + `)) + } + + if (telemetry_drain_id) { + const telemetryDrain = await this.removeDrain(telemetry_drain_id) + ux.action.start(`Removing telemetry drain ${telemetry_drain_id}, which was configured for ${telemetryDrain.owner.type} ${telemetryDrain.owner.name}`) + } else if (app) { + ux.action.start(`Removing all telemetry drains from app ${app}`) + const {body: telemetryDrains} = await this.heroku.get(`/apps/${app}/telemetry-drains`, { + headers: { + Accept: 'application/vnd.heroku+json; version=3.sdk', + }, + }) + + for (const telemetryDrain of telemetryDrains) { + await this.removeDrain(telemetryDrain.id) + } + } else if (space) { + ux.action.start(`Removing all telemetry drains from space ${space}`) + const {body: telemetryDrains} = await this.heroku.get(`/spaces/${space}/telemetry-drains`, { + headers: { + Accept: 'application/vnd.heroku+json; version=3.sdk', + }, + }) + + for (const telemetryDrain of telemetryDrains) { + await this.removeDrain(telemetryDrain.id) + } + } + + ux.action.stop() + } + + protected async removeDrain(telemetry_drain_id: string) { + const {body: telemetryDrain} = await this.heroku.delete(`/telemetry-drains/${telemetry_drain_id}`, { + headers: { + Accept: 'application/vnd.heroku+json; version=3.sdk', + }, + }) + return telemetryDrain + } +} diff --git a/packages/cli/test/unit/commands/telemetry/remove.unit.test.ts b/packages/cli/test/unit/commands/telemetry/remove.unit.test.ts new file mode 100644 index 0000000000..a0e9c0939c --- /dev/null +++ b/packages/cli/test/unit/commands/telemetry/remove.unit.test.ts @@ -0,0 +1,105 @@ +import {stderr} from 'stdout-stderr' +import Cmd from '../../../../src/commands/telemetry/remove' +import runCommand from '../../../helpers/runCommand' +import * as nock from 'nock' +import expectOutput from '../../../helpers/utils/expectOutput' +import heredoc from 'tsheredoc' +import {expect} from 'chai' +import {spaceTelemetryDrain1, appTelemetryDrain1, appTelemetryDrain2} from '../../../fixtures/telemetry/fixtures' +import {TelemetryDrains} from '../../../../src/lib/types/telemetry' + +describe('telemetry:remove', function () { + let appId: string + let spaceId: string + let appTelemetryDrains: TelemetryDrains + let spaceTelemetryDrains: TelemetryDrains + + beforeEach(function () { + appId = appTelemetryDrain1.owner.id + spaceId = spaceTelemetryDrain1.owner.id + appTelemetryDrains = [appTelemetryDrain1, appTelemetryDrain2] + spaceTelemetryDrains = [spaceTelemetryDrain1] + }) + + afterEach(function () { + return nock.cleanAll() + }) + + it('deletes a space telemetry drain', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .get(`/telemetry-drains/${spaceTelemetryDrain1.id}`) + .reply(200, spaceTelemetryDrain1) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .delete(`/telemetry-drains/${spaceTelemetryDrain1.id}`) + .reply(200, spaceTelemetryDrain1) + + await runCommand(Cmd, [ + spaceTelemetryDrain1.id, + ]) + expectOutput(stderr.output, heredoc(` + Removing telemetry drain ${spaceTelemetryDrain1.id}, which was configured for space ${spaceTelemetryDrain1.owner.name}... + Removing telemetry drain ${spaceTelemetryDrain1.id}, which was configured for space ${spaceTelemetryDrain1.owner.name}... done + `)) + }) + + it('deletes an app telemetry drains', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .get(`/telemetry-drains/${appTelemetryDrain1.id}`) + .reply(200, appTelemetryDrain1) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .delete(`/telemetry-drains/${appTelemetryDrain1.id}`) + .reply(200, appTelemetryDrain1) + + await runCommand(Cmd, [ + appTelemetryDrain1.id, + ]) + expectOutput(stderr.output, heredoc(` + Removing telemetry drain ${appTelemetryDrain1.id}, which was configured for app ${appTelemetryDrain1.owner.name}... + Removing telemetry drain ${appTelemetryDrain1.id}, which was configured for app ${appTelemetryDrain1.owner.name}... done + `)) + }) + + it('deletes all drains from an app', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .get(`/apps/${appId}/telemetry-drains`) + .reply(200, appTelemetryDrains) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .delete(`/telemetry-drains/${appTelemetryDrain1.id}`) + .reply(200, appTelemetryDrain1) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .delete(`/telemetry-drains/${appTelemetryDrain2.id}`) + .reply(200, appTelemetryDrain2) + + await runCommand(Cmd, [ + '--app', appId, + ]) + expectOutput(stderr.output, heredoc(` + Removing all telemetry drains from app ${appId}... + Removing all telemetry drains from app ${appId}... done + `)) + }) + + it('deletes all drains from a space', async function () { + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .get(`/spaces/${spaceId}/telemetry-drains`) + .reply(200, spaceTelemetryDrains) + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .delete(`/telemetry-drains/${spaceTelemetryDrain1.id}`) + .reply(200, spaceTelemetryDrain1) + + await runCommand(Cmd, [ + '--space', spaceId, + ]) + expectOutput(stderr.output, heredoc(` + Removing all telemetry drains from space ${spaceId}... + Removing all telemetry drains from space ${spaceId}... done + `)) + }) + + it('requires a telemetry id, an app id, or a space id', async function () { + const errorMessage = 'Requires either --app or --space or a TELEMETRY_DRAIN_ID to be provided.' + await runCommand(Cmd, []).catch(error => { + expect(error.message).to.contain(errorMessage) + }) + }) +}) From bec18a811df89a36420b2a83e46d83f16e1e715e Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 10 Oct 2024 11:11:36 -0400 Subject: [PATCH 15/67] feat: add generation column to spaces renderInfo command --- packages/cli/src/lib/spaces/spaces.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/lib/spaces/spaces.ts b/packages/cli/src/lib/spaces/spaces.ts index 2b5669fbc7..e61ca26093 100644 --- a/packages/cli/src/lib/spaces/spaces.ts +++ b/packages/cli/src/lib/spaces/spaces.ts @@ -26,9 +26,10 @@ export function renderInfo(space: Heroku.Space, json: boolean) { State: space.state, Shield: displayShieldState(space), 'Outbound IPs': displayNat(space.outbound_ips), + Generation: space.generation, 'Created at': space.created_at, }, - ['ID', 'Team', 'Region', 'CIDR', 'Data CIDR', 'State', 'Shield', 'Outbound IPs', 'Created at'], + ['ID', 'Team', 'Region', 'CIDR', 'Data CIDR', 'State', 'Shield', 'Outbound IPs', 'Generation', 'Created at'], ) } } From a087692894595522384773737f3a5d958e346ac5 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 10 Oct 2024 11:12:25 -0400 Subject: [PATCH 16/67] feat: update spaces:info and spaces:wait to use fir API --- packages/cli/src/commands/spaces/info.ts | 18 +++++++++++++----- packages/cli/src/commands/spaces/wait.ts | 20 ++++++++++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/packages/cli/src/commands/spaces/info.ts b/packages/cli/src/commands/spaces/info.ts index 7b6c7532a1..ff8baa5614 100644 --- a/packages/cli/src/commands/spaces/info.ts +++ b/packages/cli/src/commands/spaces/info.ts @@ -1,12 +1,17 @@ import {Command, flags} from '@heroku-cli/command' import {Args, ux} from '@oclif/core' -import * as Heroku from '@heroku-cli/schema' import heredoc from 'tsheredoc' import {renderInfo} from '../../lib/spaces/spaces' import debug from 'debug' +import {IncomingHttpHeaders} from 'node:http' +import {Space, SpaceNat} from '../../lib/types/fir' const spacesDebug = debug('spaces:info') +type SpaceWithOutboundIps = Space & { + outbound_ips?: SpaceNat +} + export default class Info extends Command { static topic = 'spaces' static description = 'show info about a space' @@ -32,15 +37,18 @@ export default class Info extends Command { `)) } - let headers = {} + const headers: IncomingHttpHeaders = { + Accept: 'application/vnd.heroku+json; version=3.fir', + } if (!flags.json) { - headers = {'Accept-Expansion': 'region'} + headers['Accept-Expansion'] = 'region' } - const {body: space} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) + const {body: updatedSpace} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) + const space: SpaceWithOutboundIps = updatedSpace if (space.state === 'allocated') { try { - const {body: outbound_ips} = await this.heroku.get(`/spaces/${spaceName}/nat`) + const {body: outbound_ips} = await this.heroku.get(`/spaces/${spaceName}/nat`, {headers: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) space.outbound_ips = outbound_ips } catch (error) { spacesDebug(`Retrieving NAT details for the space failed with ${error}`) diff --git a/packages/cli/src/commands/spaces/wait.ts b/packages/cli/src/commands/spaces/wait.ts index bb6821a0ec..95278f8d1d 100644 --- a/packages/cli/src/commands/spaces/wait.ts +++ b/packages/cli/src/commands/spaces/wait.ts @@ -1,15 +1,20 @@ import color from '@heroku-cli/color' import {Command, flags} from '@heroku-cli/command' import {Args, ux} from '@oclif/core' -import * as Heroku from '@heroku-cli/schema' import heredoc from 'tsheredoc' import Spinner from '@oclif/core/lib/cli-ux/action/spinner' import debug from 'debug' import {renderInfo} from '../../lib/spaces/spaces' import {Notification, notify} from '@heroku-cli/notifications' +import {IncomingHttpHeaders} from 'node:http' +import {Space, SpaceNat} from '../../lib/types/fir' const spacesDebug = debug('spaces:wait') +type SpaceWithOutboundIps = Space & { + outbound_ips?: SpaceNat +} + export default class Wait extends Command { static topic = 'spaces' static description = 'wait for a space to be created' @@ -48,24 +53,27 @@ export default class Wait extends Command { const deadline = new Date(Date.now() + timeout) const action = new Spinner() action.start(`Waiting for space ${color.green(spaceName as string)} to allocate`) - let headers = {} + + const headers: IncomingHttpHeaders = { + Accept: 'application/vnd.heroku+json; version=3.fir', + } if (!flags.json) { - headers = {'Accept-Expansion': 'region'} + headers['Accept-Expansion'] = 'region' } - let {body: space} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) + let {body: space} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) while (space.state === 'allocating') { if (new Date() > deadline) { throw new Error('Timeout waiting for space to become allocated.') } await this.wait(interval) - const {body: updatedSpace} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) + const {body: updatedSpace} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) space = updatedSpace } try { - const {body: nat} = await this.heroku.get(`/spaces/${spaceName}/nat`) + const {body: nat} = await this.heroku.get(`/spaces/${spaceName}/nat`, {headers: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) space.outbound_ips = nat } catch (error) { spacesDebug(`Retrieving NAT details for the space failed with ${error}`) From e84ce390ea38c23e5143d5820c1463ca2e04af14 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 10 Oct 2024 11:40:14 -0400 Subject: [PATCH 17/67] chore: update types for spaces lib functions --- packages/cli/src/lib/spaces/spaces.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/lib/spaces/spaces.ts b/packages/cli/src/lib/spaces/spaces.ts index e61ca26093..1318efb834 100644 --- a/packages/cli/src/lib/spaces/spaces.ts +++ b/packages/cli/src/lib/spaces/spaces.ts @@ -1,17 +1,23 @@ import * as Heroku from '@heroku-cli/schema' import {ux} from '@oclif/core' +import {Space, SpaceNat, SpaceRegion} from '../types/fir' + +type SpaceExpanded = Space & { + outbound_ips?: SpaceNat + region: SpaceRegion & {description?: string} +} export function displayShieldState(space: Heroku.Space) { return space.shield ? 'on' : 'off' } -export function displayNat(nat?: Required) { +export function displayNat(nat?: Required) { if (!nat) return if (nat.state !== 'enabled') return nat.state return nat.sources.join(', ') } -export function renderInfo(space: Heroku.Space, json: boolean) { +export function renderInfo(space: SpaceExpanded, json: boolean) { if (json) { ux.log(JSON.stringify(space, null, 2)) } else { From cdce785952b7d60aeeca95df97cb3a6760f3de93 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Thu, 10 Oct 2024 16:46:29 -0400 Subject: [PATCH 18/67] chore: update tests and types for spaces:wait and spaces:info --- packages/cli/src/commands/spaces/info.ts | 5 +---- packages/cli/src/commands/spaces/wait.ts | 7 ++----- packages/cli/src/lib/spaces/spaces.ts | 10 +++------- packages/cli/src/lib/types/spaces.d.ts | 14 ++++++++++++++ packages/cli/test/fixtures/spaces/fixtures.ts | 9 ++++++++- .../test/unit/commands/spaces/info.unit.test.ts | 12 +++++++++--- .../test/unit/commands/spaces/wait.unit.test.ts | 8 +++++--- 7 files changed, 42 insertions(+), 23 deletions(-) create mode 100644 packages/cli/src/lib/types/spaces.d.ts diff --git a/packages/cli/src/commands/spaces/info.ts b/packages/cli/src/commands/spaces/info.ts index ff8baa5614..98c3850d10 100644 --- a/packages/cli/src/commands/spaces/info.ts +++ b/packages/cli/src/commands/spaces/info.ts @@ -5,13 +5,10 @@ import {renderInfo} from '../../lib/spaces/spaces' import debug from 'debug' import {IncomingHttpHeaders} from 'node:http' import {Space, SpaceNat} from '../../lib/types/fir' +import {SpaceWithOutboundIps} from '../../lib/types/spaces' const spacesDebug = debug('spaces:info') -type SpaceWithOutboundIps = Space & { - outbound_ips?: SpaceNat -} - export default class Info extends Command { static topic = 'spaces' static description = 'show info about a space' diff --git a/packages/cli/src/commands/spaces/wait.ts b/packages/cli/src/commands/spaces/wait.ts index 95278f8d1d..47f3ce7e98 100644 --- a/packages/cli/src/commands/spaces/wait.ts +++ b/packages/cli/src/commands/spaces/wait.ts @@ -7,14 +7,11 @@ import debug from 'debug' import {renderInfo} from '../../lib/spaces/spaces' import {Notification, notify} from '@heroku-cli/notifications' import {IncomingHttpHeaders} from 'node:http' -import {Space, SpaceNat} from '../../lib/types/fir' +import {SpaceNat} from '../../lib/types/fir' +import {SpaceWithOutboundIps} from '../../lib/types/spaces' const spacesDebug = debug('spaces:wait') -type SpaceWithOutboundIps = Space & { - outbound_ips?: SpaceNat -} - export default class Wait extends Command { static topic = 'spaces' static description = 'wait for a space to be created' diff --git a/packages/cli/src/lib/spaces/spaces.ts b/packages/cli/src/lib/spaces/spaces.ts index 1318efb834..5c692e331c 100644 --- a/packages/cli/src/lib/spaces/spaces.ts +++ b/packages/cli/src/lib/spaces/spaces.ts @@ -1,11 +1,7 @@ import * as Heroku from '@heroku-cli/schema' import {ux} from '@oclif/core' -import {Space, SpaceNat, SpaceRegion} from '../types/fir' - -type SpaceExpanded = Space & { - outbound_ips?: SpaceNat - region: SpaceRegion & {description?: string} -} +import {SpaceNat} from '../types/fir' +import {SpaceWithOutboundIps} from '../types/spaces' export function displayShieldState(space: Heroku.Space) { return space.shield ? 'on' : 'off' @@ -17,7 +13,7 @@ export function displayNat(nat?: Required) { return nat.sources.join(', ') } -export function renderInfo(space: SpaceExpanded, json: boolean) { +export function renderInfo(space: SpaceWithOutboundIps, json: boolean) { if (json) { ux.log(JSON.stringify(space, null, 2)) } else { diff --git a/packages/cli/src/lib/types/spaces.d.ts b/packages/cli/src/lib/types/spaces.d.ts new file mode 100644 index 0000000000..498fbe42b4 --- /dev/null +++ b/packages/cli/src/lib/types/spaces.d.ts @@ -0,0 +1,14 @@ +import { + Space, + Region, + SpaceRegion, + SpaceNat, +} from './fir' + +export type SpaceExpanded = Omit & { + region: SpaceRegion & Partial +} + +export type SpaceWithOutboundIps = SpaceExpanded & { + outbound_ips?: SpaceNat +} diff --git a/packages/cli/test/fixtures/spaces/fixtures.ts b/packages/cli/test/fixtures/spaces/fixtures.ts index df62389422..420691c9f1 100644 --- a/packages/cli/test/fixtures/spaces/fixtures.ts +++ b/packages/cli/test/fixtures/spaces/fixtures.ts @@ -1,12 +1,14 @@ import * as Heroku from '@heroku-cli/schema' import type {SpaceTopology} from '../../../src/commands/spaces/topology' +import {SpaceWithOutboundIps} from '../../../src/lib/types/spaces' -export const spaces: Record> = { +export const spaces: Record = { 'non-shield-space': { id: '1234', name: 'my-unshielded-space', shield: false, region: { + id: '1', description: 'virginia', name: 'us', }, @@ -19,6 +21,7 @@ export const spaces: Record> = { organization: { name: 'my-org', }, + generation: 'cedar', created_at: '2016-01-06T03:23:13Z', updated_at: '2016-01-06T03:23:13Z', }, @@ -27,6 +30,7 @@ export const spaces: Record> = { name: 'my-shielded-space', shield: true, region: { + id: '1', description: 'virginia', name: 'us', }, @@ -39,6 +43,7 @@ export const spaces: Record> = { organization: { name: 'my-org', }, + generation: 'cedar', created_at: '2016-01-06T03:23:13Z', updated_at: '2016-01-06T03:23:13Z', }, @@ -48,6 +53,7 @@ export const spaces: Record> = { name: 'my-unshielded-space', shield: false, region: { + id: '1', description: 'virginia', name: 'us', }, @@ -60,6 +66,7 @@ export const spaces: Record> = { organization: { name: 'my-org', }, + generation: 'cedar', created_at: '2016-01-06T03:23:13Z', updated_at: '2016-01-06T03:23:13Z', }, diff --git a/packages/cli/test/unit/commands/spaces/info.unit.test.ts b/packages/cli/test/unit/commands/spaces/info.unit.test.ts index 8e169c3a61..ae5770eba9 100644 --- a/packages/cli/test/unit/commands/spaces/info.unit.test.ts +++ b/packages/cli/test/unit/commands/spaces/info.unit.test.ts @@ -5,11 +5,11 @@ import * as nock from 'nock' import heredoc from 'tsheredoc' import expectOutput from '../../../helpers/utils/expectOutput' import * as fixtures from '../../../fixtures/spaces/fixtures' -import * as Heroku from '@heroku-cli/schema' +import {SpaceWithOutboundIps} from '../../../../src/lib/types/spaces' describe('spaces:info', function () { - let space: Required - let shieldSpace: Required + let space: SpaceWithOutboundIps + let shieldSpace: SpaceWithOutboundIps beforeEach(function () { space = fixtures.spaces['non-shield-space'] @@ -34,6 +34,7 @@ describe('spaces:info', function () { Data CIDR: ${space.data_cidr} State: ${space.state} Shield: off + Generation: ${space.generation} Created at: ${space.created_at} `)) }) @@ -73,6 +74,7 @@ describe('spaces:info', function () { State: ${space.state} Shield: off Outbound IPs: 123.456.789.123 + Generation: ${space.generation} Created at: ${space.created_at} `)) }) @@ -99,6 +101,7 @@ describe('spaces:info', function () { State: ${space.state} Shield: off Outbound IPs: disabled + Generation: ${space.generation} Created at: ${space.created_at} `)) }) @@ -121,6 +124,7 @@ describe('spaces:info', function () { Data CIDR: ${space.data_cidr} State: ${space.state} Shield: off + Generation: ${space.generation} Created at: ${space.created_at} `)) }) @@ -143,6 +147,7 @@ describe('spaces:info', function () { Data CIDR: ${shieldSpace.data_cidr} State: ${shieldSpace.state} Shield: on + Generation: ${space.generation} Created at: ${shieldSpace.created_at} `)) }) @@ -164,6 +169,7 @@ describe('spaces:info', function () { Data CIDR: ${space.data_cidr} State: ${space.state} Shield: off + Generation: ${space.generation} Created at: ${space.created_at} `)) }) diff --git a/packages/cli/test/unit/commands/spaces/wait.unit.test.ts b/packages/cli/test/unit/commands/spaces/wait.unit.test.ts index 943329da9a..c162491b4b 100644 --- a/packages/cli/test/unit/commands/spaces/wait.unit.test.ts +++ b/packages/cli/test/unit/commands/spaces/wait.unit.test.ts @@ -7,11 +7,11 @@ import {expect} from 'chai' import expectOutput from '../../../helpers/utils/expectOutput' import * as fixtures from '../../../fixtures/spaces/fixtures' import * as sinon from 'sinon' -import {Space} from '@heroku-cli/schema' +import {SpaceWithOutboundIps} from '../../../../src/lib/types/spaces' describe('spaces:wait', function () { - let allocatingSpace: Required - let allocatedSpace: Required + let allocatingSpace: SpaceWithOutboundIps + let allocatedSpace: SpaceWithOutboundIps let sandbox: sinon.SinonSandbox let notifySpy: sinon.SinonSpy @@ -56,6 +56,7 @@ describe('spaces:wait', function () { State: ${allocatedSpace.state} Shield: off Outbound IPs: 123.456.789.123 + Generation: ${allocatedSpace.generation} Created at: ${allocatedSpace.created_at} `)) expect(notifySpy.called).to.be.true @@ -114,6 +115,7 @@ describe('spaces:wait', function () { Data CIDR: ${allocatedSpace.data_cidr} State: ${allocatedSpace.state} Shield: off + Generation: ${allocatedSpace.generation} Created at: ${allocatedSpace.created_at} `)) expect(notifySpy.called).to.be.true From 37cd36259da215ea5e030257c3ce32e40e9af99c Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Fri, 18 Oct 2024 10:12:52 -0400 Subject: [PATCH 19/67] chore: update types for space request --- packages/cli/src/commands/spaces/info.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/cli/src/commands/spaces/info.ts b/packages/cli/src/commands/spaces/info.ts index 98c3850d10..55e9362fef 100644 --- a/packages/cli/src/commands/spaces/info.ts +++ b/packages/cli/src/commands/spaces/info.ts @@ -41,8 +41,7 @@ export default class Info extends Command { headers['Accept-Expansion'] = 'region' } - const {body: updatedSpace} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) - const space: SpaceWithOutboundIps = updatedSpace + const {body: space} = await this.heroku.get(`/spaces/${spaceName}`, {headers}) if (space.state === 'allocated') { try { const {body: outbound_ips} = await this.heroku.get(`/spaces/${spaceName}/nat`, {headers: {Accept: 'application/vnd.heroku+json; version=3.fir'}}) From af834b93542d6715e2f25bdb5afef4b3034b98cd Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Fri, 18 Oct 2024 11:13:20 -0400 Subject: [PATCH 20/67] chore: help and error text updates for telemetry:add --- packages/cli/src/commands/telemetry/add.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/commands/telemetry/add.ts b/packages/cli/src/commands/telemetry/add.ts index e70db7a317..4d6d3fac6c 100644 --- a/packages/cli/src/commands/telemetry/add.ts +++ b/packages/cli/src/commands/telemetry/add.ts @@ -1,30 +1,37 @@ import {Command, flags as Flags} from '@heroku-cli/command' import {Args, ux} from '@oclif/core' import {TelemetryDrain} from '../../lib/types/telemetry' +import heredoc from 'tsheredoc' export default class Add extends Command { static description = 'Add and configure a new telemetry drain. Defaults to collecting all telemetry unless otherwise specified.' static flags = { - app: Flags.app({exactlyOne: ['app', 'remote', 'space'], description: 'app to add drain to'}), - remote: Flags.remote({description: 'git remote of app to add drain to'}), - space: Flags.string({char: 's', description: 'space to add drain to'}), + app: Flags.app({exactlyOne: ['app', 'remote', 'space'], description: 'app to add a drain to'}), + remote: Flags.remote({description: 'git remote of app to add a drain to'}), + space: Flags.string({char: 's', description: 'space to add a drain to'}), signal: Flags.string({default: 'all', description: 'comma-delimited list of signals to collect (traces, metrics, logs). Use "all" to collect all signals.'}), endpoint: Flags.string({required: true, description: 'drain url'}), - transport: Flags.string({required: true, options: ['http', 'gprc']}), + transport: Flags.string({required: true, options: ['http', 'gprc'], description: 'transport protocol for the drain'}), } static args = { headers: Args.string({required: true, description: 'custom headers to configure the drain in json format'}), } + static example = heredoc(` + Add a telemetry drain to an app to collect logs and traces: + $ heroku telemetry:add --signal logs,traces --endpoint https://my-endpoint.com --transport http 'x-drain-example-team: API_KEY x-drain-example-dataset: METRICS_DATASET' + `) + + private validateAndFormatSignal = function (signalInput: string | undefined): string[] { const signalOptions = ['traces', 'metrics', 'logs'] if (!signalInput || signalInput === 'all') return signalOptions const signalArray = signalInput.split(',') signalArray.forEach(signal => { if (!signalOptions.includes(signal)) { - ux.error(`Invalid signal option: ${signal}. Signals must include some combination of "traces", "metrics", or "logs". The option "all" can be used on its own to include all three.`, {exit: 1}) + ux.error(`Invalid signal option: ${signal}. Run heroku telemetry:add --help to see signal options.`, {exit: 1}) } }) return signalArray From a73e55f912439aa4b4808eb260ae4f62bdd133d9 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Fri, 18 Oct 2024 11:45:39 -0400 Subject: [PATCH 21/67] chore: test fixes --- packages/cli/src/commands/telemetry/add.ts | 2 +- packages/cli/test/unit/commands/telemetry/add.unit.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/telemetry/add.ts b/packages/cli/src/commands/telemetry/add.ts index 4d6d3fac6c..7838cb4005 100644 --- a/packages/cli/src/commands/telemetry/add.ts +++ b/packages/cli/src/commands/telemetry/add.ts @@ -31,7 +31,7 @@ export default class Add extends Command { const signalArray = signalInput.split(',') signalArray.forEach(signal => { if (!signalOptions.includes(signal)) { - ux.error(`Invalid signal option: ${signal}. Run heroku telemetry:add --help to see signal options.`, {exit: 1}) + ux.error(`Invalid signal option: ${signalArray}. Run heroku telemetry:add --help to see signal options.`, {exit: 1}) } }) return signalArray diff --git a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts index 22e9901b7d..03d318011d 100644 --- a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts @@ -96,7 +96,7 @@ describe('telemetry:add', function () { ]) } catch (error) { const {message} = error as { message: string } - expect(message).to.contain('Invalid signal option: foo. Signals must include some combination of "traces", "metrics", or "logs". The option "all" can be used on its own to include all three.') + expect(message).to.contain('Invalid signal option: foo. Run heroku telemetry:add --help to see signal options.') } }) @@ -115,7 +115,7 @@ describe('telemetry:add', function () { ]) } catch (error) { const {message} = error as { message: string } - expect(message).to.contain('Invalid signal option: all. Signals must include some combination of "traces", "metrics", or "logs". The option "all" can be used on its own to include all three.') + expect(message).to.contain('Invalid signal option: logs,all. Run heroku telemetry:add --help to see signal options.') } }) }) From 34d54e754ff70fa160a92f75dbf0f6984d7ad870 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Fri, 18 Oct 2024 11:51:12 -0400 Subject: [PATCH 22/67] chore: one more test update --- packages/cli/test/unit/commands/telemetry/add.unit.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts index 03d318011d..78eb7b6eec 100644 --- a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts @@ -96,7 +96,7 @@ describe('telemetry:add', function () { ]) } catch (error) { const {message} = error as { message: string } - expect(message).to.contain('Invalid signal option: foo. Run heroku telemetry:add --help to see signal options.') + expect(message).to.contain('Invalid signal option: logs,foo. Run heroku telemetry:add --help to see signal options.') } }) From 478e0fc144f862e980ab6a79919cbd3f5c744832 Mon Sep 17 00:00:00 2001 From: Katy Bowman Date: Fri, 18 Oct 2024 12:11:10 -0400 Subject: [PATCH 23/67] chore: linting fix --- packages/cli/src/commands/telemetry/add.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/cli/src/commands/telemetry/add.ts b/packages/cli/src/commands/telemetry/add.ts index 7838cb4005..cb1157616a 100644 --- a/packages/cli/src/commands/telemetry/add.ts +++ b/packages/cli/src/commands/telemetry/add.ts @@ -24,7 +24,6 @@ export default class Add extends Command { $ heroku telemetry:add --signal logs,traces --endpoint https://my-endpoint.com --transport http 'x-drain-example-team: API_KEY x-drain-example-dataset: METRICS_DATASET' `) - private validateAndFormatSignal = function (signalInput: string | undefined): string[] { const signalOptions = ['traces', 'metrics', 'logs'] if (!signalInput || signalInput === 'all') return signalOptions From 3f7d253ab525d79a12bf484fabcadc53e5b1fb29 Mon Sep 17 00:00:00 2001 From: Santiago Bosio Date: Tue, 22 Oct 2024 14:53:24 -0300 Subject: [PATCH 24/67] feat(cli): Updates to `logs` command for Fir (#3046) * 'logs' command changes for Fir * Fix unrelated test * Forgetting to remove '.only' in fixed test --- packages/cli/src/commands/logs.ts | 84 +++- packages/cli/src/lib/apps/generation.ts | 27 ++ packages/cli/src/lib/run/colorize.ts | 3 +- packages/cli/src/lib/run/line-transform.ts | 28 -- packages/cli/src/lib/run/log-displayer.ts | 100 +++-- packages/cli/test/fixtures/apps/fixtures.ts | 80 ++++ .../cli/test/unit/commands/logs.unit.test.ts | 255 +++++++++++ .../test/unit/commands/orgs/open.unit.test.ts | 15 +- .../unit/lib/apps/generation.unit.test.ts | 130 ++++++ .../unit/lib/run/log-displayer.unit.test.ts | 408 ++++++++++++++++++ 10 files changed, 1028 insertions(+), 102 deletions(-) create mode 100644 packages/cli/src/lib/apps/generation.ts delete mode 100644 packages/cli/src/lib/run/line-transform.ts create mode 100644 packages/cli/test/fixtures/apps/fixtures.ts create mode 100644 packages/cli/test/unit/commands/logs.unit.test.ts create mode 100644 packages/cli/test/unit/lib/apps/generation.unit.test.ts create mode 100644 packages/cli/test/unit/lib/run/log-displayer.unit.test.ts diff --git a/packages/cli/src/commands/logs.ts b/packages/cli/src/commands/logs.ts index 4e95bfa1c2..ad7eb343c4 100644 --- a/packages/cli/src/commands/logs.ts +++ b/packages/cli/src/commands/logs.ts @@ -1,49 +1,87 @@ -/* eslint-disable @typescript-eslint/ban-ts-comment */ -// tslint:disable:file-name-casing import color from '@heroku-cli/color' import {Command, flags} from '@heroku-cli/command' import {ProcessTypeCompletion} from '@heroku-cli/command/lib/completions' - import logDisplayer from '../lib/run/log-displayer' +import heredoc from 'tsheredoc' export default class Logs extends Command { - static description = `display recent log output -disable colors with --no-color, HEROKU_LOGS_COLOR=0, or HEROKU_COLOR=0` + static description = heredoc` + display recent log output + disable colors with --no-color, HEROKU_LOGS_COLOR=0, or HEROKU_COLOR=0 + ` static examples = [ - '$ heroku logs --app=my-app', - '$ heroku logs --num=50', - '$ heroku logs --dyno=web --app=my-app', - '$ heroku logs --app=my-app --tail', + 'heroku logs --app=my-app', + 'heroku logs --num=50 --app=my-app', + 'heroku logs --dyno=web-123-456 --app=my-app', + 'heroku logs --type=web --app=my-app', + 'heroku logs --app=my-app --tail', ] static flags = { app: flags.app({required: true}), - remote: flags.remote(), - num: flags.integer({char: 'n', description: 'number of lines to display'}), - ps: flags.string({char: 'p', description: 'hidden alias for dyno', hidden: true}), dyno: flags.string({ char: 'd', - description: 'only show output from this dyno type (such as "web" or "worker")', + description: 'only show output from this dyno (such as "web-123-456" or "worker.2")', + }), + 'force-colors': flags.boolean({ + description: 'force use of colors (even on non-tty output)', + }), + // supports-color NPM package will parse ARGV looking for flag `--no-color`, but + // we need to define it here for OClif not to error out on an inexistent flag. + 'no-color': flags.boolean({ + default: false, + hidden: true, + relationships: [ + {type: 'none', flags: ['force-colors']}, + ], + }), + num: flags.integer({ + char: 'n', + description: 'number of lines to display (ignored for Fir generation apps)', + }), + ps: flags.string({ + char: 'p', + hidden: true, + description: 'hidden alias for type', + relationships: [ + {type: 'none', flags: ['dyno']}, + ], + completion: ProcessTypeCompletion, + }), + remote: flags.remote(), + source: flags.string({ + char: 's', + description: 'only show output from this source (such as "app" or "heroku")', + }), + tail: flags.boolean({ + char: 't', + default: false, + description: 'continually stream logs (defaults to true for Fir generation apps)', + }), + type: flags.string({ + description: 'only show output from this process type (such as "web" or "worker")', + relationships: [ + {type: 'none', flags: ['dyno', 'ps']}, + ], completion: ProcessTypeCompletion, }), - source: flags.string({char: 's', description: 'only show output from this source (such as "app" or "heroku")'}), - tail: flags.boolean({char: 't', description: 'continually stream logs'}), - 'force-colors': flags.boolean({description: 'force use of colors (even on non-tty output)'}), } async run() { const {flags} = await this.parse(Logs) + const {app, dyno, 'force-colors': forceColors, num, ps, source, tail, type} = flags - color.enabled = flags['force-colors'] || color.enabled + if (forceColors) + color.enabled = true await logDisplayer(this.heroku, { - app: flags.app, - // @ts-ignore - dyno: flags.dyno || flags.ps, - lines: flags.num || 100, - tail: flags.tail, - source: flags.source, + app, + dyno, + lines: num || 100, + source, + tail, + type: type || ps, }) } } diff --git a/packages/cli/src/lib/apps/generation.ts b/packages/cli/src/lib/apps/generation.ts new file mode 100644 index 0000000000..8c9ccc58d3 --- /dev/null +++ b/packages/cli/src/lib/apps/generation.ts @@ -0,0 +1,27 @@ +import {APIClient} from '@heroku-cli/command' +import {App} from '../types/fir' + +async function getApp(appOrName: App | string, herokuApi?: APIClient): Promise { + if (typeof appOrName === 'string') { + if (herokuApi === undefined) + throw new Error('herokuApi parameter is required when passing an app name') + + const {body: app} = await herokuApi.get( + `/apps/${appOrName}`, { + headers: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }) + return app + } + + return appOrName +} + +export async function isFirApp(appOrName: App | string, herokuApi?: APIClient) { + const app = await getApp(appOrName, herokuApi) + return app.generation === 'fir' +} + +export async function isCedarApp(appOrName: App | string, herokuApi?: APIClient) { + const app = await getApp(appOrName, herokuApi) + return app.generation === 'cedar' +} diff --git a/packages/cli/src/lib/run/colorize.ts b/packages/cli/src/lib/run/colorize.ts index 64e248ca12..60e62848e9 100644 --- a/packages/cli/src/lib/run/colorize.ts +++ b/packages/cli/src/lib/run/colorize.ts @@ -277,7 +277,8 @@ function colorizePG(body: string) { } export default function colorize(line: string) { - if (process.env.HEROKU_LOGS_COLOR === '0') return line + if (process.env.HEROKU_LOGS_COLOR === '0' || process.env.HEROKU_COLOR === '0') + return line const parsed = line.match(lineRegex) if (!parsed) return line diff --git a/packages/cli/src/lib/run/line-transform.ts b/packages/cli/src/lib/run/line-transform.ts deleted file mode 100644 index 74fb1c311b..0000000000 --- a/packages/cli/src/lib/run/line-transform.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* eslint-disable @typescript-eslint/ban-ts-comment */ -import * as stream from 'stream' - -// this splits a stream into lines -const transform = new stream.Transform({decodeStrings: false}) - -transform._transform = function (chunk, _encoding, next) { - let data = chunk - // @ts-ignore - if (this._lastLineData) data = this._lastLineData + data - - const lines = data.split('\n') - // @ts-ignore - this._lastLineData = lines.splice(-1, 1)[0] - - lines.forEach(this.push.bind(this)) - next() -} - -transform._flush = function (done) { - // @ts-ignore - if (this._lastLineData) this.push(this._lastLineData) - // @ts-ignore - this._lastLineData = null - done() -} - -export default transform diff --git a/packages/cli/src/lib/run/log-displayer.ts b/packages/cli/src/lib/run/log-displayer.ts index ddd1593960..9b5e2c6a19 100644 --- a/packages/cli/src/lib/run/log-displayer.ts +++ b/packages/cli/src/lib/run/log-displayer.ts @@ -1,37 +1,22 @@ import {APIClient} from '@heroku-cli/command' import {ux} from '@oclif/core' -import HTTP from 'http-call' -import {URL} from 'url' - import colorize from './colorize' -import liner from './line-transform' +import {isFirApp} from '../apps/generation' +import {LogSession} from '../types/fir' const EventSource = require('@heroku/eventsource') interface LogDisplayerOptions { - app: string; - dyno?: string; - lines?: number; - tail: boolean; - source?: string; -} - -async function readLogsV1(logplexURL: string) { - const {response} = await HTTP.stream(logplexURL) - return new Promise(function (resolve, reject) { - response.setEncoding('utf8') - liner.setEncoding('utf8') - response.pipe(liner) - liner.on('data', line => ux.log(colorize(line))) - response.on('end', resolve) - response.on('error', reject) - }) + app: string, + dyno?: string + lines?: number + source?: string + tail: boolean + type?: string } -function readLogsV2(logplexURL: string) { +function readLogs(logplexURL: string, isTail: boolean, recreateSessionTimeout?: number) { return new Promise(function (resolve, reject) { - const u = new URL(logplexURL) - const isTail = u.searchParams.get('tail') === 'true' const userAgent = process.env.HEROKU_DEBUG_USER_AGENT || 'heroku-run' const proxy = process.env.https_proxy || process.env.HTTPS_PROXY const es = new EventSource(logplexURL, { @@ -41,12 +26,12 @@ function readLogsV2(logplexURL: string) { }, }) - es.addEventListener('error', function (err: { status: number; message: any }) { + es.addEventListener('error', function (err: { status?: number; message?: string | null }) { if (err && (err.status || err.message)) { const msg = (isTail && (err.status === 404 || err.status === 403)) ? 'Log stream timed out. Please try again.' : - `Logs eventsource failed with: ${err.status} ${err.message}` - reject(msg) + `Logs eventsource failed with: ${err.status}${err.message ? ` ${err.message}` : ''}` + reject(new Error(msg)) es.close() } @@ -63,17 +48,14 @@ function readLogsV2(logplexURL: string) { ux.log(colorize(line)) }) }) - }) -} -function readLogs(logplexURL: string) { - const u = new URL(logplexURL) - - if (u.searchParams.has('srv')) { - return readLogsV1(logplexURL) - } - - return readLogsV2(logplexURL) + if (isTail && recreateSessionTimeout) { + setTimeout(() => { + reject(new Error('Fir log stream timeout')) + es.close() + }, recreateSessionTimeout) + } + }) } async function logDisplayer(heroku: APIClient, options: LogDisplayerOptions) { @@ -85,16 +67,46 @@ async function logDisplayer(heroku: APIClient, options: LogDisplayerOptions) { } }) - const response: { body: { logplex_url: string}} = await heroku.post(`/apps/${options.app}/log-sessions`, { - body: { - tail: options.tail, + const firApp = await isFirApp(options.app, heroku) + const isTail = firApp || options.tail + + const requestBodyParameters = { + source: options.source, + } + + if (firApp) + Object.assign(requestBodyParameters, { dyno: options.dyno, - source: options.source, + type: options.type, + }) + else + Object.assign(requestBodyParameters, { + dyno: options.dyno || options.type, lines: options.lines, - }, - }) + tail: options.tail, + }) - return readLogs(response.body.logplex_url) + let recreateLogSession = false + do { + const {body: logSession} = await heroku.post(`/apps/${options.app}/log-sessions`, { + body: requestBodyParameters, + headers: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }) + + try { + await readLogs( + logSession.logplex_url, + isTail, + firApp ? Number(process.env.HEROKU_LOG_STREAM_TIMEOUT || '15') * 60 * 1000 : undefined, + ) + } catch (error: unknown) { + const {message} = error as Error + if (message === 'Fir log stream timeout') + recreateLogSession = true + else + ux.error(message, {exit: 1}) + } + } while (recreateLogSession) } export default logDisplayer diff --git a/packages/cli/test/fixtures/apps/fixtures.ts b/packages/cli/test/fixtures/apps/fixtures.ts new file mode 100644 index 0000000000..4a114cf7dc --- /dev/null +++ b/packages/cli/test/fixtures/apps/fixtures.ts @@ -0,0 +1,80 @@ +import {App} from '../../../src/lib/types/fir' + +export const cedarApp: Partial = { + acm: false, + buildpack_provided_description: 'Ruby', + build_stack: { + id: '8d4e0353-2043-4eba-b172-116cd8d24dad', + name: 'heroku-22', + }, + created_at: '2024-07-27T19:54:27Z', + id: '8d76ca49-b876-41af-8ace-915d300804a6', + git_url: 'https://git.heroku.com/my-cedar-app.git', + maintenance: false, + name: 'my-cedar-app', + owner: { + email: 'developer@example.com', + id: 'd7760946-8565-43f7-b4c0-7abf654c3a3c', + }, + region: { + id: '9afb627b-d4de-483a-9589-ff664a19fe9b', + name: 'us', + }, + organization: null, + team: null, + space: null, + internal_routing: null, + updated_at: '2024-10-17T16:20:42Z', + web_url: 'https://my-cedar-app-a6b0f2f1519f.herokuapp.com/', + generation: 'cedar', + base_image_name: null, + buildpacks: null, + current_build_architecture: [ + 'amd64', + ], +} + +export const firApp: Partial = { + acm: false, + buildpack_provided_description: 'Cloud Native Buildpacks', + build_stack: { + id: 'e626530c-23db-4376-bd80-bcd298cb4ea6', + name: 'cnb', + }, + created_at: '2024-07-27T19:54:27Z', + id: '745c1486-ad78-4de7-8da7-20d4f8b15b71', + git_url: 'https://git.heroku.com/my-fir-app.git', + maintenance: false, + name: 'my-fir-app', + owner: { + email: 'developer@example.com', + id: 'd7760946-8565-43f7-b4c0-7abf654c3a3c', + }, + region: { + id: '9afb627b-d4de-483a-9589-ff664a19fe9b', + name: 'us', + }, + organization: null, + team: null, + space: null, + internal_routing: null, + updated_at: '2024-10-17T16:20:42Z', + web_url: 'https://my-fir-app-c07499750516.herokuapp.com/', + generation: 'fir', + base_image_name: 'docker.io/heroku/heroku:24', + buildpacks: [ + { + id: 'heroku/ruby', + version: '3.0.0', + homepage: 'https://github.com/heroku/buildpacks-ruby', + }, + { + id: 'heroku/procfile', + version: '3.1.2', + homepage: 'https://github.com/heroku/buildpacks-procfile', + }, + ], + current_build_architecture: [ + 'arm64', + ], +} diff --git a/packages/cli/test/unit/commands/logs.unit.test.ts b/packages/cli/test/unit/commands/logs.unit.test.ts new file mode 100644 index 0000000000..ea34d51851 --- /dev/null +++ b/packages/cli/test/unit/commands/logs.unit.test.ts @@ -0,0 +1,255 @@ +import {expect} from 'chai' +import * as proxyquire from 'proxyquire' +import * as sinon from 'sinon' +import runCommand, {GenericCmd} from '../../helpers/runCommand' +import {CLIError} from '@oclif/core/lib/errors' + +describe('logs', function () { + let logDisplayerStub: sinon.SinonStub + let Cmd: GenericCmd + + beforeEach(async function () { + logDisplayerStub = sinon.stub() + Cmd = proxyquire( + '../../../src/commands/logs', + { + '../lib/run/log-displayer': { + default: logDisplayerStub, + }, + }, + ).default + }) + + afterEach(function () { + sinon.restore() + }) + + context('without --num option', function () { + it('calls logDisplayer function with the default number of lines (100)', async function () { + await runCommand(Cmd, [ + '--app=my-app', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 100, + source: undefined, + tail: false, + type: undefined, + })).to.be.true + }) + }) + + context('with --num option', function () { + it('calls logDisplayer function with the specified number of lines', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--num=20', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 20, + source: undefined, + tail: false, + type: undefined, + })).to.be.true + }) + }) + + context('with --dyno option', function () { + it('calls logDisplayer function with dyno filter set', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--dyno=web.2', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: 'web.2', + lines: 100, + source: undefined, + tail: false, + type: undefined, + })).to.be.true + }) + }) + + context('with --type option', function () { + it('calls logDisplayer function with type filter set', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--type=web', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 100, + source: undefined, + tail: false, + type: 'web', + })).to.be.true + }) + }) + + context('with --ps option', function () { + it('calls logDisplayer function with type filter set', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--ps=web', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 100, + source: undefined, + tail: false, + type: 'web', + })).to.be.true + }) + }) + + context('with both --dyno and --ps options', function () { + it('shows an error and doesn’t call logDisplayer function', async function () { + try { + await runCommand(Cmd, [ + '--app=my-app', + '--dyno=web.1', + '--ps=worker', + ]) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message).to.include('--dyno=web.1 cannot also be provided when using --ps') + } + + expect(logDisplayerStub.notCalled).to.be.true + }) + }) + + context('with both --dyno and --type options', function () { + it('shows an error and doesn’t call logDisplayer function', async function () { + try { + await runCommand(Cmd, [ + '--app=my-app', + '--dyno=web.1', + '--type=worker', + ]) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message).to.include('--dyno=web.1 cannot also be provided when using --type') + } + + expect(logDisplayerStub.notCalled).to.be.true + }) + }) + + context('with both --ps and --type options', function () { + it('shows an error and doesn’t call logDisplayer function', async function () { + try { + await runCommand(Cmd, [ + '--app=my-app', + '--ps=web', + '--type=worker', + ]) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message).to.include('--ps=web cannot also be provided when using --type') + } + + expect(logDisplayerStub.notCalled).to.be.true + }) + }) + + context('with --source option', function () { + it('calls logDisplayer function with source filter set', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--source=heroku', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 100, + source: 'heroku', + tail: false, + type: undefined, + })).to.be.true + }) + }) + + context('with --tail flag', function () { + it('calls logDisplayer function with tail flag set', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--tail', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 100, + source: undefined, + tail: true, + type: undefined, + })).to.be.true + }) + }) + + context('with --force-colors flag', function () { + it('accepts the flag with no effect on the logDisplayer call arguments', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--force-colors', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 100, + source: undefined, + tail: false, + type: undefined, + })).to.be.true + }) + }) + + context('with --no-color flag', function () { + it('accepts the flag with no effect on the logDisplayer call arguments', async function () { + await runCommand(Cmd, [ + '--app=my-app', + '--no-color', + ]) + + expect(logDisplayerStub.calledWith(sinon.match.any, { + app: 'my-app', + dyno: undefined, + lines: 100, + source: undefined, + tail: false, + type: undefined, + })).to.be.true + }) + }) + + context('with both --force-colors and --no-color flag', function () { + it('shows an error and doesn’t call logDisplayer function', async function () { + try { + await runCommand(Cmd, [ + '--app=my-app', + '--force-colors', + '--no-color', + ]) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message).to.include('--force-colors=true cannot also be provided when using --no-color') + } + + expect(logDisplayerStub.notCalled).to.be.true + }) + }) +}) diff --git a/packages/cli/test/unit/commands/orgs/open.unit.test.ts b/packages/cli/test/unit/commands/orgs/open.unit.test.ts index 43f6cca0bf..e84b86efbf 100644 --- a/packages/cli/test/unit/commands/orgs/open.unit.test.ts +++ b/packages/cli/test/unit/commands/orgs/open.unit.test.ts @@ -1,4 +1,3 @@ -import {stdout, stderr} from 'stdout-stderr' import Cmd from '../../../../src/commands/orgs/open' import runCommand from '../../../helpers/runCommand' const sinon = require('sinon') @@ -8,7 +7,11 @@ import {teamInfo} from '../../../helpers/stubs/get' describe('heroku org:open', function () { let apiGetOrgInfo: nock.Scope - const urlOpenerStub = sinon.stub(Cmd, 'openUrl').callsFake(async (_: string) => {}) + let urlOpenerStub: sinon.SinonStub + + before(function () { + urlOpenerStub = sinon.stub(Cmd, 'openUrl') + }) beforeEach(function () { apiGetOrgInfo = teamInfo() @@ -19,15 +22,15 @@ describe('heroku org:open', function () { nock.cleanAll() }) - it('shows an error if team flag is not passed', function () { - runCommand(Cmd, []) + it('shows an error if team flag is not passed', async function () { + await runCommand(Cmd, []) .catch(error => { expect(error).to.be.instanceOf(Error) }) }) - it('opens org in dashboard via browser if team flag is passed', function () { - return runCommand(Cmd, [ + it('opens org in dashboard via browser if team flag is passed', async function () { + await runCommand(Cmd, [ '--team', 'myteam', ]) diff --git a/packages/cli/test/unit/lib/apps/generation.unit.test.ts b/packages/cli/test/unit/lib/apps/generation.unit.test.ts new file mode 100644 index 0000000000..bdcae0243d --- /dev/null +++ b/packages/cli/test/unit/lib/apps/generation.unit.test.ts @@ -0,0 +1,130 @@ +import {APIClient} from '@heroku-cli/command' +import {Config} from '@oclif/core' +import {expect} from 'chai' +import * as nock from 'nock' +import {isCedarApp, isFirApp} from '../../../../src/lib/apps/generation' +import {App} from '../../../../src/lib/types/fir' + +describe('app generation guard helper functions', function () { + let api: nock.Scope + let heroku: APIClient + + before(async function () { + const config = await Config.load() + heroku = new APIClient(config) + }) + + describe('isCedarApp with an app name (string) parameter', function () { + beforeEach(async function () { + api = nock('https://api.heroku.com', { + reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }) + }) + + afterEach(function () { + api.done() + }) + + context('when the API client parameter is missing', function () { + it('throws an error', async function () { + try { + await isCedarApp('my-app') + } catch (error: unknown) { + const {message} = error as Error + expect(message).to.equal('herokuApi parameter is required when passing an app name') + } + }) + }) + + context('when name targets a Cedar app', function () { + it('makes a request for app info and returns true', async function () { + api + .get('/apps/my-app') + .reply(200, {generation: 'cedar'}) + + expect(await isCedarApp('my-app', heroku)).to.be.true + }) + }) + + context('when name targets a Fir app', function () { + it('makes a request for app info and returns false', async function () { + api + .get('/apps/my-app') + .reply(200, {generation: 'fir'}) + + expect(await isCedarApp('my-app', heroku)).to.be.false + }) + }) + }) + + describe('isCedarApp with an App object parameter', function () { + context('when object is a Cedar app', function () { + it('returns true', async function () { + expect(await isCedarApp({generation: 'cedar'} as App, heroku)).to.be.true + }) + }) + + context('when object is a Fir app', function () { + it('returns false', async function () { + expect(await isCedarApp({generation: 'fir'} as App, heroku)).to.be.false + }) + }) + }) + + describe('isFirApp with an app name (string) parameter', function () { + beforeEach(async function () { + api = nock('https://api.heroku.com', { + reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }) + }) + + afterEach(function () { + api.done() + }) + + context('when the API client parameter is missing', function () { + it('throws an error', async function () { + try { + await isFirApp('my-app') + } catch (error: unknown) { + const {message} = error as Error + expect(message).to.equal('herokuApi parameter is required when passing an app name') + } + }) + }) + + context('when name targets a Cedar app', function () { + it('makes a request for app info and returns false', async function () { + api + .get('/apps/my-app') + .reply(200, {generation: 'cedar'}) + + expect(await isFirApp('my-app', heroku)).to.be.false + }) + }) + + context('when name targets a Fir app', function () { + it('makes a request for app info and returns true', async function () { + api + .get('/apps/my-app') + .reply(200, {generation: 'fir'}) + + expect(await isFirApp('my-app', heroku)).to.be.true + }) + }) + }) + + describe('isFirApp with an App object parameter', function () { + context('when object is a Cedar app', function () { + it('returns false', async function () { + expect(await isFirApp({generation: 'cedar'} as App, heroku)).to.be.false + }) + }) + + context('when object is a Fir app', function () { + it('returns true', async function () { + expect(await isFirApp({generation: 'fir'} as App, heroku)).to.be.true + }) + }) + }) +}) diff --git a/packages/cli/test/unit/lib/run/log-displayer.unit.test.ts b/packages/cli/test/unit/lib/run/log-displayer.unit.test.ts new file mode 100644 index 0000000000..48a8d95e0c --- /dev/null +++ b/packages/cli/test/unit/lib/run/log-displayer.unit.test.ts @@ -0,0 +1,408 @@ +/* eslint-disable max-nested-callbacks */ +import {APIClient} from '@heroku-cli/command' +import {Config} from '@oclif/core' +import {CLIError} from '@oclif/core/lib/errors' +import {expect} from 'chai' +import * as nock from 'nock' +import {stdout} from 'stdout-stderr' +import heredoc from 'tsheredoc' +import logDisplayer from '../../../../src/lib/run/log-displayer' +import {cedarApp, firApp} from '../../../fixtures/apps/fixtures' + +describe('logDisplayer', function () { + let api: nock.Scope + let heroku: APIClient + let env: NodeJS.ProcessEnv + + before(async function () { + env = process.env + env.HEROKU_LOGS_COLOR = '0' + const config = await Config.load() + heroku = new APIClient(config) + }) + + after(function () { + process.env = env + }) + + describe('log session creation', function () { + context('with a Cedar app', function () { + beforeEach(function () { + api = nock('https://api.heroku.com', { + reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }).get('/apps/my-cedar-app') + .reply(200, cedarApp) + }) + + afterEach(function () { + api.done() + }) + + context('with dyno and no type options', function () { + it('creates a log session with dyno parameter set to the option value', async function () { + api + .post('/apps/my-cedar-app/log-sessions', { + dyno: 'web.1', + lines: 20, + source: 'app', + tail: true, + }) + .reply(200, {logplex_url: 'https://logs.heroku.com/stream?tail=true&token=s3kr3t'}) + + const logServer = nock('https://logs.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/stream') + .query(true) + .reply(401) + + try { + await logDisplayer(heroku, { + app: 'my-cedar-app', + dyno: 'web.1', + lines: 20, + source: 'app', + tail: true, + }) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message).to.equal('Logs eventsource failed with: 401') + } + + logServer.done() + }) + }) + + context('with type and no dyno options', function () { + it('creates a log session with dyno parameter set to the type option value', async function () { + api + .post('/apps/my-cedar-app/log-sessions', { + dyno: 'web', + lines: 20, + source: 'app', + tail: true, + }) + .reply(200, {logplex_url: 'https://logs.heroku.com/stream?tail=true&token=s3kr3t'}) + + const logServer = nock('https://logs.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/stream') + .query(true) + .reply(401) + + try { + await logDisplayer(heroku, { + app: 'my-cedar-app', + lines: 20, + source: 'app', + tail: true, + type: 'web', + }) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message).to.equal('Logs eventsource failed with: 401') + } + + logServer.done() + }) + }) + + context('with both type and dyno options', function () { + it('creates a log session with dyno parameter set to the option value, ignoring type', async function () { + api + .post('/apps/my-cedar-app/log-sessions', { + dyno: 'web.1', + lines: 20, + source: 'app', + tail: true, + }) + .reply(200, {logplex_url: 'https://logs.heroku.com/stream?tail=true&token=s3kr3t'}) + + const logServer = nock('https://logs.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/stream') + .query(true) + .reply(401) + + try { + await logDisplayer(heroku, { + app: 'my-cedar-app', + dyno: 'web.1', + lines: 20, + source: 'app', + tail: true, + type: 'web', + }) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message).to.equal('Logs eventsource failed with: 401') + } + + logServer.done() + }) + }) + }) + + context('with a Fir app', function () { + beforeEach(function () { + api = nock('https://api.heroku.com', { + reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }).get('/apps/my-fir-app') + .reply(200, firApp) + }) + + afterEach(function () { + api.done() + }) + + context('with both lines and tail options present', function () { + it('creates a session with parameters set to option values, ignoring lines and tail options', async function () { + api + .post('/apps/my-fir-app/log-sessions', { + dyno: 'web-123-456', + source: 'app', + type: 'web', + }) + .reply(200, {logplex_url: 'https://telemetry.heroku.com/streams/hyacinth-vbx?token=s3kr3t'}) + .post('/apps/my-fir-app/log-sessions', { + dyno: 'web-123-456', + source: 'app', + type: 'web', + }) + .reply(500) + + const logServer = nock('https://telemetry.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/streams/hyacinth-vbx') + .query(true) + .reply(401) + + try { + await logDisplayer(heroku, { + app: 'my-fir-app', + dyno: 'web-123-456', + lines: 20, + source: 'app', + tail: true, + type: 'web', + }) + } catch (error: unknown) { + const {message} = error as CLIError + expect(message.trim()).to.equal('HTTP Error 500 for POST https://api.heroku.com/apps/my-fir-app/log-sessions') + } + + logServer.done() + }) + }) + }) + }) + + context('with a Cedar app, with tail option disabled', function () { + beforeEach(function () { + api = nock('https://api.heroku.com', { + reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }).get('/apps/my-cedar-app') + .reply(200, cedarApp) + .post('/apps/my-cedar-app/log-sessions', {tail: false}) + .reply(200, {logplex_url: 'https://logs.heroku.com/stream?tail=false&token=s3kr3t'}) + }) + + afterEach(function () { + api.done() + }) + + context('when the log server returns an error', function () { + it('shows the error and exits', async function () { + const logServer = nock('https://logs.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/stream') + .query(true) + .reply(401) + + try { + await logDisplayer(heroku, { + app: 'my-cedar-app', + tail: false, + }) + } catch (error: unknown) { + const {message, oclif} = error as CLIError + expect(message).to.equal('Logs eventsource failed with: 401') + expect(oclif.exit).to.eq(1) + } + + logServer.done() + }) + }) + + context('when the log server responds with a stream of log lines', function () { + it('displays log lines and exits', async function () { + const logServer = nock('https://logs.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/stream') + .query(true) + .reply(200, heredoc` + id: 1002 + data: 2024-10-17T22:23:22.209776+00:00 app[web.1]: log line 1\n\n\n + id: 1003 + data: 2024-10-17T22:23:23.032789+00:00 app[web.1]: log line 2\n\n\n + `) + + stdout.start() + await logDisplayer(heroku, { + app: 'my-cedar-app', + tail: false, + }) + stdout.stop() + + logServer.done() + expect(stdout.output).to.eq(heredoc` + 2024-10-17T22:23:22.209776+00:00 app[web.1]: log line 1 + 2024-10-17T22:23:23.032789+00:00 app[web.1]: log line 2 + `) + }) + }) + }) + + context('with a Cedar app, with tail option enabled', function () { + beforeEach(function () { + api = nock('https://api.heroku.com', { + reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }).get('/apps/my-cedar-app') + .reply(200, cedarApp) + .post('/apps/my-cedar-app/log-sessions', {tail: true}) + .reply(200, {logplex_url: 'https://logs.heroku.com/stream?tail=true&token=s3kr3t'}) + }) + + afterEach(function () { + api.done() + }) + + context('when the log server returns an error', function () { + it('shows the error and exits', async function () { + const logServer = nock('https://logs.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/stream') + .query(true) + .reply(401) + + try { + await logDisplayer(heroku, { + app: 'my-cedar-app', + tail: true, + }) + } catch (error: unknown) { + const {message, oclif} = error as CLIError + expect(message).to.equal('Logs eventsource failed with: 401') + expect(oclif.exit).to.eq(1) + } + + logServer.done() + }) + }) + + context('when the log server responds with a stream of log lines and then timeouts', function () { + it('displays log lines and exits showing a timeout error', async function () { + const logServer = nock('https://logs.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/stream') + .query(true) + .reply(200, heredoc` + id: 1002 + data: 2024-10-17T22:23:22.209776+00:00 app[web.1]: log line 1\n\n\n + id: 1003 + data: 2024-10-17T22:23:23.032789+00:00 app[web.1]: log line 2\n\n\n + event: error + data: {"status": 404, "message": null}\n\n\n + `) + .get('/stream') + .query(true) + .reply(404) + + try { + stdout.start() + await logDisplayer(heroku, { + app: 'my-cedar-app', + tail: true, + }) + } catch (error: unknown) { + stdout.stop() + const {message, oclif} = error as CLIError + expect(message).to.equal('Log stream timed out. Please try again.') + expect(oclif.exit).to.eq(1) + } + + logServer.done() + expect(stdout.output).to.eq(heredoc` + 2024-10-17T22:23:22.209776+00:00 app[web.1]: log line 1 + 2024-10-17T22:23:23.032789+00:00 app[web.1]: log line 2 + `) + }) + }) + }) + + context('with a Fir app', function () { + beforeEach(function () { + api = nock('https://api.heroku.com', { + reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}, + }).get('/apps/my-fir-app') + .reply(200, firApp) + .post('/apps/my-fir-app/log-sessions') + .reply(200, {logplex_url: 'https://telemetry.heroku.com/streams/hyacinth-vbx?token=s3kr3t'}) + .post('/apps/my-fir-app/log-sessions') + .reply(200, {logplex_url: 'https://telemetry.heroku.com/streams/hyacinth-vbx?token=0th3r-s3kr3t'}) + .post('/apps/my-fir-app/log-sessions') + .reply(500) + }) + + afterEach(function () { + api.done() + }) + + it('displays logs and recreates log sessions on timeout', async function () { + const logSession1 = nock('https://telemetry.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/streams/hyacinth-vbx') + .query({token: 's3kr3t'}) + .reply(200, heredoc` + id: 1002 + data: 2024-10-17T22:23:22.209776+00:00 app[web.1]: log line 1\n\n\n + id: 1003 + data: 2024-10-17T22:23:23.032789+00:00 app[web.1]: log line 2\n\n\n + `) + + const logSession2 = nock('https://telemetry.heroku.com', { + reqheaders: {Accept: 'text/event-stream'}, + }).get('/streams/hyacinth-vbx') + .query({token: '0th3r-s3kr3t'}) + .reply(200, heredoc` + id: 1004 + data: 2024-10-17T22:23:24.326810+00:00 app[web.1]: log line 3\n\n\n + `) + + try { + stdout.start() + await logDisplayer(heroku, { + app: 'my-fir-app', + tail: false, + }) + } catch (error: unknown) { + stdout.stop() + const {message} = error as Error + expect(message.trim()).to.equal('HTTP Error 500 for POST https://api.heroku.com/apps/my-fir-app/log-sessions') + } + + // We would like to test for the output here too, but because we're nuking 'setTimeout' in the test initialization + // the EventSource objects get closed and abort the initiated requests before emitting the events that are finally + // sent to stdout. So, we only test that the requests are indeed initiated as expected. Provided setTimeout is + // given enough time, we would expect the events to be emitted and the output to be there. + // + // expect(stdout.output).to.eq(heredoc` + // 2024-10-17T22:23:22.209776+00:00 app[web.1]: log line 1 + // 2024-10-17T22:23:23.032789+00:00 app[web.1]: log line 2 + // 2024-10-17T22:23:24.326810+00:00 app[web.1]: log line 3 + // `) + + logSession1.done() + logSession2.done() + }) + }) +}) From 65c02fb4293a9fe208d7c9a4b84cf843d0462087 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 22 Oct 2024 13:19:17 -0700 Subject: [PATCH 25/67] add telemetry:update (#3050) * Add telemetry:update, change capabilities to signals * Add test for telemetry:update, fix grpc spelling, display drain after update * Clarify description of what gets changed * Add examples, switch signal to signals --- cspell-dictionary.txt | 1 - packages/cli/src/commands/telemetry/add.ts | 24 ++--- packages/cli/src/commands/telemetry/index.ts | 4 +- packages/cli/src/commands/telemetry/info.ts | 22 ++--- packages/cli/src/commands/telemetry/update.ts | 69 ++++++++++++++ packages/cli/src/lib/telemetry/util.ts | 26 ++++++ packages/cli/src/lib/types/telemetry.d.ts | 7 +- .../cli/test/fixtures/telemetry/fixtures.ts | 6 +- .../unit/commands/telemetry/add.unit.test.ts | 8 +- .../unit/commands/telemetry/info.unit.test.ts | 8 +- .../commands/telemetry/update.unit.test.ts | 92 +++++++++++++++++++ 11 files changed, 218 insertions(+), 49 deletions(-) create mode 100644 packages/cli/src/commands/telemetry/update.ts create mode 100644 packages/cli/src/lib/telemetry/util.ts create mode 100644 packages/cli/test/unit/commands/telemetry/update.unit.test.ts diff --git a/cspell-dictionary.txt b/cspell-dictionary.txt index 441179fe4b..f7b4967b0e 100644 --- a/cspell-dictionary.txt +++ b/cspell-dictionary.txt @@ -98,7 +98,6 @@ Gdvb getreqs Ghpcy githuborg -gprc hamurai herokai herokuapp diff --git a/packages/cli/src/commands/telemetry/add.ts b/packages/cli/src/commands/telemetry/add.ts index cb1157616a..aa2ca9f9fb 100644 --- a/packages/cli/src/commands/telemetry/add.ts +++ b/packages/cli/src/commands/telemetry/add.ts @@ -2,7 +2,7 @@ import {Command, flags as Flags} from '@heroku-cli/command' import {Args, ux} from '@oclif/core' import {TelemetryDrain} from '../../lib/types/telemetry' import heredoc from 'tsheredoc' - +import {validateAndFormatSignals} from '../../lib/telemetry/util' export default class Add extends Command { static description = 'Add and configure a new telemetry drain. Defaults to collecting all telemetry unless otherwise specified.' @@ -10,9 +10,9 @@ export default class Add extends Command { app: Flags.app({exactlyOne: ['app', 'remote', 'space'], description: 'app to add a drain to'}), remote: Flags.remote({description: 'git remote of app to add a drain to'}), space: Flags.string({char: 's', description: 'space to add a drain to'}), - signal: Flags.string({default: 'all', description: 'comma-delimited list of signals to collect (traces, metrics, logs). Use "all" to collect all signals.'}), + signals: Flags.string({default: 'all', description: 'comma-delimited list of signals to collect (traces, metrics, logs). Use "all" to collect all signals.'}), endpoint: Flags.string({required: true, description: 'drain url'}), - transport: Flags.string({required: true, options: ['http', 'gprc'], description: 'transport protocol for the drain'}), + transport: Flags.string({required: true, options: ['http', 'grpc'], description: 'transport protocol for the drain'}), } static args = { @@ -21,21 +21,9 @@ export default class Add extends Command { static example = heredoc(` Add a telemetry drain to an app to collect logs and traces: - $ heroku telemetry:add --signal logs,traces --endpoint https://my-endpoint.com --transport http 'x-drain-example-team: API_KEY x-drain-example-dataset: METRICS_DATASET' + $ heroku telemetry:add --signals logs,traces --endpoint https://my-endpoint.com --transport http 'x-drain-example-team: API_KEY x-drain-example-dataset: METRICS_DATASET' `) - private validateAndFormatSignal = function (signalInput: string | undefined): string[] { - const signalOptions = ['traces', 'metrics', 'logs'] - if (!signalInput || signalInput === 'all') return signalOptions - const signalArray = signalInput.split(',') - signalArray.forEach(signal => { - if (!signalOptions.includes(signal)) { - ux.error(`Invalid signal option: ${signalArray}. Run heroku telemetry:add --help to see signal options.`, {exit: 1}) - } - }) - return signalArray - } - private getTypeAndName = function (app: string | undefined, space: string | undefined) { if (app) { return {type: 'app', name: app} @@ -46,7 +34,7 @@ export default class Add extends Command { public async run(): Promise { const {flags, args} = await this.parse(Add) - const {app, space, signal, endpoint, transport} = flags + const {app, space, signals, endpoint, transport} = flags const {headers} = args const typeAndName = this.getTypeAndName(app, space) const drainConfig = { @@ -54,7 +42,7 @@ export default class Add extends Command { type: typeAndName.type, id: typeAndName.name, }, - signals: this.validateAndFormatSignal(signal), + signals: validateAndFormatSignals(signals), exporter: { endpoint, type: `otlp${transport}`, diff --git a/packages/cli/src/commands/telemetry/index.ts b/packages/cli/src/commands/telemetry/index.ts index 69e806d680..bde413b204 100644 --- a/packages/cli/src/commands/telemetry/index.ts +++ b/packages/cli/src/commands/telemetry/index.ts @@ -10,6 +10,8 @@ export default class Index extends Command { app: Flags.app({description: 'filter by app name'}), }; + static example = '$ heroku telemetry' + public async run(): Promise { const {flags} = await this.parse(Index) const {app, space} = flags @@ -37,7 +39,7 @@ export default class Index extends Command { telemetryDrains, { ID: {get: telemetryDrain => telemetryDrain.id}, - Signals: {get: telemetryDrain => telemetryDrain.capabilities}, + Signals: {get: telemetryDrain => telemetryDrain.signals}, Endpoint: {get: telemetryDrain => telemetryDrain.exporter.endpoint}, [ownerType]: {get: telemetryDrain => telemetryDrain.owner.name}, }, diff --git a/packages/cli/src/commands/telemetry/info.ts b/packages/cli/src/commands/telemetry/info.ts index b92374cc98..a5f7f58cdc 100644 --- a/packages/cli/src/commands/telemetry/info.ts +++ b/packages/cli/src/commands/telemetry/info.ts @@ -1,13 +1,15 @@ import {Command} from '@heroku-cli/command' -import {Args, ux} from '@oclif/core' +import {Args} from '@oclif/core' import {TelemetryDrain} from '../../lib/types/telemetry' - +import {displayTelemetryDrain} from '../../lib/telemetry/util' export default class Info extends Command { static topic = 'telemetry' static description = 'show a telemetry drain\'s info' static args = { telemetry_drain_id: Args.string({required: true, description: 'ID of the drain to show info for'}), - }; + } + + static example = '$ heroku telemetry:info 022e2e2e-2e2e-2e2e-2e2e-2e2e2e2e2e2e' public async run(): Promise { const {args} = await this.parse(Info) @@ -18,18 +20,6 @@ export default class Info extends Command { Accept: 'application/vnd.heroku+json; version=3.sdk', }, }) - this.display(telemetryDrain) - } - - protected display(telemetryDrain: TelemetryDrain) { - ux.styledHeader(telemetryDrain.id) - const drainType = telemetryDrain.owner.type.charAt(0).toUpperCase() + telemetryDrain.owner.type.slice(1) - ux.styledObject({ - [drainType]: telemetryDrain.owner.name, - Signals: telemetryDrain.capabilities.join(', '), - Endpoint: telemetryDrain.exporter.endpoint, - Kind: telemetryDrain.exporter.type, - Headers: telemetryDrain.exporter.headers, - }, ['App', 'Space', 'Signals', 'Endpoint', 'Kind', 'Headers']) + displayTelemetryDrain(telemetryDrain) } } diff --git a/packages/cli/src/commands/telemetry/update.ts b/packages/cli/src/commands/telemetry/update.ts new file mode 100644 index 0000000000..76ca4f4648 --- /dev/null +++ b/packages/cli/src/commands/telemetry/update.ts @@ -0,0 +1,69 @@ +import {flags as Flags, Command} from '@heroku-cli/command' +import {Args, ux} from '@oclif/core' +import {TelemetryDrain, TelemetryDrainWithOptionalKeys, TelemetryExporterWithOptionalKeys} from '../../lib/types/telemetry' +import heredoc from 'tsheredoc' +import {displayTelemetryDrain, validateAndFormatSignals} from '../../lib/telemetry/util' + +export default class Update extends Command { + static topic = 'telemetry' + static description = 'updates a telemetry drain with provided attributes (attributes not provided remain unchanged)' + static args = { + telemetry_drain_id: Args.string({required: true, description: 'ID of the drain to update'}), + headers: Args.string({description: 'custom headers to configure the drain in json format'}), + } + + static flags = { + signals: Flags.string({description: 'comma-delimited list of signals to collect (traces, metrics, logs). Use "all" to collect all signals.'}), + endpoint: Flags.string({description: 'drain url'}), + transport: Flags.string({options: ['http', 'grpc'], description: 'transport protocol for the drain'}), + } + + static example = heredoc(` + $ heroku telemetry:update acde070d-8c4c-4f0d-9d8a-162843c10333 --signals logs,metrics --endpoint https://my-new-endpoint.com + `) + + public async run(): Promise { + const {args, flags} = await this.parse(Update) + const {telemetry_drain_id, headers} = args + const {signals, endpoint, transport} = flags + if (!(headers || signals || endpoint || transport)) { + ux.error(heredoc(` + Requires either --signals, --endpoint, --transport or HEADERS to be provided. + See more help with --help + `)) + } + + const drainConfig: TelemetryDrainWithOptionalKeys = {} + if (signals) { + drainConfig.signals = validateAndFormatSignals(signals) + } + + if (headers || endpoint || transport) { + const exporter: TelemetryExporterWithOptionalKeys = {} + if (headers) { + exporter.headers = JSON.parse(headers) + } + + if (endpoint) { + exporter.endpoint = endpoint + } + + if (transport) { + exporter.type = `otlp${transport}` + } + + drainConfig.exporter = exporter + } + + ux.action.start(`Updating telemetry drain ${telemetry_drain_id}`) + const {body: telemetryDrain} = await this.heroku.patch(`/telemetry-drains/${telemetry_drain_id}`, { + headers: { + Accept: 'application/vnd.heroku+json; version=3.sdk', + }, + body: drainConfig, + }) + ux.action.stop() + + displayTelemetryDrain(telemetryDrain) + } +} diff --git a/packages/cli/src/lib/telemetry/util.ts b/packages/cli/src/lib/telemetry/util.ts new file mode 100644 index 0000000000..ad8d39bc51 --- /dev/null +++ b/packages/cli/src/lib/telemetry/util.ts @@ -0,0 +1,26 @@ +import {ux} from '@oclif/core' +import {TelemetryDrain} from '../types/telemetry' + +export function validateAndFormatSignals(signalInput: string | undefined): string[] { + const signalOptions = ['traces', 'metrics', 'logs'] + if (!signalInput || signalInput === 'all') return signalOptions + const signalArray = signalInput.split(',') + signalArray.forEach(signal => { + if (!signalOptions.includes(signal)) { + ux.error(`Invalid signal option: ${signalArray}. Run heroku telemetry:add --help to see signal options.`, {exit: 1}) + } + }) + return signalArray +} + +export function displayTelemetryDrain(telemetryDrain: TelemetryDrain) { + ux.styledHeader(telemetryDrain.id) + const drainType = telemetryDrain.owner.type.charAt(0).toUpperCase() + telemetryDrain.owner.type.slice(1) + ux.styledObject({ + [drainType]: telemetryDrain.owner.name, + Signals: telemetryDrain.signals.join(', '), + Endpoint: telemetryDrain.exporter.endpoint, + Kind: telemetryDrain.exporter.type, + Headers: telemetryDrain.exporter.headers, + }, ['App', 'Space', 'Signals', 'Endpoint', 'Kind', 'Headers']) +} diff --git a/packages/cli/src/lib/types/telemetry.d.ts b/packages/cli/src/lib/types/telemetry.d.ts index 4d77fa64f4..6c10124c07 100644 --- a/packages/cli/src/lib/types/telemetry.d.ts +++ b/packages/cli/src/lib/types/telemetry.d.ts @@ -2,7 +2,7 @@ export type TelemetryDrains = TelemetryDrain[] export type TelemetryDrain = { id: string; - capabilities: string[]; + signals: string[]; owner: TelemetryDrainOwner; exporter: TelemetryExporter } @@ -14,7 +14,10 @@ type TelemetryDrainOwner = { } type TelemetryExporter = { - type: 'otlphttp' | 'otlpgrpc'; + type: string; endpoint: string; headers: unknown; } + +type TelemetryDrainWithOptionalKeys = Partial +type TelemetryExporterWithOptionalKeys = Partial diff --git a/packages/cli/test/fixtures/telemetry/fixtures.ts b/packages/cli/test/fixtures/telemetry/fixtures.ts index 28fc955c0a..3d6f5ab2bd 100644 --- a/packages/cli/test/fixtures/telemetry/fixtures.ts +++ b/packages/cli/test/fixtures/telemetry/fixtures.ts @@ -3,7 +3,7 @@ import {TelemetryDrain} from '../../../src/lib/types/telemetry' export const spaceTelemetryDrain1: TelemetryDrain = { id: '44444321-5717-4562-b3fc-2c963f66afa6', owner: {id: '12345678-5717-4562-b3fc-2c963f66afa6', type: 'space', name: 'myspace'}, - capabilities: ['traces', 'metrics', 'logs'], + signals: ['traces', 'metrics', 'logs'], exporter: { type: 'otlphttp', endpoint: 'https://api.honeycomb.io/', @@ -17,7 +17,7 @@ export const spaceTelemetryDrain1: TelemetryDrain = { export const appTelemetryDrain1: TelemetryDrain = { id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', owner: {id: '87654321-5717-4562-b3fc-2c963f66afa6', type: 'app', name: 'myapp'}, - capabilities: ['traces', 'metrics'], + signals: ['traces', 'metrics'], exporter: { type: 'otlphttp', endpoint: 'https://api.honeycomb.io/', @@ -31,7 +31,7 @@ export const appTelemetryDrain1: TelemetryDrain = { export const appTelemetryDrain2: TelemetryDrain = { id: '55555f64-5717-4562-b3fc-2c963f66afa6', owner: {id: '87654321-5717-4562-b3fc-2c963f66afa6', type: 'app', name: 'myapp'}, - capabilities: ['logs'], + signals: ['logs'], exporter: { type: 'otlphttp', endpoint: 'https://api.papertrail.com/', diff --git a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts index 78eb7b6eec..0feb6365a3 100644 --- a/packages/cli/test/unit/commands/telemetry/add.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/add.unit.test.ts @@ -50,7 +50,7 @@ describe('telemetry:add', function () { '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--app', appId, - '--signal', + '--signals', 'logs', '--endpoint', testEndpoint, @@ -70,7 +70,7 @@ describe('telemetry:add', function () { '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--space', spaceId, - '--signal', + '--signals', 'logs', '--endpoint', testEndpoint, @@ -87,7 +87,7 @@ describe('telemetry:add', function () { '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--space', spaceId, - '--signal', + '--signals', 'logs,foo', '--endpoint', testEndpoint, @@ -106,7 +106,7 @@ describe('telemetry:add', function () { '{"x-honeycomb-team": "your-api-key", "x-honeycomb-dataset": "your-dataset"}', '--space', spaceId, - '--signal', + '--signals', 'logs,all', '--endpoint', testEndpoint, diff --git a/packages/cli/test/unit/commands/telemetry/info.unit.test.ts b/packages/cli/test/unit/commands/telemetry/info.unit.test.ts index d158314a67..dfdda82cbc 100644 --- a/packages/cli/test/unit/commands/telemetry/info.unit.test.ts +++ b/packages/cli/test/unit/commands/telemetry/info.unit.test.ts @@ -16,7 +16,7 @@ describe('telemetry:info', function () { spaceTelemetryDrain = { id: '44444321-5717-4562-b3fc-2c963f66afa6', owner: {id: spaceId, type: 'space', name: 'myspace'}, - capabilities: ['traces', 'metrics', 'logs'], + signals: ['traces', 'metrics', 'logs'], exporter: { type: 'otlphttp', endpoint: 'https://api.honeycomb.io/', @@ -29,7 +29,7 @@ describe('telemetry:info', function () { appTelemetryDrain = { id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', owner: {id: appId, type: 'app', name: 'myapp'}, - capabilities: ['traces', 'metrics'], + signals: ['traces', 'metrics'], exporter: { type: 'otlphttp', endpoint: 'https://api.honeycomb.io/', @@ -56,7 +56,7 @@ describe('telemetry:info', function () { expectOutput(stdout.output, heredoc(` === ${spaceTelemetryDrain.id} Space: ${spaceTelemetryDrain.owner.name} - Signals: ${spaceTelemetryDrain.capabilities.join(', ')} + Signals: ${spaceTelemetryDrain.signals.join(', ')} Endpoint: ${spaceTelemetryDrain.exporter.endpoint} Kind: ${spaceTelemetryDrain.exporter.type} Headers: x-honeycomb-team: 'your-api-key', x-honeycomb-dataset: 'your-dataset' @@ -74,7 +74,7 @@ describe('telemetry:info', function () { expectOutput(stdout.output, heredoc(` === ${appTelemetryDrain.id} App: ${appTelemetryDrain.owner.name} - Signals: ${appTelemetryDrain.capabilities.join(', ')} + Signals: ${appTelemetryDrain.signals.join(', ')} Endpoint: ${appTelemetryDrain.exporter.endpoint} Kind: ${appTelemetryDrain.exporter.type} Headers: x-honeycomb-team: 'your-api-key', x-honeycomb-dataset: 'your-dataset' diff --git a/packages/cli/test/unit/commands/telemetry/update.unit.test.ts b/packages/cli/test/unit/commands/telemetry/update.unit.test.ts new file mode 100644 index 0000000000..f39e1f3b62 --- /dev/null +++ b/packages/cli/test/unit/commands/telemetry/update.unit.test.ts @@ -0,0 +1,92 @@ +import {stderr, stdout} from 'stdout-stderr' +import Cmd from '../../../../src/commands/telemetry/update' +import runCommand from '../../../helpers/runCommand' +import * as nock from 'nock' +import expectOutput from '../../../helpers/utils/expectOutput' +import heredoc from 'tsheredoc' +import {expect} from 'chai' +import {appTelemetryDrain1} from '../../../fixtures/telemetry/fixtures' + +describe('telemetry:update', function () { + afterEach(function () { + return nock.cleanAll() + }) + + it('updates a telemetry drain with one field', async function () { + const updatedAppTelemetryDrain = {...appTelemetryDrain1, signals: ['logs']} + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .patch(`/telemetry-drains/${appTelemetryDrain1.id}`, {signals: ['logs']}) + .reply(200, updatedAppTelemetryDrain) + + await runCommand(Cmd, [ + appTelemetryDrain1.id, + '--signals', + 'logs', + ]) + expectOutput(stderr.output, heredoc(` + Updating telemetry drain ${appTelemetryDrain1.id}... + Updating telemetry drain ${appTelemetryDrain1.id}... done + `)) + expectOutput(stdout.output, heredoc(` + === ${updatedAppTelemetryDrain.id} + App: ${updatedAppTelemetryDrain.owner.name} + Signals: ${updatedAppTelemetryDrain.signals.join(', ')} + Endpoint: ${updatedAppTelemetryDrain.exporter.endpoint} + Kind: ${updatedAppTelemetryDrain.exporter.type} + Headers: x-honeycomb-team: 'your-api-key', x-honeycomb-dataset: 'your-dataset' + `)) + }) + + it('updates a telemetry drain with multiple fields', async function () { + const updatedAppTelemetryDrain = { + ...appTelemetryDrain1, + signals: ['logs'], + exporter: { + endpoint: 'https://api-new.honeycomb.io/', + type: 'otlpgrpc', + headers: { + 'x-honeycomb-team': 'your-api-key', + 'x-honeycomb-dataset': 'your-dataset', + }, + }, + } + nock('https://api.heroku.com', {reqheaders: {Accept: 'application/vnd.heroku+json; version=3.sdk'}}) + .patch(`/telemetry-drains/${appTelemetryDrain1.id}`, { + signals: ['logs'], + exporter: { + endpoint: 'https://api-new.honeycomb.io/', + type: 'otlpgrpc', + }, + }) + .reply(200, updatedAppTelemetryDrain) + + await runCommand(Cmd, [ + appTelemetryDrain1.id, + '--signals', + 'logs', + '--endpoint', + 'https://api-new.honeycomb.io/', + '--transport', + 'grpc', + ]) + expectOutput(stderr.output, heredoc(` + Updating telemetry drain ${appTelemetryDrain1.id}... + Updating telemetry drain ${appTelemetryDrain1.id}... done + `)) + expectOutput(stdout.output, heredoc(` + === ${updatedAppTelemetryDrain.id} + App: ${updatedAppTelemetryDrain.owner.name} + Signals: ${updatedAppTelemetryDrain.signals.join(', ')} + Endpoint: ${updatedAppTelemetryDrain.exporter.endpoint} + Kind: ${updatedAppTelemetryDrain.exporter.type} + Headers: x-honeycomb-team: 'your-api-key', x-honeycomb-dataset: 'your-dataset' + `)) + }) + + it('requires an updated attribute to be provided', async function () { + const errorMessage = 'Requires either --signals, --endpoint, --transport or HEADERS to be provided.' + await runCommand(Cmd, [appTelemetryDrain1.id]).catch(error => { + expect(error.message).to.contain(errorMessage) + }) + }) +}) From 0c489e559070678dff8057432917e8bffa0462eb Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 25 Oct 2024 10:02:11 -0700 Subject: [PATCH 26/67] Create 10.0 alpha release (#3058) --- CHANGELOG.md | 19 ++++++ docs/access.md | 8 +-- docs/addons.md | 32 ++++----- docs/apps.md | 34 +++++----- docs/auth.md | 12 ++-- docs/authorizations.md | 12 ++-- docs/autocomplete.md | 2 +- docs/buildpacks.md | 16 ++--- docs/certs.md | 20 +++--- docs/ci.md | 24 +++---- docs/clients.md | 12 ++-- docs/config.md | 10 +-- docs/container.md | 16 ++--- docs/domains.md | 14 ++-- docs/drains.md | 6 +- docs/features.md | 8 +-- docs/git.md | 4 +- docs/help.md | 4 +- docs/keys.md | 8 +-- docs/labs.md | 8 +-- docs/local.md | 6 +- docs/logs.md | 19 ++++-- docs/maintenance.md | 6 +- docs/members.md | 8 +-- docs/notifications.md | 2 +- docs/orgs.md | 4 +- docs/pg.md | 120 ++++++++++++++++----------------- docs/pipelines.md | 28 ++++---- docs/plugins.md | 12 ++-- docs/ps.md | 16 ++--- docs/redis.md | 22 +++---- docs/regions.md | 2 +- docs/releases.md | 8 +-- docs/reviewapps.md | 4 +- docs/run.md | 4 +- docs/sessions.md | 4 +- docs/spaces.md | 61 +++++++++-------- docs/status.md | 2 +- docs/teams.md | 2 +- docs/telemetry.md | 135 ++++++++++++++++++++++++++++++++++++++ docs/webhooks.md | 18 ++--- lerna.json | 2 +- packages/cli/CHANGELOG.md | 19 ++++++ packages/cli/README.md | 1 + packages/cli/package.json | 2 +- 45 files changed, 479 insertions(+), 297 deletions(-) create mode 100644 docs/telemetry.md diff --git a/CHANGELOG.md b/CHANGELOG.md index cfedc6c425..7066b58de7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,25 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [10.0.0-alpha.0](https://github.com/heroku/cli/compare/v9.3.2...v10.0.0-alpha.0) (2024-10-24) + + +### Features + +* add basic flags, logic, and tests for telemetry:add ([adeb986](https://github.com/heroku/cli/commit/adeb98613886789a6b818e80f126da66ec43fbf8)) +* add endpoint and transport flags to telemetry:add ([a32765d](https://github.com/heroku/cli/commit/a32765d5481aa0a2d15eb2ac6aa72a08381253e8)) +* add generation column to spaces command ([#3029](https://github.com/heroku/cli/issues/3029)) ([79c17fa](https://github.com/heroku/cli/commit/79c17fa06fac52ac1f790e7851928233ff4ea937)) +* add generation column to spaces renderInfo command ([bec18a8](https://github.com/heroku/cli/commit/bec18a811df89a36420b2a83e46d83f16e1e715e)) +* Add telemetry index command to list telemetry drains ([#3031](https://github.com/heroku/cli/issues/3031)) ([e51affb](https://github.com/heroku/cli/commit/e51affbcca6ec6f5e7f628397f294126b0c4f03b)) +* **cli:** Update node version to 20 ([#2989](https://github.com/heroku/cli/issues/2989)) ([fece1bc](https://github.com/heroku/cli/commit/fece1bc105d46f3b3969bd524f74854112b17b99)) +* **cli:** Updates to `logs` command for Fir ([#3046](https://github.com/heroku/cli/issues/3046)) ([3f7d253](https://github.com/heroku/cli/commit/3f7d253ab525d79a12bf484fabcadc53e5b1fb29)) +* separate calls for app and space drains and update tests ([2005912](https://github.com/heroku/cli/commit/2005912516d69e59d9469a7578f7ab5b55f44090)) +* update spaces:info and spaces:wait to use fir API ([a087692](https://github.com/heroku/cli/commit/a087692894595522384773737f3a5d958e346ac5)) + + + + + ## [9.3.2](https://github.com/heroku/cli/compare/v9.3.1...v9.3.2) (2024-10-23) **Note:** Version bump only for package heroku diff --git a/docs/access.md b/docs/access.md index 1248afc062..2a43dd8f80 100644 --- a/docs/access.md +++ b/docs/access.md @@ -25,7 +25,7 @@ DESCRIPTION list who has access to an app ``` -_See code: [src/commands/access/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/access/index.ts)_ +_See code: [src/commands/access/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/access/index.ts)_ ## `heroku access:add EMAIL` @@ -49,7 +49,7 @@ EXAMPLES $ heroku access:add user@email.com --app APP --permissions deploy,manage,operate # permissions must be comma separated ``` -_See code: [src/commands/access/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/access/add.ts)_ +_See code: [src/commands/access/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/access/add.ts)_ ## `heroku access:remove` @@ -70,7 +70,7 @@ EXAMPLES $ heroku access:remove user@email.com --app APP ``` -_See code: [src/commands/access/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/access/remove.ts)_ +_See code: [src/commands/access/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/access/remove.ts)_ ## `heroku access:update EMAIL` @@ -89,4 +89,4 @@ DESCRIPTION update existing collaborators on an team app ``` -_See code: [src/commands/access/update.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/access/update.ts)_ +_See code: [src/commands/access/update.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/access/update.ts)_ diff --git a/docs/addons.md b/docs/addons.md index e63ca2b4c2..2d6563b59c 100644 --- a/docs/addons.md +++ b/docs/addons.md @@ -47,7 +47,7 @@ EXAMPLES $ heroku addons --app acme-inc-www ``` -_See code: [src/commands/addons/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/index.ts)_ +_See code: [src/commands/addons/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/index.ts)_ ## `heroku addons:attach ADDON_NAME` @@ -69,7 +69,7 @@ DESCRIPTION attach an existing add-on resource to an app ``` -_See code: [src/commands/addons/attach.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/attach.ts)_ +_See code: [src/commands/addons/attach.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/attach.ts)_ ## `heroku addons:create SERVICE:PLAN` @@ -77,8 +77,8 @@ Create a new add-on resource. ``` USAGE - $ heroku addons:create SERVICE:PLAN -a [--name ] [--as ] [--confirm ] [--wait] [-r - ] + $ heroku addons:create SERVICE:PLAN... -a [--name ] [--as ] [--confirm ] [--wait] + [-r ] FLAGS -a, --app= (required) app to run command against @@ -101,7 +101,7 @@ EXAMPLES $heroku addons:create heroku-postgresql:standard-0 --app my-app -- --fork DATABASE ``` -_See code: [src/commands/addons/create.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/create.ts)_ +_See code: [src/commands/addons/create.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/create.ts)_ ## `heroku addons:destroy ADDONNAME` @@ -109,7 +109,7 @@ permanently destroy an add-on resource ``` USAGE - $ heroku addons:destroy ADDONNAME [-f] [-c ] [--wait] [-a ] [-r ] + $ heroku addons:destroy ADDONNAME... [-f] [-c ] [--wait] [-a ] [-r ] FLAGS -a, --app= app to run command against @@ -125,7 +125,7 @@ EXAMPLES addons:destroy [ADDON]... [flags] ``` -_See code: [src/commands/addons/destroy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/destroy.ts)_ +_See code: [src/commands/addons/destroy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/destroy.ts)_ ## `heroku addons:detach ATTACHMENT_NAME` @@ -143,7 +143,7 @@ DESCRIPTION detach an existing add-on resource from an app ``` -_See code: [src/commands/addons/detach.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/detach.ts)_ +_See code: [src/commands/addons/detach.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/detach.ts)_ ## `heroku addons:docs ADDON` @@ -162,7 +162,7 @@ DESCRIPTION open an add-on's Dev Center documentation in your browser ``` -_See code: [src/commands/addons/docs.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/docs.ts)_ +_See code: [src/commands/addons/docs.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/docs.ts)_ ## `heroku addons:downgrade ADDON [PLAN]` @@ -212,7 +212,7 @@ DESCRIPTION show detailed add-on resource and attachment information ``` -_See code: [src/commands/addons/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/info.ts)_ +_See code: [src/commands/addons/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/info.ts)_ ## `heroku addons:open ADDON` @@ -231,7 +231,7 @@ DESCRIPTION open an add-on's dashboard in your browser ``` -_See code: [src/commands/addons/open.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/open.ts)_ +_See code: [src/commands/addons/open.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/open.ts)_ ## `heroku addons:plans SERVICE` @@ -248,7 +248,7 @@ DESCRIPTION list all available plans for an add-on service ``` -_See code: [src/commands/addons/plans.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/plans.ts)_ +_See code: [src/commands/addons/plans.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/plans.ts)_ ## `heroku addons:rename ADDON_NAME NEW_NAME` @@ -262,7 +262,7 @@ DESCRIPTION rename an add-on ``` -_See code: [src/commands/addons/rename.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/rename.ts)_ +_See code: [src/commands/addons/rename.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/rename.ts)_ ## `heroku addons:services` @@ -279,7 +279,7 @@ DESCRIPTION list all available add-on services ``` -_See code: [src/commands/addons/services.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/services.ts)_ +_See code: [src/commands/addons/services.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/services.ts)_ ## `heroku addons:upgrade ADDON [PLAN]` @@ -313,7 +313,7 @@ EXAMPLES $ heroku addons:upgrade swimming-briskly-123 heroku-redis:premium-2 ``` -_See code: [src/commands/addons/upgrade.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/upgrade.ts)_ +_See code: [src/commands/addons/upgrade.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/upgrade.ts)_ ## `heroku addons:wait [ADDON]` @@ -332,4 +332,4 @@ DESCRIPTION show provisioning status of the add-ons on the app ``` -_See code: [src/commands/addons/wait.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/addons/wait.ts)_ +_See code: [src/commands/addons/wait.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/addons/wait.ts)_ diff --git a/docs/apps.md b/docs/apps.md index 9959003414..813c4dd9a8 100644 --- a/docs/apps.md +++ b/docs/apps.md @@ -43,7 +43,7 @@ EXAMPLES $ heroku apps ``` -_See code: [src/commands/apps/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/index.ts)_ +_See code: [src/commands/apps/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/index.ts)_ ## `heroku apps:create [APP]` @@ -89,7 +89,7 @@ EXAMPLES $ heroku apps:create --region eu ``` -_See code: [src/commands/apps/create.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/create.ts)_ +_See code: [src/commands/apps/create.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/create.ts)_ ## `heroku apps:destroy` @@ -108,7 +108,7 @@ DESCRIPTION permanently destroy an app ``` -_See code: [src/commands/apps/destroy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/destroy.ts)_ +_See code: [src/commands/apps/destroy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/destroy.ts)_ ## `heroku apps:errors` @@ -130,7 +130,7 @@ DESCRIPTION view app errors ``` -_See code: [src/commands/apps/errors.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/errors.ts)_ +_See code: [src/commands/apps/errors.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/errors.ts)_ ## `heroku apps:favorites` @@ -147,7 +147,7 @@ DESCRIPTION list favorited apps ``` -_See code: [src/commands/apps/favorites/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/favorites/index.ts)_ +_See code: [src/commands/apps/favorites/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/favorites/index.ts)_ ## `heroku apps:favorites:add` @@ -165,7 +165,7 @@ DESCRIPTION favorites an app ``` -_See code: [src/commands/apps/favorites/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/favorites/add.ts)_ +_See code: [src/commands/apps/favorites/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/favorites/add.ts)_ ## `heroku apps:favorites:remove` @@ -183,7 +183,7 @@ DESCRIPTION unfavorites an app ``` -_See code: [src/commands/apps/favorites/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/favorites/remove.ts)_ +_See code: [src/commands/apps/favorites/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/favorites/remove.ts)_ ## `heroku apps:info` @@ -208,7 +208,7 @@ EXAMPLES $ heroku apps:info --shell ``` -_See code: [src/commands/apps/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/info.ts)_ +_See code: [src/commands/apps/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/info.ts)_ ## `heroku apps:join` @@ -229,7 +229,7 @@ ALIASES $ heroku join ``` -_See code: [src/commands/apps/join.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/join.ts)_ +_See code: [src/commands/apps/join.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/join.ts)_ ## `heroku apps:leave` @@ -253,7 +253,7 @@ EXAMPLES $ heroku apps:leave -a APP ``` -_See code: [src/commands/apps/leave.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/leave.ts)_ +_See code: [src/commands/apps/leave.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/leave.ts)_ ## `heroku apps:lock` @@ -274,7 +274,7 @@ ALIASES $ heroku lock ``` -_See code: [src/commands/apps/lock.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/lock.ts)_ +_See code: [src/commands/apps/lock.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/lock.ts)_ ## `heroku apps:open [PATH]` @@ -297,7 +297,7 @@ EXAMPLES $ heroku open -a myapp /foo ``` -_See code: [src/commands/apps/open.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/open.ts)_ +_See code: [src/commands/apps/open.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/open.ts)_ ## `heroku apps:rename NEWNAME` @@ -318,7 +318,7 @@ EXAMPLES $ heroku apps:rename --app oldname newname ``` -_See code: [src/commands/apps/rename.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/rename.ts)_ +_See code: [src/commands/apps/rename.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/rename.ts)_ ## `heroku apps:stacks` @@ -336,7 +336,7 @@ DESCRIPTION show the list of available stacks ``` -_See code: [src/commands/apps/stacks/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/stacks/index.ts)_ +_See code: [src/commands/apps/stacks/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/stacks/index.ts)_ ## `heroku apps:stacks:set STACK` @@ -360,7 +360,7 @@ EXAMPLES Run git push heroku main to trigger a new build on myapp. ``` -_See code: [src/commands/apps/stacks/set.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/stacks/set.ts)_ +_See code: [src/commands/apps/stacks/set.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/stacks/set.ts)_ ## `heroku apps:transfer RECIPIENT` @@ -391,7 +391,7 @@ EXAMPLES ... ``` -_See code: [src/commands/apps/transfer.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/transfer.ts)_ +_See code: [src/commands/apps/transfer.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/transfer.ts)_ ## `heroku apps:unlock` @@ -412,4 +412,4 @@ ALIASES $ heroku unlock ``` -_See code: [src/commands/apps/unlock.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/apps/unlock.ts)_ +_See code: [src/commands/apps/unlock.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/apps/unlock.ts)_ diff --git a/docs/auth.md b/docs/auth.md index 6711bf0310..487819beac 100644 --- a/docs/auth.md +++ b/docs/auth.md @@ -26,7 +26,7 @@ ALIASES $ heroku twofactor ``` -_See code: [src/commands/auth/2fa/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/auth/2fa/index.ts)_ +_See code: [src/commands/auth/2fa/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/auth/2fa/index.ts)_ ## `heroku auth:2fa:disable` @@ -47,7 +47,7 @@ EXAMPLES $ heroku auth:2fa:disable ``` -_See code: [src/commands/auth/2fa/disable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/auth/2fa/disable.ts)_ +_See code: [src/commands/auth/2fa/disable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/auth/2fa/disable.ts)_ ## `heroku auth:login` @@ -69,7 +69,7 @@ ALIASES $ heroku login ``` -_See code: [src/commands/auth/login.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/auth/login.ts)_ +_See code: [src/commands/auth/login.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/auth/login.ts)_ ## `heroku auth:logout` @@ -86,7 +86,7 @@ ALIASES $ heroku logout ``` -_See code: [src/commands/auth/logout.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/auth/logout.ts)_ +_See code: [src/commands/auth/logout.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/auth/logout.ts)_ ## `heroku auth:token` @@ -105,7 +105,7 @@ DESCRIPTION authorizations:create ``` -_See code: [src/commands/auth/token.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/auth/token.ts)_ +_See code: [src/commands/auth/token.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/auth/token.ts)_ ## `heroku auth:whoami` @@ -122,4 +122,4 @@ ALIASES $ heroku whoami ``` -_See code: [src/commands/auth/whoami.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/auth/whoami.ts)_ +_See code: [src/commands/auth/whoami.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/auth/whoami.ts)_ diff --git a/docs/authorizations.md b/docs/authorizations.md index 6b295c1e84..84754352c1 100644 --- a/docs/authorizations.md +++ b/docs/authorizations.md @@ -29,7 +29,7 @@ EXAMPLES $ heroku authorizations ``` -_See code: [src/commands/authorizations/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/authorizations/index.ts)_ +_See code: [src/commands/authorizations/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/authorizations/index.ts)_ ## `heroku authorizations:create` @@ -53,7 +53,7 @@ EXAMPLES $ heroku authorizations:create --description "For use with Anvil" ``` -_See code: [src/commands/authorizations/create.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/authorizations/create.ts)_ +_See code: [src/commands/authorizations/create.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/authorizations/create.ts)_ ## `heroku authorizations:destroy ID` @@ -89,7 +89,7 @@ DESCRIPTION show an existing OAuth authorization ``` -_See code: [src/commands/authorizations/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/authorizations/info.ts)_ +_See code: [src/commands/authorizations/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/authorizations/info.ts)_ ## `heroku authorizations:revoke ID` @@ -110,7 +110,7 @@ EXAMPLES $ heroku authorizations:revoke 105a7bfa-34c3-476e-873a-b1ac3fdc12fb ``` -_See code: [src/commands/authorizations/revoke.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/authorizations/revoke.ts)_ +_See code: [src/commands/authorizations/revoke.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/authorizations/revoke.ts)_ ## `heroku authorizations:rotate ID` @@ -124,7 +124,7 @@ DESCRIPTION updates an OAuth authorization token ``` -_See code: [src/commands/authorizations/rotate.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/authorizations/rotate.ts)_ +_See code: [src/commands/authorizations/rotate.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/authorizations/rotate.ts)_ ## `heroku authorizations:update ID` @@ -143,4 +143,4 @@ DESCRIPTION updates an OAuth authorization ``` -_See code: [src/commands/authorizations/update.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/authorizations/update.ts)_ +_See code: [src/commands/authorizations/update.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/authorizations/update.ts)_ diff --git a/docs/autocomplete.md b/docs/autocomplete.md index 6082d04f6e..7b02c32b3d 100644 --- a/docs/autocomplete.md +++ b/docs/autocomplete.md @@ -32,4 +32,4 @@ EXAMPLES $ heroku autocomplete --refresh-cache ``` -_See code: [src/commands/autocomplete/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/autocomplete/index.ts)_ +_See code: [src/commands/autocomplete/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/autocomplete/index.ts)_ diff --git a/docs/buildpacks.md b/docs/buildpacks.md index 79a53475a6..28bec48534 100644 --- a/docs/buildpacks.md +++ b/docs/buildpacks.md @@ -28,7 +28,7 @@ DESCRIPTION display the buildpacks for an app ``` -_See code: [src/commands/buildpacks/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/index.ts)_ +_See code: [src/commands/buildpacks/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/index.ts)_ ## `heroku buildpacks:add BUILDPACK` @@ -50,7 +50,7 @@ DESCRIPTION add new app buildpack, inserting into list of buildpacks if necessary ``` -_See code: [src/commands/buildpacks/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/add.ts)_ +_See code: [src/commands/buildpacks/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/add.ts)_ ## `heroku buildpacks:clear` @@ -68,7 +68,7 @@ DESCRIPTION clear all buildpacks set on the app ``` -_See code: [src/commands/buildpacks/clear.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/clear.ts)_ +_See code: [src/commands/buildpacks/clear.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/clear.ts)_ ## `heroku buildpacks:info BUILDPACK` @@ -85,7 +85,7 @@ DESCRIPTION fetch info about a buildpack ``` -_See code: [src/commands/buildpacks/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/info.ts)_ +_See code: [src/commands/buildpacks/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/info.ts)_ ## `heroku buildpacks:remove [BUILDPACK]` @@ -107,7 +107,7 @@ DESCRIPTION remove a buildpack set on the app ``` -_See code: [src/commands/buildpacks/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/remove.ts)_ +_See code: [src/commands/buildpacks/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/remove.ts)_ ## `heroku buildpacks:search [TERM]` @@ -129,7 +129,7 @@ DESCRIPTION search for buildpacks ``` -_See code: [src/commands/buildpacks/search.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/search.ts)_ +_See code: [src/commands/buildpacks/search.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/search.ts)_ ## `heroku buildpacks:set BUILDPACK` @@ -146,7 +146,7 @@ FLAGS -r, --remote= git remote of app to use ``` -_See code: [src/commands/buildpacks/set.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/set.ts)_ +_See code: [src/commands/buildpacks/set.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/set.ts)_ ## `heroku buildpacks:versions BUILDPACK` @@ -163,4 +163,4 @@ DESCRIPTION list versions of a buildpack ``` -_See code: [src/commands/buildpacks/versions.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/buildpacks/versions.ts)_ +_See code: [src/commands/buildpacks/versions.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/buildpacks/versions.ts)_ diff --git a/docs/certs.md b/docs/certs.md index 17ba2886d4..0fde79f94f 100644 --- a/docs/certs.md +++ b/docs/certs.md @@ -30,7 +30,7 @@ DESCRIPTION list SSL certificates for an app ``` -_See code: [src/commands/certs/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/index.ts)_ +_See code: [src/commands/certs/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/index.ts)_ ## `heroku certs:add CRT KEY` @@ -56,7 +56,7 @@ EXAMPLES https://help.salesforce.com/s/articleView?id=000333504&type=1 ``` -_See code: [src/commands/certs/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/add.ts)_ +_See code: [src/commands/certs/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/add.ts)_ ## `heroku certs:auto` @@ -75,7 +75,7 @@ DESCRIPTION show ACM status for an app ``` -_See code: [src/commands/certs/auto/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/auto/index.ts)_ +_See code: [src/commands/certs/auto/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/auto/index.ts)_ ## `heroku certs:auto:disable` @@ -93,7 +93,7 @@ DESCRIPTION disable ACM for an app ``` -_See code: [src/commands/certs/auto/disable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/auto/disable.ts)_ +_See code: [src/commands/certs/auto/disable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/auto/disable.ts)_ ## `heroku certs:auto:enable` @@ -112,7 +112,7 @@ DESCRIPTION enable ACM status for an app ``` -_See code: [src/commands/certs/auto/enable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/auto/enable.ts)_ +_See code: [src/commands/certs/auto/enable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/auto/enable.ts)_ ## `heroku certs:auto:refresh` @@ -130,7 +130,7 @@ DESCRIPTION refresh ACM for an app ``` -_See code: [src/commands/certs/auto/refresh.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/auto/refresh.ts)_ +_See code: [src/commands/certs/auto/refresh.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/auto/refresh.ts)_ ## `heroku certs:generate DOMAIN` @@ -157,7 +157,7 @@ DESCRIPTION generate a key and a CSR or self-signed certificate ``` -_See code: [src/commands/certs/generate.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/generate.ts)_ +_See code: [src/commands/certs/generate.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/generate.ts)_ ## `heroku certs:info` @@ -178,7 +178,7 @@ DESCRIPTION show certificate information for an SSL certificate ``` -_See code: [src/commands/certs/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/info.ts)_ +_See code: [src/commands/certs/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/info.ts)_ ## `heroku certs:remove` @@ -198,7 +198,7 @@ DESCRIPTION remove an SSL certificate from an app ``` -_See code: [src/commands/certs/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/remove.ts)_ +_See code: [src/commands/certs/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/remove.ts)_ ## `heroku certs:update CRT KEY` @@ -225,4 +225,4 @@ EXAMPLES https://help.salesforce.com/s/articleView?id=000333504&type=1 ``` -_See code: [src/commands/certs/update.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/certs/update.ts)_ +_See code: [src/commands/certs/update.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/certs/update.ts)_ diff --git a/docs/ci.md b/docs/ci.md index bccc0aedb9..ae6a6f6634 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -38,7 +38,7 @@ EXAMPLES $ heroku ci --app murmuring-headland-14719 ``` -_See code: [src/commands/ci/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/index.ts)_ +_See code: [src/commands/ci/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/index.ts)_ ## `heroku ci:config` @@ -62,7 +62,7 @@ EXAMPLES $ heroku ci:config --app murmuring-headland-14719 --json ``` -_See code: [src/commands/ci/config/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/config/index.ts)_ +_See code: [src/commands/ci/config/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/config/index.ts)_ ## `heroku ci:config:get KEY` @@ -87,7 +87,7 @@ EXAMPLES test ``` -_See code: [src/commands/ci/config/get.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/config/get.ts)_ +_See code: [src/commands/ci/config/get.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/config/get.ts)_ ## `heroku ci:config:set` @@ -111,7 +111,7 @@ EXAMPLES RAILS_ENV: test ``` -_See code: [src/commands/ci/config/set.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/config/set.ts)_ +_See code: [src/commands/ci/config/set.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/config/set.ts)_ ## `heroku ci:config:unset` @@ -133,7 +133,7 @@ EXAMPLES $ heroku ci:config:unset RAILS_ENV ``` -_See code: [src/commands/ci/config/unset.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/config/unset.ts)_ +_See code: [src/commands/ci/config/unset.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/config/unset.ts)_ ## `heroku ci:debug` @@ -153,7 +153,7 @@ DESCRIPTION opens an interactive test debugging session with the contents of the current directory ``` -_See code: [src/commands/ci/debug.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/debug.ts)_ +_See code: [src/commands/ci/debug.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/debug.ts)_ ## `heroku ci:info TEST-RUN` @@ -176,7 +176,7 @@ EXAMPLES $ heroku ci:info 1288 --app murmuring-headland-14719 ``` -_See code: [src/commands/ci/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/info.ts)_ +_See code: [src/commands/ci/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/info.ts)_ ## `heroku ci:last` @@ -199,7 +199,7 @@ EXAMPLES $ heroku ci:last --pipeline=my-pipeline --node 100 ``` -_See code: [src/commands/ci/last.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/last.ts)_ +_See code: [src/commands/ci/last.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/last.ts)_ ## `heroku ci:migrate-manifest` @@ -216,7 +216,7 @@ EXAMPLES $ heroku ci:migrate-manifest ``` -_See code: [src/commands/ci/migrate-manifest.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/migrate-manifest.ts)_ +_See code: [src/commands/ci/migrate-manifest.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/migrate-manifest.ts)_ ## `heroku ci:open` @@ -239,7 +239,7 @@ EXAMPLES $ heroku ci:open --app murmuring-headland-14719 ``` -_See code: [src/commands/ci/open.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/open.ts)_ +_See code: [src/commands/ci/open.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/open.ts)_ ## `heroku ci:rerun [NUMBER]` @@ -261,7 +261,7 @@ EXAMPLES $ heroku ci:rerun 985 --app murmuring-headland-14719 ``` -_See code: [src/commands/ci/rerun.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/rerun.ts)_ +_See code: [src/commands/ci/rerun.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/rerun.ts)_ ## `heroku ci:run` @@ -283,4 +283,4 @@ EXAMPLES $ heroku ci:run --app murmuring-headland-14719 ``` -_See code: [src/commands/ci/run.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ci/run.ts)_ +_See code: [src/commands/ci/run.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ci/run.ts)_ diff --git a/docs/clients.md b/docs/clients.md index f05b1eff80..79309a0787 100644 --- a/docs/clients.md +++ b/docs/clients.md @@ -25,7 +25,7 @@ DESCRIPTION list your OAuth clients ``` -_See code: [src/commands/clients/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/clients/index.ts)_ +_See code: [src/commands/clients/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/clients/index.ts)_ ## `heroku clients:create NAME REDIRECT_URI` @@ -46,7 +46,7 @@ EXAMPLES $ heroku clients:create "Amazing" https://amazing-client.herokuapp.com/auth/heroku/callback ``` -_See code: [src/commands/clients/create.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/clients/create.ts)_ +_See code: [src/commands/clients/create.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/clients/create.ts)_ ## `heroku clients:destroy ID` @@ -60,7 +60,7 @@ DESCRIPTION delete client by ID ``` -_See code: [src/commands/clients/destroy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/clients/destroy.ts)_ +_See code: [src/commands/clients/destroy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/clients/destroy.ts)_ ## `heroku clients:info ID` @@ -81,7 +81,7 @@ EXAMPLES $ heroku clients:info 36120128-fee7-455e-8b7f-807aee130946 ``` -_See code: [src/commands/clients/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/clients/info.ts)_ +_See code: [src/commands/clients/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/clients/info.ts)_ ## `heroku clients:rotate ID` @@ -99,7 +99,7 @@ DESCRIPTION rotate OAuth client secret ``` -_See code: [src/commands/clients/rotate.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/clients/rotate.ts)_ +_See code: [src/commands/clients/rotate.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/clients/rotate.ts)_ ## `heroku clients:update ID` @@ -120,4 +120,4 @@ EXAMPLES $ heroku clients:update 3e304bda-d376-4278-bdea-6d6c08aa1359 --url https://amazing-client.herokuapp.com/auth/heroku/callback ``` -_See code: [src/commands/clients/update.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/clients/update.ts)_ +_See code: [src/commands/clients/update.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/clients/update.ts)_ diff --git a/docs/config.md b/docs/config.md index 967ce3d1d3..b36c5b43ab 100644 --- a/docs/config.md +++ b/docs/config.md @@ -28,7 +28,7 @@ DESCRIPTION display the config vars for an app ``` -_See code: [src/commands/config/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/config/index.ts)_ ## `heroku config:edit [KEY]` @@ -64,7 +64,7 @@ EXAMPLES $ VISUAL="atom --wait" heroku config:edit ``` -_See code: [src/commands/config/edit.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/config/edit.ts)_ +_See code: [src/commands/config/edit.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/config/edit.ts)_ ## `heroku config:get KEY...` @@ -87,7 +87,7 @@ EXAMPLES production ``` -_See code: [src/commands/config/get.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/config/get.ts)_ +_See code: [src/commands/config/get.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/config/get.ts)_ ## `heroku config:remove` @@ -140,7 +140,7 @@ EXAMPLES RACK_ENV: staging ``` -_See code: [src/commands/config/set.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/config/set.ts)_ +_See code: [src/commands/config/set.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/config/set.ts)_ ## `heroku config:unset` @@ -168,4 +168,4 @@ EXAMPLES Unsetting RAILS_ENV, RACK_ENV and restarting example... done, v10 ``` -_See code: [src/commands/config/unset.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/config/unset.ts)_ +_See code: [src/commands/config/unset.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/config/unset.ts)_ diff --git a/docs/container.md b/docs/container.md index 8acd494be7..2bec92e2d9 100644 --- a/docs/container.md +++ b/docs/container.md @@ -24,7 +24,7 @@ DESCRIPTION Use containers to build and deploy Heroku apps ``` -_See code: [src/commands/container/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/index.ts)_ +_See code: [src/commands/container/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/index.ts)_ ## `heroku container:login` @@ -41,7 +41,7 @@ DESCRIPTION log in to Heroku Container Registry ``` -_See code: [src/commands/container/login.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/login.ts)_ +_See code: [src/commands/container/login.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/login.ts)_ ## `heroku container:logout` @@ -58,7 +58,7 @@ DESCRIPTION log out from Heroku Container Registry ``` -_See code: [src/commands/container/logout.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/logout.ts)_ +_See code: [src/commands/container/logout.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/logout.ts)_ ## `heroku container:pull -a APP [-v] PROCESS_TYPE...` @@ -82,7 +82,7 @@ EXAMPLES $ heroku container:pull web:latest # Pulls the latest tag from the web image ``` -_See code: [src/commands/container/pull.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/pull.ts)_ +_See code: [src/commands/container/pull.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/pull.ts)_ ## `heroku container:push` @@ -117,7 +117,7 @@ EXAMPLES $ heroku container:push --recursive --context-path . # Pushes Dockerfile.* using current dir as build context ``` -_See code: [src/commands/container/push.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/push.ts)_ +_See code: [src/commands/container/push.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/push.ts)_ ## `heroku container:release` @@ -140,7 +140,7 @@ EXAMPLES heroku container:release web worker # Releases the previously pushed web and worker process types ``` -_See code: [src/commands/container/release.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/release.ts)_ +_See code: [src/commands/container/release.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/release.ts)_ ## `heroku container:rm -a APP [-v] PROCESS_TYPE...` @@ -162,7 +162,7 @@ EXAMPLES heroku container:rm web worker # Destroys the web and worker containers ``` -_See code: [src/commands/container/rm.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/rm.ts)_ +_See code: [src/commands/container/rm.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/rm.ts)_ ## `heroku container:run -a APP [-v] PROCESS_TYPE...` @@ -187,4 +187,4 @@ EXAMPLES $ heroku container:pull web:latest # Pulls the latest tag from the web image ``` -_See code: [src/commands/container/run.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/container/run.ts)_ +_See code: [src/commands/container/run.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/container/run.ts)_ diff --git a/docs/domains.md b/docs/domains.md index 342565b304..0dbe29a83a 100644 --- a/docs/domains.md +++ b/docs/domains.md @@ -48,7 +48,7 @@ EXAMPLES $ heroku domains --filter 'Domain Name=www.example.com' ``` -_See code: [src/commands/domains/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/domains/index.ts)_ +_See code: [src/commands/domains/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/domains/index.ts)_ ## `heroku domains:add HOSTNAME` @@ -73,7 +73,7 @@ EXAMPLES $ heroku domains:add www.example.com ``` -_See code: [src/commands/domains/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/domains/add.ts)_ +_See code: [src/commands/domains/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/domains/add.ts)_ ## `heroku domains:clear` @@ -95,7 +95,7 @@ EXAMPLES $ heroku domains:clear ``` -_See code: [src/commands/domains/clear.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/domains/clear.ts)_ +_See code: [src/commands/domains/clear.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/domains/clear.ts)_ ## `heroku domains:info HOSTNAME` @@ -117,7 +117,7 @@ EXAMPLES $ heroku domains:info www.example.com ``` -_See code: [src/commands/domains/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/domains/info.ts)_ +_See code: [src/commands/domains/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/domains/info.ts)_ ## `heroku domains:remove HOSTNAME` @@ -139,7 +139,7 @@ EXAMPLES $ heroku domains:remove www.example.com ``` -_See code: [src/commands/domains/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/domains/remove.ts)_ +_See code: [src/commands/domains/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/domains/remove.ts)_ ## `heroku domains:update HOSTNAME` @@ -162,7 +162,7 @@ EXAMPLES $ heroku domains:update www.example.com --cert mycert ``` -_See code: [src/commands/domains/update.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/domains/update.ts)_ +_See code: [src/commands/domains/update.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/domains/update.ts)_ ## `heroku domains:wait [HOSTNAME]` @@ -181,4 +181,4 @@ DESCRIPTION wait for domain to be active for an app ``` -_See code: [src/commands/domains/wait.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/domains/wait.ts)_ +_See code: [src/commands/domains/wait.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/domains/wait.ts)_ diff --git a/docs/drains.md b/docs/drains.md index 0e24df73e9..76de1595ef 100644 --- a/docs/drains.md +++ b/docs/drains.md @@ -26,7 +26,7 @@ DESCRIPTION display the log drains of an app ``` -_See code: [src/commands/drains/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/drains/index.ts)_ +_See code: [src/commands/drains/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/drains/index.ts)_ ## `heroku drains:add URL` @@ -44,7 +44,7 @@ DESCRIPTION adds a log drain to an app ``` -_See code: [src/commands/drains/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/drains/add.ts)_ +_See code: [src/commands/drains/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/drains/add.ts)_ ## `heroku drains:get` @@ -84,7 +84,7 @@ EXAMPLES drains:remove [URL|TOKEN] ``` -_See code: [src/commands/drains/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/drains/remove.ts)_ +_See code: [src/commands/drains/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/drains/remove.ts)_ ## `heroku drains:set URL` diff --git a/docs/features.md b/docs/features.md index 8a23e85540..952c6e27cb 100644 --- a/docs/features.md +++ b/docs/features.md @@ -25,7 +25,7 @@ DESCRIPTION list available app features ``` -_See code: [src/commands/features/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/features/index.ts)_ +_See code: [src/commands/features/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/features/index.ts)_ ## `heroku features:disable FEATURE` @@ -43,7 +43,7 @@ DESCRIPTION disables an app feature ``` -_See code: [src/commands/features/disable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/features/disable.ts)_ +_See code: [src/commands/features/disable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/features/disable.ts)_ ## `heroku features:enable FEATURE` @@ -61,7 +61,7 @@ DESCRIPTION enables an app feature ``` -_See code: [src/commands/features/enable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/features/enable.ts)_ +_See code: [src/commands/features/enable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/features/enable.ts)_ ## `heroku features:info FEATURE` @@ -80,4 +80,4 @@ DESCRIPTION display information about a feature ``` -_See code: [src/commands/features/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/features/info.ts)_ +_See code: [src/commands/features/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/features/info.ts)_ diff --git a/docs/git.md b/docs/git.md index 66422406b1..f31dff2c45 100644 --- a/docs/git.md +++ b/docs/git.md @@ -31,7 +31,7 @@ EXAMPLES ... ``` -_See code: [src/commands/git/clone.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/git/clone.ts)_ +_See code: [src/commands/git/clone.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/git/clone.ts)_ ## `heroku git:remote` @@ -57,4 +57,4 @@ EXAMPLES $ heroku git:remote --remote heroku-staging -a example ``` -_See code: [src/commands/git/remote.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/git/remote.ts)_ +_See code: [src/commands/git/remote.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/git/remote.ts)_ diff --git a/docs/help.md b/docs/help.md index 3c3a1e1495..ceeed161f6 100644 --- a/docs/help.md +++ b/docs/help.md @@ -11,10 +11,10 @@ Display help for heroku. ``` USAGE - $ heroku help [COMMANDS] [-n] + $ heroku help [COMMANDS...] [-n] ARGUMENTS - COMMANDS Command to show help for. + COMMANDS... Command to show help for. FLAGS -n, --nested-commands Include all nested commands in the output. diff --git a/docs/keys.md b/docs/keys.md index 9120df611f..213b592bc0 100644 --- a/docs/keys.md +++ b/docs/keys.md @@ -24,7 +24,7 @@ DESCRIPTION display your SSH keys ``` -_See code: [src/commands/keys/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/keys/index.ts)_ +_See code: [src/commands/keys/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/keys/index.ts)_ ## `heroku keys:add [KEY]` @@ -50,7 +50,7 @@ EXAMPLES Uploading SSH public key /my/key.pub... done ``` -_See code: [src/commands/keys/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/keys/add.ts)_ +_See code: [src/commands/keys/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/keys/add.ts)_ ## `heroku keys:clear` @@ -64,7 +64,7 @@ DESCRIPTION remove all SSH keys for current user ``` -_See code: [src/commands/keys/clear.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/keys/clear.ts)_ +_See code: [src/commands/keys/clear.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/keys/clear.ts)_ ## `heroku keys:remove KEY` @@ -82,4 +82,4 @@ EXAMPLES Removing email@example.com SSH key... done ``` -_See code: [src/commands/keys/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/keys/remove.ts)_ +_See code: [src/commands/keys/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/keys/remove.ts)_ diff --git a/docs/labs.md b/docs/labs.md index ea2fe47ee5..7c87e1aa78 100644 --- a/docs/labs.md +++ b/docs/labs.md @@ -25,7 +25,7 @@ DESCRIPTION list experimental features ``` -_See code: [src/commands/labs/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/labs/index.ts)_ +_See code: [src/commands/labs/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/labs/index.ts)_ ## `heroku labs:disable FEATURE` @@ -44,7 +44,7 @@ DESCRIPTION disables an experimental feature ``` -_See code: [src/commands/labs/disable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/labs/disable.ts)_ +_See code: [src/commands/labs/disable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/labs/disable.ts)_ ## `heroku labs:enable FEATURE` @@ -62,7 +62,7 @@ DESCRIPTION enables an experimental feature ``` -_See code: [src/commands/labs/enable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/labs/enable.ts)_ +_See code: [src/commands/labs/enable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/labs/enable.ts)_ ## `heroku labs:info FEATURE` @@ -81,4 +81,4 @@ DESCRIPTION show feature info ``` -_See code: [src/commands/labs/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/labs/info.ts)_ +_See code: [src/commands/labs/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/labs/info.ts)_ diff --git a/docs/local.md b/docs/local.md index 98b3269b86..922064ff22 100644 --- a/docs/local.md +++ b/docs/local.md @@ -35,7 +35,7 @@ EXAMPLES $ heroku local web=1,worker=2 ``` -_See code: [src/commands/local/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/local/index.ts)_ +_See code: [src/commands/local/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/local/index.ts)_ ## `heroku local:run` @@ -56,7 +56,7 @@ EXAMPLES $ heroku local:run bin/migrate ``` -_See code: [src/commands/local/run.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/local/run.ts)_ +_See code: [src/commands/local/run.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/local/run.ts)_ ## `heroku local:start [PROCESSNAME]` @@ -97,4 +97,4 @@ DESCRIPTION display node-foreman version ``` -_See code: [src/commands/local/version.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/local/version.ts)_ +_See code: [src/commands/local/version.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/local/version.ts)_ diff --git a/docs/logs.md b/docs/logs.md index a6ef61ea42..924fbe931a 100644 --- a/docs/logs.md +++ b/docs/logs.md @@ -11,29 +11,34 @@ display recent log output ``` USAGE - $ heroku logs -a [-r ] [-n ] [-d ] [-s ] [-t] [--force-colors] + $ heroku logs -a [-d ] [--force-colors] [-n ] [-r ] [-s ] [-t] + [--type ] FLAGS -a, --app= (required) app to run command against - -d, --dyno= only show output from this dyno type (such as "web" or "worker") - -n, --num= number of lines to display + -d, --dyno= only show output from this dyno (such as "web-123-456" or "worker.2") + -n, --num= number of lines to display (ignored for Fir generation apps) -r, --remote= git remote of app to use -s, --source= only show output from this source (such as "app" or "heroku") - -t, --tail continually stream logs + -t, --tail continually stream logs (defaults to true for Fir generation apps) --force-colors force use of colors (even on non-tty output) + --type= only show output from this process type (such as "web" or "worker") DESCRIPTION display recent log output disable colors with --no-color, HEROKU_LOGS_COLOR=0, or HEROKU_COLOR=0 + EXAMPLES $ heroku logs --app=my-app - $ heroku logs --num=50 + $ heroku logs --num=50 --app=my-app + + $ heroku logs --dyno=web-123-456 --app=my-app - $ heroku logs --dyno=web --app=my-app + $ heroku logs --type=web --app=my-app $ heroku logs --app=my-app --tail ``` -_See code: [src/commands/logs.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/logs.ts)_ +_See code: [src/commands/logs.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/logs.ts)_ diff --git a/docs/maintenance.md b/docs/maintenance.md index 678b8bf3f4..e428449011 100644 --- a/docs/maintenance.md +++ b/docs/maintenance.md @@ -23,7 +23,7 @@ DESCRIPTION display the current maintenance status of app ``` -_See code: [src/commands/maintenance/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/maintenance/index.ts)_ +_See code: [src/commands/maintenance/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/maintenance/index.ts)_ ## `heroku maintenance:off` @@ -41,7 +41,7 @@ DESCRIPTION take the app out of maintenance mode ``` -_See code: [src/commands/maintenance/off.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/maintenance/off.ts)_ +_See code: [src/commands/maintenance/off.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/maintenance/off.ts)_ ## `heroku maintenance:on` @@ -59,4 +59,4 @@ DESCRIPTION put the app into maintenance mode ``` -_See code: [src/commands/maintenance/on.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/maintenance/on.ts)_ +_See code: [src/commands/maintenance/on.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/maintenance/on.ts)_ diff --git a/docs/members.md b/docs/members.md index 2517ee99dd..2e52594e58 100644 --- a/docs/members.md +++ b/docs/members.md @@ -26,7 +26,7 @@ DESCRIPTION list members of a team ``` -_See code: [src/commands/members/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/members/index.ts)_ +_See code: [src/commands/members/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/members/index.ts)_ ## `heroku members:add EMAIL` @@ -44,7 +44,7 @@ DESCRIPTION adds a user to a team ``` -_See code: [src/commands/members/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/members/add.ts)_ +_See code: [src/commands/members/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/members/add.ts)_ ## `heroku members:remove` @@ -61,7 +61,7 @@ DESCRIPTION removes a user from a team ``` -_See code: [src/commands/members/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/members/remove.ts)_ +_See code: [src/commands/members/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/members/remove.ts)_ ## `heroku members:set` @@ -79,4 +79,4 @@ DESCRIPTION sets a members role in a team ``` -_See code: [src/commands/members/set.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/members/set.ts)_ +_See code: [src/commands/members/set.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/members/set.ts)_ diff --git a/docs/notifications.md b/docs/notifications.md index 3fc6af31e4..8ddd1ad149 100644 --- a/docs/notifications.md +++ b/docs/notifications.md @@ -24,4 +24,4 @@ DESCRIPTION display notifications ``` -_See code: [src/commands/notifications/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/notifications/index.ts)_ +_See code: [src/commands/notifications/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/notifications/index.ts)_ diff --git a/docs/orgs.md b/docs/orgs.md index a743ca6ccf..71e023fffd 100644 --- a/docs/orgs.md +++ b/docs/orgs.md @@ -22,7 +22,7 @@ DESCRIPTION list the teams that you are a member of ``` -_See code: [src/commands/orgs/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/orgs/index.ts)_ +_See code: [src/commands/orgs/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/orgs/index.ts)_ ## `heroku orgs:open` @@ -39,4 +39,4 @@ DESCRIPTION open the team interface in a browser window ``` -_See code: [src/commands/orgs/open.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/orgs/open.ts)_ +_See code: [src/commands/orgs/open.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/orgs/open.ts)_ diff --git a/docs/pg.md b/docs/pg.md index 989443c4ef..d79439e36a 100644 --- a/docs/pg.md +++ b/docs/pg.md @@ -99,7 +99,7 @@ DESCRIPTION list database backups ``` -_See code: [src/commands/pg/backups/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/index.ts)_ +_See code: [src/commands/pg/backups/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/index.ts)_ ## `heroku pg:backups:cancel [BACKUP_ID]` @@ -117,7 +117,7 @@ DESCRIPTION cancel an in-progress backup or restore (default newest) ``` -_See code: [src/commands/pg/backups/cancel.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/cancel.ts)_ +_See code: [src/commands/pg/backups/cancel.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/cancel.ts)_ ## `heroku pg:backups:capture [DATABASE]` @@ -137,7 +137,7 @@ DESCRIPTION capture a new backup ``` -_See code: [src/commands/pg/backups/capture.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/capture.ts)_ +_See code: [src/commands/pg/backups/capture.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/capture.ts)_ ## `heroku pg:backups:delete BACKUP_ID` @@ -159,7 +159,7 @@ EXAMPLES $ heroku pg:backup:delete --app APP_ID BACKUP_ID ``` -_See code: [src/commands/pg/backups/delete.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/delete.ts)_ +_See code: [src/commands/pg/backups/delete.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/delete.ts)_ ## `heroku pg:backups:download [BACKUP_ID]` @@ -178,7 +178,7 @@ DESCRIPTION downloads database backup ``` -_See code: [src/commands/pg/backups/download.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/download.ts)_ +_See code: [src/commands/pg/backups/download.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/download.ts)_ ## `heroku pg:backups:info [BACKUP_ID]` @@ -196,7 +196,7 @@ DESCRIPTION get information about a specific backup ``` -_See code: [src/commands/pg/backups/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/info.ts)_ +_See code: [src/commands/pg/backups/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/info.ts)_ ## `heroku pg:backups:restore [BACKUP] [DATABASE]` @@ -220,7 +220,7 @@ DESCRIPTION restore a backup (default latest) to a database ``` -_See code: [src/commands/pg/backups/restore.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/restore.ts)_ +_See code: [src/commands/pg/backups/restore.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/restore.ts)_ ## `heroku pg:backups:schedule [DATABASE]` @@ -240,7 +240,7 @@ DESCRIPTION schedule daily backups for given database ``` -_See code: [src/commands/pg/backups/schedule.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/schedule.ts)_ +_See code: [src/commands/pg/backups/schedule.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/schedule.ts)_ ## `heroku pg:backups:schedules` @@ -258,7 +258,7 @@ DESCRIPTION list backup schedule ``` -_See code: [src/commands/pg/backups/schedules.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/schedules.ts)_ +_See code: [src/commands/pg/backups/schedules.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/schedules.ts)_ ## `heroku pg:backups:unschedule [DATABASE]` @@ -276,7 +276,7 @@ DESCRIPTION stop daily backups ``` -_See code: [src/commands/pg/backups/unschedule.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/unschedule.ts)_ +_See code: [src/commands/pg/backups/unschedule.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/unschedule.ts)_ ## `heroku pg:backups:url [BACKUP_ID]` @@ -294,7 +294,7 @@ DESCRIPTION get secret but publicly accessible URL of a backup ``` -_See code: [src/commands/pg/backups/url.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/backups/url.ts)_ +_See code: [src/commands/pg/backups/url.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/backups/url.ts)_ ## `heroku pg:bloat [DATABASE]` @@ -312,7 +312,7 @@ DESCRIPTION show table and index bloat in your database ordered by most wasteful ``` -_See code: [src/commands/pg/bloat.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/bloat.ts)_ +_See code: [src/commands/pg/bloat.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/bloat.ts)_ ## `heroku pg:blocking [DATABASE]` @@ -330,7 +330,7 @@ DESCRIPTION display queries holding locks other queries are waiting to be released ``` -_See code: [src/commands/pg/blocking.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/blocking.ts)_ +_See code: [src/commands/pg/blocking.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/blocking.ts)_ ## `heroku pg:connection-pooling:attach [DATABASE]` @@ -352,7 +352,7 @@ EXAMPLES $ heroku pg:connection-pooling:attach postgresql-something-12345 ``` -_See code: [src/commands/pg/connection-pooling/attach.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/connection-pooling/attach.ts)_ +_See code: [src/commands/pg/connection-pooling/attach.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/connection-pooling/attach.ts)_ ## `heroku pg:copy SOURCE TARGET` @@ -374,7 +374,7 @@ DESCRIPTION copy all data from source db to target ``` -_See code: [src/commands/pg/copy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/copy.ts)_ +_See code: [src/commands/pg/copy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/copy.ts)_ ## `heroku pg:credentials [DATABASE]` @@ -392,7 +392,7 @@ DESCRIPTION show information on credentials in the database ``` -_See code: [src/commands/pg/credentials.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/credentials.ts)_ +_See code: [src/commands/pg/credentials.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/credentials.ts)_ ## `heroku pg:credentials:create [DATABASE]` @@ -414,7 +414,7 @@ DESCRIPTION heroku pg:credentials:create postgresql-something-12345 --name new-cred-name ``` -_See code: [src/commands/pg/credentials/create.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/credentials/create.ts)_ +_See code: [src/commands/pg/credentials/create.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/credentials/create.ts)_ ## `heroku pg:credentials:destroy [DATABASE]` @@ -437,7 +437,7 @@ EXAMPLES $ heroku pg:credentials:destroy postgresql-transparent-56874 --name cred-name -a woodstock-production ``` -_See code: [src/commands/pg/credentials/destroy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/credentials/destroy.ts)_ +_See code: [src/commands/pg/credentials/destroy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/credentials/destroy.ts)_ ## `heroku pg:credentials:repair-default [DATABASE]` @@ -459,7 +459,7 @@ EXAMPLES $ heroku pg:credentials:repair-default postgresql-something-12345 ``` -_See code: [src/commands/pg/credentials/repair-default.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/credentials/repair-default.ts)_ +_See code: [src/commands/pg/credentials/repair-default.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/credentials/repair-default.ts)_ ## `heroku pg:credentials:rotate [DATABASE]` @@ -481,7 +481,7 @@ DESCRIPTION rotate the database credentials ``` -_See code: [src/commands/pg/credentials/rotate.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/credentials/rotate.ts)_ +_See code: [src/commands/pg/credentials/rotate.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/credentials/rotate.ts)_ ## `heroku pg:credentials:url [DATABASE]` @@ -500,7 +500,7 @@ DESCRIPTION show information on a database credential ``` -_See code: [src/commands/pg/credentials/url.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/credentials/url.ts)_ +_See code: [src/commands/pg/credentials/url.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/credentials/url.ts)_ ## `heroku pg:diagnose [DATABASE|REPORT_ID]` @@ -521,7 +521,7 @@ DESCRIPTION if REPORT_ID is specified instead, a previous report is displayed ``` -_See code: [src/commands/pg/diagnose.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/diagnose.ts)_ +_See code: [src/commands/pg/diagnose.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/diagnose.ts)_ ## `heroku pg:info [DATABASE]` @@ -542,7 +542,7 @@ ALIASES $ heroku pg ``` -_See code: [src/commands/pg/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/info.ts)_ +_See code: [src/commands/pg/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/info.ts)_ ## `heroku pg:kill PID [DATABASE]` @@ -561,7 +561,7 @@ DESCRIPTION kill a query ``` -_See code: [src/commands/pg/kill.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/kill.ts)_ +_See code: [src/commands/pg/kill.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/kill.ts)_ ## `heroku pg:killall [DATABASE]` @@ -579,7 +579,7 @@ DESCRIPTION terminates all connections for all credentials ``` -_See code: [src/commands/pg/killall.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/killall.ts)_ +_See code: [src/commands/pg/killall.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/killall.ts)_ ## `heroku pg:links [DATABASE]` @@ -597,7 +597,7 @@ DESCRIPTION lists all databases and information on link ``` -_See code: [src/commands/pg/links/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/links/index.ts)_ +_See code: [src/commands/pg/links/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/links/index.ts)_ ## `heroku pg:links:create REMOTE DATABASE` @@ -618,7 +618,7 @@ DESCRIPTION heroku pg:links:create HEROKU_REDIS_RED HEROKU_POSTGRESQL_CERULEAN ``` -_See code: [src/commands/pg/links/create.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/links/create.ts)_ +_See code: [src/commands/pg/links/create.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/links/create.ts)_ ## `heroku pg:links:destroy DATABASE LINK` @@ -640,7 +640,7 @@ EXAMPLES $ heroku pg:links:destroy HEROKU_POSTGRESQL_CERULEAN redis-symmetrical-100 ``` -_See code: [src/commands/pg/links/destroy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/links/destroy.ts)_ +_See code: [src/commands/pg/links/destroy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/links/destroy.ts)_ ## `heroku pg:locks [DATABASE]` @@ -659,7 +659,7 @@ DESCRIPTION display queries with active locks ``` -_See code: [src/commands/pg/locks.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/locks.ts)_ +_See code: [src/commands/pg/locks.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/locks.ts)_ ## `heroku pg:maintenance [DATABASE]` @@ -677,7 +677,7 @@ DESCRIPTION show current maintenance information ``` -_See code: [src/commands/pg/maintenance/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/maintenance/index.ts)_ +_See code: [src/commands/pg/maintenance/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/maintenance/index.ts)_ ## `heroku pg:maintenance:run [DATABASE]` @@ -696,7 +696,7 @@ DESCRIPTION start maintenance ``` -_See code: [src/commands/pg/maintenance/run.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/maintenance/run.ts)_ +_See code: [src/commands/pg/maintenance/run.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/maintenance/run.ts)_ ## `heroku pg:maintenance:window WINDOW [DATABASE]` @@ -719,7 +719,7 @@ EXAMPLES $ heroku pg:maintenance:window "Sunday 06:00" postgres-slippery-100 ``` -_See code: [src/commands/pg/maintenance/window.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/maintenance/window.ts)_ +_See code: [src/commands/pg/maintenance/window.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/maintenance/window.ts)_ ## `heroku pg:outliers [DATABASE]` @@ -740,7 +740,7 @@ DESCRIPTION show 10 queries that have longest execution time in aggregate ``` -_See code: [src/commands/pg/outliers.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/outliers.ts)_ +_See code: [src/commands/pg/outliers.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/outliers.ts)_ ## `heroku pg:promote DATABASE` @@ -759,7 +759,7 @@ DESCRIPTION sets DATABASE as your DATABASE_URL ``` -_See code: [src/commands/pg/promote.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/promote.ts)_ +_See code: [src/commands/pg/promote.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/promote.ts)_ ## `heroku pg:ps [DATABASE]` @@ -778,7 +778,7 @@ DESCRIPTION view active queries with execution time ``` -_See code: [src/commands/pg/ps.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/ps.ts)_ +_See code: [src/commands/pg/ps.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/ps.ts)_ ## `heroku pg:psql [DATABASE]` @@ -802,7 +802,7 @@ ALIASES $ heroku psql ``` -_See code: [src/commands/pg/psql.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/psql.ts)_ +_See code: [src/commands/pg/psql.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/psql.ts)_ ## `heroku pg:pull SOURCE TARGET` @@ -841,7 +841,7 @@ EXAMPLES $ heroku pg:pull postgresql-swimmingly-100 postgres://myhost/mydb --app sushi ``` -_See code: [src/commands/pg/pull.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/pull.ts)_ +_See code: [src/commands/pg/pull.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/pull.ts)_ ## `heroku pg:push SOURCE TARGET` @@ -876,7 +876,7 @@ EXAMPLES $ heroku pg:push postgres://myhost/mydb postgresql-swimmingly-100 --app sushi ``` -_See code: [src/commands/pg/push.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/push.ts)_ +_See code: [src/commands/pg/push.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/push.ts)_ ## `heroku pg:reset [DATABASE]` @@ -896,7 +896,7 @@ DESCRIPTION delete all data in DATABASE ``` -_See code: [src/commands/pg/reset.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/reset.ts)_ +_See code: [src/commands/pg/reset.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/reset.ts)_ ## `heroku pg:settings [DATABASE]` @@ -914,7 +914,7 @@ DESCRIPTION show your current database settings ``` -_See code: [src/commands/pg/settings/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/index.ts)_ +_See code: [src/commands/pg/settings/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/index.ts)_ ## `heroku pg:settings:auto-explain [DATABASE] [VALUE]` @@ -922,7 +922,7 @@ Automatically log execution plans of queries without running EXPLAIN by hand. ``` USAGE - $ heroku pg:settings:auto-explain [DATABASE] [VALUE] -a [-r ] + $ heroku pg:settings:auto-explain [DATABASE...] [VALUE...] -a [-r ] FLAGS -a, --app= (required) app to run command against @@ -934,7 +934,7 @@ DESCRIPTION Restart your Heroku app and/or restart existing connections for logging to start taking place. ``` -_See code: [src/commands/pg/settings/auto-explain.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain.ts)_ +_See code: [src/commands/pg/settings/auto-explain.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain.ts)_ ## `heroku pg:settings:auto-explain:log-analyze [DATABASE] [VALUE]` @@ -956,7 +956,7 @@ DESCRIPTION impacts to your database and should be used with caution. ``` -_See code: [src/commands/pg/settings/auto-explain/log-analyze.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain/log-analyze.ts)_ +_See code: [src/commands/pg/settings/auto-explain/log-analyze.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain/log-analyze.ts)_ ## `heroku pg:settings:auto-explain:log-buffers [DATABASE] [VALUE]` @@ -976,7 +976,7 @@ DESCRIPTION pg:settings:auto-explain:log-analyze turned on. ``` -_See code: [src/commands/pg/settings/auto-explain/log-buffers.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain/log-buffers.ts)_ +_See code: [src/commands/pg/settings/auto-explain/log-buffers.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain/log-buffers.ts)_ ## `heroku pg:settings:auto-explain:log-format [DATABASE] [VALUE]` @@ -995,7 +995,7 @@ DESCRIPTION The allowed values are text, xml, json, and yaml. The default is text. ``` -_See code: [src/commands/pg/settings/auto-explain/log-format.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain/log-format.ts)_ +_See code: [src/commands/pg/settings/auto-explain/log-format.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain/log-format.ts)_ ## `heroku pg:settings:auto-explain:log-min-duration [DATABASE] [VALUE]` @@ -1014,7 +1014,7 @@ DESCRIPTION Setting this value to 0 will log all queries. Setting this value to -1 will disable logging entirely. ``` -_See code: [src/commands/pg/settings/auto-explain/log-min-duration.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain/log-min-duration.ts)_ +_See code: [src/commands/pg/settings/auto-explain/log-min-duration.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain/log-min-duration.ts)_ ## `heroku pg:settings:auto-explain:log-nested-statements [DATABASE] [VALUE]` @@ -1032,7 +1032,7 @@ DESCRIPTION Nested statements are included in the execution plan's log. ``` -_See code: [src/commands/pg/settings/auto-explain/log-nested-statements.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain/log-nested-statements.ts)_ +_See code: [src/commands/pg/settings/auto-explain/log-nested-statements.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain/log-nested-statements.ts)_ ## `heroku pg:settings:auto-explain:log-triggers [DATABASE] [VALUE]` @@ -1051,7 +1051,7 @@ DESCRIPTION This parameter can only be used in conjunction with pg:settings:auto-explain:log-analyze turned on. ``` -_See code: [src/commands/pg/settings/auto-explain/log-triggers.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain/log-triggers.ts)_ +_See code: [src/commands/pg/settings/auto-explain/log-triggers.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain/log-triggers.ts)_ ## `heroku pg:settings:auto-explain:log-verbose [DATABASE] [VALUE]` @@ -1070,7 +1070,7 @@ DESCRIPTION This is equivalent to calling EXPLAIN VERBOSE. ``` -_See code: [src/commands/pg/settings/auto-explain/log-verbose.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/auto-explain/log-verbose.ts)_ +_See code: [src/commands/pg/settings/auto-explain/log-verbose.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/auto-explain/log-verbose.ts)_ ## `heroku pg:settings:explain-data-connector-details [DATABASE] [VALUE]` @@ -1088,7 +1088,7 @@ DESCRIPTION displays stats on replication slots on your database, the default value is "off" ``` -_See code: [src/commands/pg/settings/explain-data-connector-details.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/explain-data-connector-details.ts)_ +_See code: [src/commands/pg/settings/explain-data-connector-details.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/explain-data-connector-details.ts)_ ## `heroku pg:settings:log-connections [DATABASE] [VALUE]` @@ -1107,7 +1107,7 @@ DESCRIPTION Setting log_connections to false stops emitting log messages for all attempts to login to the database. ``` -_See code: [src/commands/pg/settings/log-connections.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/log-connections.ts)_ +_See code: [src/commands/pg/settings/log-connections.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/log-connections.ts)_ ## `heroku pg:settings:log-lock-waits [DATABASE] [VALUE]` @@ -1130,7 +1130,7 @@ DESCRIPTION transaction. ``` -_See code: [src/commands/pg/settings/log-lock-waits.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/log-lock-waits.ts)_ +_See code: [src/commands/pg/settings/log-lock-waits.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/log-lock-waits.ts)_ ## `heroku pg:settings:log-min-duration-statement [DATABASE] [VALUE]` @@ -1151,7 +1151,7 @@ DESCRIPTION durations. ``` -_See code: [src/commands/pg/settings/log-min-duration-statement.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/log-min-duration-statement.ts)_ +_See code: [src/commands/pg/settings/log-min-duration-statement.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/log-min-duration-statement.ts)_ ## `heroku pg:settings:log-min-error-statement [DATABASE] [VALUE]` @@ -1171,7 +1171,7 @@ DESCRIPTION Use this setting to prevent logging SQL queries that contain sensitive information. Default is "error". ``` -_See code: [src/commands/pg/settings/log-min-error-statement.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/log-min-error-statement.ts)_ +_See code: [src/commands/pg/settings/log-min-error-statement.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/log-min-error-statement.ts)_ ## `heroku pg:settings:log-statement [DATABASE] [VALUE]` @@ -1195,7 +1195,7 @@ DESCRIPTION all - All statements are logged ``` -_See code: [src/commands/pg/settings/log-statement.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/log-statement.ts)_ +_See code: [src/commands/pg/settings/log-statement.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/log-statement.ts)_ ## `heroku pg:settings:track-functions [DATABASE] [VALUE]` @@ -1218,7 +1218,7 @@ DESCRIPTION not tracked ``` -_See code: [src/commands/pg/settings/track-functions.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/settings/track-functions.ts)_ +_See code: [src/commands/pg/settings/track-functions.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/settings/track-functions.ts)_ ## `heroku pg:unfollow DATABASE` @@ -1237,7 +1237,7 @@ DESCRIPTION stop a replica from following and make it a writeable database ``` -_See code: [src/commands/pg/unfollow.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/unfollow.ts)_ +_See code: [src/commands/pg/unfollow.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/unfollow.ts)_ ## `heroku pg:upgrade [DATABASE]` @@ -1259,7 +1259,7 @@ DESCRIPTION To upgrade to another PostgreSQL version, use pg:copy instead ``` -_See code: [src/commands/pg/upgrade.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/upgrade.ts)_ +_See code: [src/commands/pg/upgrade.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/upgrade.ts)_ ## `heroku pg:vacuum-stats [DATABASE]` @@ -1277,7 +1277,7 @@ DESCRIPTION show dead rows and whether an automatic vacuum is expected to be triggered ``` -_See code: [src/commands/pg/vacuum-stats.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/vacuum-stats.ts)_ +_See code: [src/commands/pg/vacuum-stats.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/vacuum-stats.ts)_ ## `heroku pg:wait [DATABASE]` @@ -1297,4 +1297,4 @@ DESCRIPTION blocks until database is available ``` -_See code: [src/commands/pg/wait.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pg/wait.ts)_ +_See code: [src/commands/pg/wait.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pg/wait.ts)_ diff --git a/docs/pipelines.md b/docs/pipelines.md index 0a6958f8f9..cd90fc48e6 100644 --- a/docs/pipelines.md +++ b/docs/pipelines.md @@ -36,7 +36,7 @@ EXAMPLES $ heroku pipelines ``` -_See code: [src/commands/pipelines/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/index.ts)_ +_See code: [src/commands/pipelines/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/index.ts)_ ## `heroku pipelines:add PIPELINE` @@ -63,7 +63,7 @@ EXAMPLES $ heroku pipelines:add my-pipeline -a my-app -s production ``` -_See code: [src/commands/pipelines/add.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/add.ts)_ +_See code: [src/commands/pipelines/add.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/add.ts)_ ## `heroku pipelines:connect NAME` @@ -86,7 +86,7 @@ EXAMPLES $ heroku pipelines:connect my-pipeline -r githuborg/reponame ``` -_See code: [src/commands/pipelines/connect.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/connect.ts)_ +_See code: [src/commands/pipelines/connect.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/connect.ts)_ ## `heroku pipelines:create [NAME]` @@ -118,7 +118,7 @@ EXAMPLES $ heroku pipelines:create my-pipeline -a my-app-staging ``` -_See code: [src/commands/pipelines/create.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/create.ts)_ +_See code: [src/commands/pipelines/create.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/create.ts)_ ## `heroku pipelines:destroy PIPELINE` @@ -138,7 +138,7 @@ EXAMPLES $ heroku pipelines:destroy my-pipeline ``` -_See code: [src/commands/pipelines/destroy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/destroy.ts)_ +_See code: [src/commands/pipelines/destroy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/destroy.ts)_ ## `heroku pipelines:diff` @@ -159,7 +159,7 @@ EXAMPLES $ heroku pipelines:diff -a my-app-staging ``` -_See code: [src/commands/pipelines/diff.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/diff.ts)_ +_See code: [src/commands/pipelines/diff.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/diff.ts)_ ## `heroku pipelines:info PIPELINE` @@ -182,7 +182,7 @@ EXAMPLES $ heroku pipelines:info my-pipeline ``` -_See code: [src/commands/pipelines/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/info.ts)_ +_See code: [src/commands/pipelines/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/info.ts)_ ## `heroku pipelines:open PIPELINE` @@ -202,7 +202,7 @@ EXAMPLES $ heroku pipelines:open my-pipeline ``` -_See code: [src/commands/pipelines/open.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/open.ts)_ +_See code: [src/commands/pipelines/open.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/open.ts)_ ## `heroku pipelines:promote` @@ -224,7 +224,7 @@ EXAMPLES $ heroku pipelines:promote -a my-app-staging ``` -_See code: [src/commands/pipelines/promote.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/promote.ts)_ +_See code: [src/commands/pipelines/promote.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/promote.ts)_ ## `heroku pipelines:remove` @@ -245,7 +245,7 @@ EXAMPLES $ heroku pipelines:remove -a my-app ``` -_See code: [src/commands/pipelines/remove.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/remove.ts)_ +_See code: [src/commands/pipelines/remove.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/remove.ts)_ ## `heroku pipelines:rename PIPELINE NAME` @@ -266,7 +266,7 @@ EXAMPLES $ heroku pipelines:rename my-pipeline new-pipeline-name ``` -_See code: [src/commands/pipelines/rename.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/rename.ts)_ +_See code: [src/commands/pipelines/rename.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/rename.ts)_ ## `heroku pipelines:setup [NAME] [REPO]` @@ -292,7 +292,7 @@ EXAMPLES $ heroku pipelines:setup my-pipeline githuborg/reponame -t my-team ``` -_See code: [src/commands/pipelines/setup.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/setup.ts)_ +_See code: [src/commands/pipelines/setup.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/setup.ts)_ ## `heroku pipelines:transfer OWNER` @@ -318,7 +318,7 @@ EXAMPLES $ heroku pipelines:transfer admin-team -p my-pipeline ``` -_See code: [src/commands/pipelines/transfer.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/transfer.ts)_ +_See code: [src/commands/pipelines/transfer.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/transfer.ts)_ ## `heroku pipelines:update` @@ -340,4 +340,4 @@ EXAMPLES $ heroku pipelines:update -s staging -a my-app ``` -_See code: [src/commands/pipelines/update.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/pipelines/update.ts)_ +_See code: [src/commands/pipelines/update.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/pipelines/update.ts)_ diff --git a/docs/plugins.md b/docs/plugins.md index 5237d04a7f..38c5fe6e4f 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -6,11 +6,11 @@ List installed plugins. * [`heroku plugins`](#heroku-plugins) * [`heroku plugins:install PLUGIN...`](#heroku-pluginsinstall-plugin) * [`heroku plugins:inspect PLUGIN...`](#heroku-pluginsinspect-plugin) -* [`heroku plugins:install PLUGIN...`](#heroku-pluginsinstall-plugin-1) +* [`heroku plugins:install PLUGIN...`](#heroku-pluginsinstall-plugin) * [`heroku plugins:link PLUGIN`](#heroku-pluginslink-plugin) * [`heroku plugins:uninstall PLUGIN...`](#heroku-pluginsuninstall-plugin) -* [`heroku plugins:uninstall PLUGIN...`](#heroku-pluginsuninstall-plugin-1) -* [`heroku plugins:uninstall PLUGIN...`](#heroku-pluginsuninstall-plugin-2) +* [`heroku plugins:uninstall PLUGIN...`](#heroku-pluginsuninstall-plugin) +* [`heroku plugins:uninstall PLUGIN...`](#heroku-pluginsuninstall-plugin) * [`heroku plugins:update`](#heroku-pluginsupdate) ## `heroku plugins` @@ -42,7 +42,7 @@ USAGE $ heroku plugins:add plugins:install PLUGIN... ARGUMENTS - PLUGIN Plugin to install. + PLUGIN... Plugin to install. FLAGS -f, --force Run yarn install with force flag. @@ -80,7 +80,7 @@ USAGE $ heroku plugins:inspect PLUGIN... ARGUMENTS - PLUGIN [default: .] Plugin to inspect. + PLUGIN... [default: .] Plugin to inspect. FLAGS -h, --help Show CLI help. @@ -107,7 +107,7 @@ USAGE $ heroku plugins:install PLUGIN... ARGUMENTS - PLUGIN Plugin to install. + PLUGIN... Plugin to install. FLAGS -f, --force Run yarn install with force flag. diff --git a/docs/ps.md b/docs/ps.md index 8f328d8943..ff668bd417 100644 --- a/docs/ps.md +++ b/docs/ps.md @@ -46,7 +46,7 @@ EXAMPLES run.1: up for 5m: bash ``` -_See code: [src/commands/ps/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/index.ts)_ +_See code: [src/commands/ps/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/index.ts)_ ## `heroku ps:autoscale:disable` @@ -64,7 +64,7 @@ DESCRIPTION disable web dyno autoscaling ``` -_See code: [src/commands/ps/autoscale/disable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/autoscale/disable.ts)_ +_See code: [src/commands/ps/autoscale/disable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/autoscale/disable.ts)_ ## `heroku ps:autoscale:enable` @@ -86,7 +86,7 @@ DESCRIPTION enable web dyno autoscaling ``` -_See code: [src/commands/ps/autoscale/enable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/autoscale/enable.ts)_ +_See code: [src/commands/ps/autoscale/enable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/autoscale/enable.ts)_ ## `heroku ps:copy FILE` @@ -235,7 +235,7 @@ EXAMPLES $ heroku ps:restart ``` -_See code: [src/commands/ps/restart.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/restart.ts)_ +_See code: [src/commands/ps/restart.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/restart.ts)_ ## `heroku ps:scale` @@ -268,7 +268,7 @@ EXAMPLES web=3:Standard-2X worker=1:Standard-1X ``` -_See code: [src/commands/ps/scale.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/scale.ts)_ +_See code: [src/commands/ps/scale.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/scale.ts)_ ## `heroku ps:socks` @@ -319,7 +319,7 @@ EXAMPLES $ heroku ps:stop run ``` -_See code: [src/commands/ps/stop.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/stop.ts)_ +_See code: [src/commands/ps/stop.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/stop.ts)_ ## `heroku ps:type` @@ -348,7 +348,7 @@ ALIASES $ heroku dyno:resize ``` -_See code: [src/commands/ps/type.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/type.ts)_ +_See code: [src/commands/ps/type.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/type.ts)_ ## `heroku ps:wait` @@ -369,4 +369,4 @@ DESCRIPTION wait for all dynos to be running latest version after a release ``` -_See code: [src/commands/ps/wait.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/ps/wait.ts)_ +_See code: [src/commands/ps/wait.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/ps/wait.ts)_ diff --git a/docs/redis.md b/docs/redis.md index 547c2a57f1..7315246047 100644 --- a/docs/redis.md +++ b/docs/redis.md @@ -58,7 +58,7 @@ EXAMPLES $ heroku redis:cli --app=my-app --confirm my-database ``` -_See code: [src/commands/redis/cli.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/cli.ts)_ +_See code: [src/commands/redis/cli.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/cli.ts)_ ## `heroku redis:credentials [DATABASE]` @@ -77,7 +77,7 @@ DESCRIPTION display credentials information ``` -_See code: [src/commands/redis/credentials.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/credentials.ts)_ +_See code: [src/commands/redis/credentials.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/credentials.ts)_ ## `heroku redis:info [DATABASE]` @@ -99,7 +99,7 @@ ALIASES $ heroku redis ``` -_See code: [src/commands/redis/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/info.ts)_ +_See code: [src/commands/redis/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/info.ts)_ ## `heroku redis:keyspace-notifications [DATABASE]` @@ -134,7 +134,7 @@ DESCRIPTION pass an empty string ('') to disable keyspace notifications ``` -_See code: [src/commands/redis/keyspace-notifications.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/keyspace-notifications.ts)_ +_See code: [src/commands/redis/keyspace-notifications.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/keyspace-notifications.ts)_ ## `heroku redis:maintenance [DATABASE]` @@ -156,7 +156,7 @@ DESCRIPTION Set or change the maintenance window for your Redis instance ``` -_See code: [src/commands/redis/maintenance.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/maintenance.ts)_ +_See code: [src/commands/redis/maintenance.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/maintenance.ts)_ ## `heroku redis:maxmemory [DATABASE]` @@ -185,7 +185,7 @@ DESCRIPTION volatile-ttl # only evicts keys with an expiry set and a short TTL ``` -_See code: [src/commands/redis/maxmemory.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/maxmemory.ts)_ +_See code: [src/commands/redis/maxmemory.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/maxmemory.ts)_ ## `heroku redis:promote [DATABASE]` @@ -203,7 +203,7 @@ DESCRIPTION sets DATABASE as your REDIS_URL ``` -_See code: [src/commands/redis/promote.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/promote.ts)_ +_See code: [src/commands/redis/promote.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/promote.ts)_ ## `heroku redis:stats-reset [DATABASE]` @@ -222,7 +222,7 @@ DESCRIPTION reset all stats covered by RESETSTAT (https://redis.io/commands/config-resetstat) ``` -_See code: [src/commands/redis/stats-reset.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/stats-reset.ts)_ +_See code: [src/commands/redis/stats-reset.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/stats-reset.ts)_ ## `heroku redis:timeout [DATABASE]` @@ -242,7 +242,7 @@ DESCRIPTION A value of zero means that connections will not be closed. ``` -_See code: [src/commands/redis/timeout.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/timeout.ts)_ +_See code: [src/commands/redis/timeout.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/timeout.ts)_ ## `heroku redis:upgrade [DATABASE]` @@ -262,7 +262,7 @@ DESCRIPTION perform in-place version upgrade ``` -_See code: [src/commands/redis/upgrade.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/upgrade.ts)_ +_See code: [src/commands/redis/upgrade.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/upgrade.ts)_ ## `heroku redis:wait [DATABASE]` @@ -281,4 +281,4 @@ DESCRIPTION wait for Redis instance to be available ``` -_See code: [src/commands/redis/wait.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/redis/wait.ts)_ +_See code: [src/commands/redis/wait.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/redis/wait.ts)_ diff --git a/docs/regions.md b/docs/regions.md index e4991065b7..1423ed73ac 100644 --- a/docs/regions.md +++ b/docs/regions.md @@ -22,4 +22,4 @@ DESCRIPTION list available regions for deployment ``` -_See code: [src/commands/regions.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/regions.ts)_ +_See code: [src/commands/regions.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/regions.ts)_ diff --git a/docs/releases.md b/docs/releases.md index 9df2952ca8..2e877050c0 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -33,7 +33,7 @@ EXAMPLES v3 Config add BAZ_QUX email@example.com 2015/11/17 17:37:41 (~ 1h ago) ``` -_See code: [src/commands/releases/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/releases/index.ts)_ +_See code: [src/commands/releases/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/releases/index.ts)_ ## `heroku releases:info [RELEASE]` @@ -53,7 +53,7 @@ DESCRIPTION view detailed information for a release ``` -_See code: [src/commands/releases/info.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/releases/info.ts)_ +_See code: [src/commands/releases/info.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/releases/info.ts)_ ## `heroku releases:output [RELEASE]` @@ -71,7 +71,7 @@ DESCRIPTION View the release command output ``` -_See code: [src/commands/releases/output.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/releases/output.ts)_ +_See code: [src/commands/releases/output.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/releases/output.ts)_ ## `heroku releases:rollback [RELEASE]` @@ -91,4 +91,4 @@ DESCRIPTION If RELEASE is not specified, it will roll back one release. ``` -_See code: [src/commands/releases/rollback.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/releases/rollback.ts)_ +_See code: [src/commands/releases/rollback.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/releases/rollback.ts)_ diff --git a/docs/reviewapps.md b/docs/reviewapps.md index 3e9e7eac3b..5e9ea74548 100644 --- a/docs/reviewapps.md +++ b/docs/reviewapps.md @@ -30,7 +30,7 @@ EXAMPLES $ heroku reviewapps:disable -p my-pipeline -a my-app --no-autodeploy ``` -_See code: [src/commands/reviewapps/disable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/reviewapps/disable.ts)_ +_See code: [src/commands/reviewapps/disable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/reviewapps/disable.ts)_ ## `heroku reviewapps:enable` @@ -55,4 +55,4 @@ EXAMPLES $ heroku reviewapps:enable -p my-pipeline -a my-app --autodeploy --autodestroy ``` -_See code: [src/commands/reviewapps/enable.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/reviewapps/enable.ts)_ +_See code: [src/commands/reviewapps/enable.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/reviewapps/enable.ts)_ diff --git a/docs/run.md b/docs/run.md index 3a64e72f63..24d6599a2c 100644 --- a/docs/run.md +++ b/docs/run.md @@ -35,7 +35,7 @@ EXAMPLES $ heroku run -s standard-2x -- myscript.sh -a arg1 -s arg2 ``` -_See code: [src/commands/run/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/run/index.ts)_ +_See code: [src/commands/run/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/run/index.ts)_ ## `heroku run:detached` @@ -60,4 +60,4 @@ EXAMPLES $ heroku run:detached ls ``` -_See code: [src/commands/run/detached.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/run/detached.ts)_ +_See code: [src/commands/run/detached.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/run/detached.ts)_ diff --git a/docs/sessions.md b/docs/sessions.md index 2d744fa400..5887ded364 100644 --- a/docs/sessions.md +++ b/docs/sessions.md @@ -21,7 +21,7 @@ DESCRIPTION list your OAuth sessions ``` -_See code: [src/commands/sessions/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/sessions/index.ts)_ +_See code: [src/commands/sessions/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/sessions/index.ts)_ ## `heroku sessions:destroy ID` @@ -35,4 +35,4 @@ DESCRIPTION delete (logout) OAuth session by ID ``` -_See code: [src/commands/sessions/destroy.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/sessions/destroy.ts)_ +_See code: [src/commands/sessions/destroy.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/sessions/destroy.ts)_ diff --git a/docs/spaces.md b/docs/spaces.md index 20d500bf65..7adddb4f62 100644 --- a/docs/spaces.md +++ b/docs/spaces.md @@ -43,7 +43,7 @@ DESCRIPTION list available spaces ``` -_See code: [src/commands/spaces/index.ts](https://github.com/heroku/cli/blob/v9.3.2/packages/cli/src/commands/spaces/index.ts)_ +_See code: [src/commands/spaces/index.ts](https://github.com/heroku/cli/blob/v10.0.0-alpha.0/packages/cli/src/commands/spaces/index.ts)_ ## `heroku spaces:create` @@ -51,14 +51,17 @@ create a new space ``` USAGE - $ heroku spaces:create [SPACE] -t [-s ] [--region ] [--cidr ] [--data-cidr ] + $ heroku spaces:create [SPACE] -t [--cidr ] [--data-cidr ] [--generation cedar|fir] + [--region ] [-s ] FLAGS - -s, --space= name of space to create - -t, --team= (required) team to use - --cidr= RFC-1918 CIDR the space will use - --data-cidr= RFC-1918 CIDR used by Heroku Data resources for the space - --region= region name + -s, --space= name of space to create + -t, --team= (required) team to use + --cidr= RFC-1918 CIDR the space will use + --data-cidr= RFC-1918 CIDR used by Heroku Data resources for the space + --generation=