From 5049282e2150b3124bdfa2ba1d07602cc0faf0c3 Mon Sep 17 00:00:00 2001 From: fireblocks_dx_team Date: Tue, 21 Apr 2026 10:00:27 +0000 Subject: [PATCH] Generated CLI #3663 --- .github/workflows/draft-release-from-pr.yml | 2 +- .github/workflows/publish.yml | 70 ++++---- CHANGELOG.md | 76 --------- package.json | 115 +++++++------ .../compliance/list-legal-entities.ts | 15 -- .../trading/get-trading-provider-by-id.ts | 2 +- src/commands/utxo-management/get-utxos.ts | 138 ++++++++++++++++ .../utxo-management/update-utxo-labels.ts | 77 +++++++++ .../get-resend-by-query-job-status.ts | 53 ++++++ .../resend-notifications-by-query.ts | 70 ++++++++ yarn.lock | 156 +++++++++--------- 11 files changed, 503 insertions(+), 271 deletions(-) delete mode 100644 CHANGELOG.md create mode 100644 src/commands/utxo-management/get-utxos.ts create mode 100644 src/commands/utxo-management/update-utxo-labels.ts create mode 100644 src/commands/webhooks-v2/get-resend-by-query-job-status.ts create mode 100644 src/commands/webhooks-v2/resend-notifications-by-query.ts diff --git a/.github/workflows/draft-release-from-pr.yml b/.github/workflows/draft-release-from-pr.yml index adad1cf..b2f1500 100644 --- a/.github/workflows/draft-release-from-pr.yml +++ b/.github/workflows/draft-release-from-pr.yml @@ -11,7 +11,7 @@ permissions: jobs: draft-release: - if: "!startsWith(github.event.head_commit.message, 'release ')" + if: "!startsWith(github.event.head_commit.message, 'dump new version ')" runs-on: ubuntu-latest steps: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index cb9798b..ec8b4b9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -65,7 +65,7 @@ jobs: npm --no-git-tag-version --allow-same-version version $tag auto-changelog git add . - git commit -m "release $tag" + git commit -m "dump new version $tag" git push - name: Move tag @@ -206,6 +206,20 @@ jobs: choco install nsis -y echo "C:\Program Files (x86)\NSIS" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + - name: Patch oclif NSIS template for long PATH support + shell: pwsh + run: | + $nsiTemplate = Get-ChildItem -Path node_modules -Recurse -Filter "*.nsi" -ErrorAction SilentlyContinue | Where-Object { $_.FullName -match "oclif" } | Select-Object -First 1 + if ($nsiTemplate) { + $content = Get-Content $nsiTemplate.FullName -Raw + $psCmd = 'nsExec::ExecToLog ''powershell -Command "[Environment]::SetEnvironmentVariable(''Path'', [Environment]::GetEnvironmentVariable(''Path'', ''Machine'') + '';$INSTDIR\bin'', ''Machine'')"''' + $content = $content -replace 'WriteRegExpandStr HKLM[^\n]*PATH[^\n]*', $psCmd + Set-Content $nsiTemplate.FullName $content + Write-Host "Patched $($nsiTemplate.FullName)" + } else { + Write-Host "NSI template not found, skipping patch" + } + - name: Pack Windows run: npx oclif pack win --targets win32-x64 @@ -303,12 +317,6 @@ jobs: private-key: ${{ secrets.CLI_GENERATION_APP_PRIVATE_KEY }} owner: fireblocks - - name: Download tarballs - uses: actions/download-artifact@v4 - with: - name: tarballs - path: dist/tarballs - - name: Update Homebrew formula env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} @@ -316,15 +324,16 @@ jobs: TAG=${{ github.event.release.tag_name }} VERSION="${TAG#v}" - ARM64_FILE=$(ls dist/tarballs/*darwin-arm64*.tar.gz | head -1) - X64_FILE=$(ls dist/tarballs/*darwin-x64*.tar.gz | head -1) + BASE_URL="https://github.com/fireblocks/fireblocks-cli/releases/download/${TAG}" - ARM64_SHA256=$(sha256sum "$ARM64_FILE" | awk '{print $1}') - X64_SHA256=$(sha256sum "$X64_FILE" | awk '{print $1}') + ARM64_FILENAME=$(gh release view "$TAG" --repo fireblocks/fireblocks-cli --json assets -q '.assets[].name | select(test("darwin-arm64.*\\.tar\\.gz$"))' | head -1) + X64_FILENAME=$(gh release view "$TAG" --repo fireblocks/fireblocks-cli --json assets -q '.assets[].name | select(test("darwin-x64.*\\.tar\\.gz$"))' | head -1) - BASE_URL="https://github.com/fireblocks/fireblocks-cli/releases/download/${TAG}" - ARM64_FILENAME=$(basename "$ARM64_FILE") - X64_FILENAME=$(basename "$X64_FILE") + curl -fLo arm64.tar.gz "${BASE_URL}/${ARM64_FILENAME}" + curl -fLo x64.tar.gz "${BASE_URL}/${X64_FILENAME}" + + ARM64_SHA256=$(sha256sum arm64.tar.gz | awk '{print $1}') + X64_SHA256=$(sha256sum x64.tar.gz | awk '{print $1}') git clone "https://x-access-token:${GH_TOKEN}@github.com/fireblocks/homebrew-fireblocks-cli.git" tap cd tap @@ -332,34 +341,11 @@ jobs: git config user.email "github-actions@github.com" git config user.name "GitHub Actions" - mkdir -p Formula - cat > Formula/fireblocks-cli.rb << FORMULA - class FireblocksCli < Formula - desc "Agent-first CLI for Fireblocks infrastructure" - homepage "https://github.com/fireblocks/fireblocks-cli" - version "${VERSION}" - license "MIT" - - on_macos do - if Hardware::CPU.arm? - url "${BASE_URL}/${ARM64_FILENAME}" - sha256 "${ARM64_SHA256}" - else - url "${BASE_URL}/${X64_FILENAME}" - sha256 "${X64_SHA256}" - end - end - - def install - libexec.install Dir["*"] - bin.write_exec_script libexec/"bin/fireblocks" - end - - test do - assert_match version.to_s, shell_output("#{bin}/fireblocks --version") - end - end - FORMULA + sed -i "s| version \"[^\"]*\"| version \"${VERSION}\"|" Formula/fireblocks-cli.rb + sed -i "s|url \"https://.*darwin-arm64.*\"|url \"${BASE_URL}/${ARM64_FILENAME}\"|" Formula/fireblocks-cli.rb + sed -i "/darwin-arm64/{n;s|sha256 \"[^\"]*\"|sha256 \"${ARM64_SHA256}\"|};" Formula/fireblocks-cli.rb + sed -i "s|url \"https://.*darwin-x64.*\"|url \"${BASE_URL}/${X64_FILENAME}\"|" Formula/fireblocks-cli.rb + sed -i "/darwin-x64/{n;s|sha256 \"[^\"]*\"|sha256 \"${X64_SHA256}\"|};" Formula/fireblocks-cli.rb git add Formula/fireblocks-cli.rb git commit -m "Update fireblocks-cli to ${VERSION}" diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index e9cbc12..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,76 +0,0 @@ -### Changelog - -All notable changes to this project will be documented in this file. Dates are displayed in UTC. - -Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - -#### [v1.0.2](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.1...v1.0.2) - -> 20 April 2026 - -- Generated CLI #4144 [`#25`](https://github.com/fireblocks/fireblocks-cli/pull/25) - -#### [v1.0.1](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.0...v1.0.1) - -> 20 April 2026 - -- Generated CLI #2861 [`#24`](https://github.com/fireblocks/fireblocks-cli/pull/24) -- release 1.0.1 [`1c80a47`](https://github.com/fireblocks/fireblocks-cli/commit/1c80a47fae69a42537915f8db5a9a4e1e7c7883d) - -### [v1.0.0](https://github.com/fireblocks/fireblocks-cli/compare/v0.0.7...v1.0.0) - -> 20 April 2026 - -- Generated CLI #2861 [`#23`](https://github.com/fireblocks/fireblocks-cli/pull/23) -- Update README.md [`#22`](https://github.com/fireblocks/fireblocks-cli/pull/22) -- Generated CLI #6187 [`#21`](https://github.com/fireblocks/fireblocks-cli/pull/21) -- release 1.0.0 [`1ceadf9`](https://github.com/fireblocks/fireblocks-cli/commit/1ceadf9200db313a26d7ded2c2e883a7b5a54ca8) -- release 1.0.0 [`166b754`](https://github.com/fireblocks/fireblocks-cli/commit/166b7548fafd1c4dd1f87fcde2b3764df75c9fe3) - -#### [v0.0.7](https://github.com/fireblocks/fireblocks-cli/compare/v0.0.6...v0.0.7) - -> 20 April 2026 - -- Generated CLI #3643 [`#20`](https://github.com/fireblocks/fireblocks-cli/pull/20) -- release 0.0.7 [`3856d2b`](https://github.com/fireblocks/fireblocks-cli/commit/3856d2bb87dc9cf83c6e6a6bc5af20e000dd86e7) - -#### [v0.0.6](https://github.com/fireblocks/fireblocks-cli/compare/v0.0.5...v0.0.6) - -> 20 April 2026 - -- Generated CLI #2002 [`#18`](https://github.com/fireblocks/fireblocks-cli/pull/18) -- release 0.0.6 [`a9f3754`](https://github.com/fireblocks/fireblocks-cli/commit/a9f375413fdb4c3582cc1e098154fd72e6196b13) - -#### [v0.0.5](https://github.com/fireblocks/fireblocks-cli/compare/v0.0.4...v0.0.5) - -> 20 April 2026 - -- Generated CLI #5855 [`#17`](https://github.com/fireblocks/fireblocks-cli/pull/17) -- release 0.0.5 [`c1cbb86`](https://github.com/fireblocks/fireblocks-cli/commit/c1cbb869c72d5233fc103bdd6117031b215fc2dd) - -#### [v0.0.4](https://github.com/fireblocks/fireblocks-cli/compare/v0.0.3...v0.0.4) - -> 19 April 2026 - -- Generated CLI #9358 [`#15`](https://github.com/fireblocks/fireblocks-cli/pull/15) - -#### [v0.0.3](https://github.com/fireblocks/fireblocks-cli/compare/v0.0.2...v0.0.3) - -> 19 April 2026 - -- Generated CLI #3678 [`#13`](https://github.com/fireblocks/fireblocks-cli/pull/13) - -#### [v0.0.2](https://github.com/fireblocks/fireblocks-cli/compare/v0.0.1...v0.0.2) - -> 19 April 2026 - -- Generated CLI #6127 [`#12`](https://github.com/fireblocks/fireblocks-cli/pull/12) - -#### v0.0.1 - -> 19 April 2026 - -- Generated CLI #212 [`#10`](https://github.com/fireblocks/fireblocks-cli/pull/10) -- Generated CLI #6774 [`#8`](https://github.com/fireblocks/fireblocks-cli/pull/8) -- Generated CLI #5771 [`#7`](https://github.com/fireblocks/fireblocks-cli/pull/7) -- Empty commit [`01a4e60`](https://github.com/fireblocks/fireblocks-cli/commit/01a4e60b38b583644d86f6220bb1751ce3594bb0) diff --git a/package.json b/package.json index cc342a6..74ea8d1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@fireblocks/fireblocks-cli", "description": "Agent-first CLI for Fireblocks infrastructure. Execute any Fireblocks API operation from the command line.", - "version": "1.0.2", + "version": "0.1.0", "author": "Fireblocks", "bin": { "fireblocks": "./bin/run.js" @@ -36,11 +36,7 @@ "./dist", "./oclif.manifest.json" ], - "keywords": [ - "oclif", - "fireblocks", - "cli" - ], + "keywords": ["oclif", "fireblocks", "cli"], "license": "MIT", "main": "dist/index.js", "type": "module", @@ -54,153 +50,156 @@ "topicSeparator": " ", "topics": { "vaults": { - "description": "Vaults operations" + "description": "Vaults operations" }, "embedded-wallets": { - "description": "Embedded Wallets operations" + "description": "Embedded Wallets operations" }, "workspace": { - "description": "Workspace operations" + "description": "Workspace operations" }, "exchange-accounts": { - "description": "Exchange accounts operations" + "description": "Exchange accounts operations" }, "fiat-accounts": { - "description": "Fiat accounts operations" + "description": "Fiat accounts operations" }, "connected-accounts": { - "description": "Connected Accounts operations (Beta)" + "description": "Connected Accounts operations (Beta)" }, "network-connections": { - "description": "Network connections operations" + "description": "Network connections operations" }, "internal-wallets": { - "description": "Internal wallets operations" + "description": "Internal wallets operations" }, "key-link": { - "description": "Key Link operations (Beta)" + "description": "Key Link operations (Beta)" }, "keys": { - "description": "Keys operations (Beta)" + "description": "Keys operations (Beta)" }, "external-wallets": { - "description": "External wallets operations" + "description": "External wallets operations" }, "contracts": { - "description": "Contracts operations" + "description": "Contracts operations" }, "blockchains-assets": { - "description": "Blockchains & assets operations" + "description": "Blockchains & assets operations" }, "transactions": { - "description": "Transactions operations" + "description": "Transactions operations" }, "payments-payout": { - "description": "Payments - Payout operations" + "description": "Payments - Payout operations" }, "payments-flows": { - "description": "Payments - Flows operations" + "description": "Payments - Flows operations" }, "gas-stations": { - "description": "Gas stations operations" + "description": "Gas stations operations" }, "user-groups": { - "description": "User groups operations (Beta)" + "description": "User groups operations (Beta)" }, "users": { - "description": "Users operations" + "description": "Users operations" }, "audit-logs": { - "description": "Audit Logs operations" + "description": "Audit Logs operations" }, "off-exchanges": { - "description": "Off exchanges operations" + "description": "Off exchanges operations" }, "webhooks": { - "description": "Webhooks operations" + "description": "Webhooks operations" }, "webhooks-v2": { - "description": "Webhooks V2 operations" + "description": "Webhooks V2 operations" }, "contract-templates": { - "description": "Contract Templates operations" + "description": "Contract Templates operations" }, "deployed-contracts": { - "description": "Deployed Contracts operations" + "description": "Deployed Contracts operations" }, "tokenization": { - "description": "Tokenization operations" + "description": "Tokenization operations" }, "contract-interactions": { - "description": "Contract Interactions operations" + "description": "Contract Interactions operations" }, "onchain-data": { - "description": "Onchain Data operations" + "description": "Onchain Data operations" }, "staking": { - "description": "Staking operations" + "description": "Staking operations" }, "earn": { - "description": "Earn operations (Beta)" + "description": "Earn operations (Beta)" }, "trading": { - "description": "Trading operations (Beta)" + "description": "Trading operations (Beta)" }, "admin-quorum": { - "description": "Admin Quorum operations" + "description": "Admin Quorum operations" }, "nfts": { - "description": "NFTs operations" + "description": "NFTs operations" }, "web3-connections": { - "description": "Web3 connections operations" + "description": "Web3 connections operations" }, "compliance": { - "description": "Compliance operations" + "description": "Compliance operations" }, "travel-rule": { - "description": "Travel Rule operations" + "description": "Travel Rule operations" }, "compliance-screening-configuration": { - "description": "Compliance Screening Configuration operations" + "description": "Compliance Screening Configuration operations" }, "trlink": { - "description": "TRLink operations" + "description": "TRLink operations" }, "ota": { - "description": "OTA operations (Beta)" + "description": "OTA operations (Beta)" }, "workspace-status": { - "description": "Workspace Status operations (Beta)" + "description": "Workspace Status operations (Beta)" }, "policy-editor": { - "description": "Policy Editor operations (Beta)" + "description": "Policy Editor operations (Beta)" }, "policy-editor-v2": { - "description": "Policy Editor V2 operations (Beta)" + "description": "Policy Editor V2 operations (Beta)" }, "console-user": { - "description": "Console User operations" + "description": "Console User operations" }, "api-user": { - "description": "Api User operations" + "description": "Api User operations" }, "reset-device": { - "description": "Reset device operations" + "description": "Reset device operations" }, "whitelist-ip-addresses": { - "description": "whitelist ip addresses operations" + "description": "whitelist ip addresses operations" }, "smart-transfer": { - "description": "Smart Transfer operations" + "description": "Smart Transfer operations" }, "tags": { - "description": "Tags operations" + "description": "Tags operations" }, "cosigners": { - "description": "Cosigners operations (Beta)" + "description": "Cosigners operations (Beta)" + }, + "utxo-management": { + "description": "UTXO Management operations (Beta)" } - }, +}, "plugins": [ "@oclif/plugin-help", "@oclif/plugin-autocomplete" @@ -218,7 +217,7 @@ "win32-x64" ], "macos": { - "identifier": "com.fireblocks.mycli" + "identifier": "com.fireblocks.mycli" } }, "scripts": { @@ -229,6 +228,6 @@ "pack:mac": "oclif pack macos", "pack:win": "oclif pack win --targets win32-x64", "pack:deb": "oclif pack deb" - }, +}, "types": "dist/index.d.ts" } diff --git a/src/commands/compliance/list-legal-entities.ts b/src/commands/compliance/list-legal-entities.ts index be33edc..92d84bf 100644 --- a/src/commands/compliance/list-legal-entities.ts +++ b/src/commands/compliance/list-legal-entities.ts @@ -19,15 +19,6 @@ export default class ListLegalEntities extends FireblocksBaseCommand { description: 'Maximum number of registrations to return. Ignored when \`vaultAccountId\` is provided.', default: 50, }), - 'sort-by': Flags.string({ - description: 'Field to sort results by. Ignored when \`vaultAccountId\` is provided.', - options: ['createdAt', 'updatedAt'], - }), - 'order': Flags.string({ - description: 'Sort order. Ignored when \`vaultAccountId\` is provided.', - default: 'DESC', - options: ['ASC', 'DESC'], - }), 'include-headers': Flags.boolean({ description: 'Include spec-defined response headers in output', default: false, @@ -56,12 +47,6 @@ export default class ListLegalEntities extends FireblocksBaseCommand { if (flags['page-size'] !== undefined && flags['page-size'] !== null) { queryParams['pageSize'] = String(flags['page-size']) } - if (flags['sort-by'] !== undefined && flags['sort-by'] !== null) { - queryParams['sortBy'] = String(flags['sort-by']) - } - if (flags['order'] !== undefined && flags['order'] !== null) { - queryParams['order'] = String(flags['order']) - } const result = await this.makeRequest( 'GET', diff --git a/src/commands/trading/get-trading-provider-by-id.ts b/src/commands/trading/get-trading-provider-by-id.ts index 8afa2fe..622c8dd 100644 --- a/src/commands/trading/get-trading-provider-by-id.ts +++ b/src/commands/trading/get-trading-provider-by-id.ts @@ -4,7 +4,7 @@ import {FireblocksBaseCommand} from '../../lib/base-command.js' export default class GetTradingProviderById extends FireblocksBaseCommand { static summary = 'Get trading provider by ID' - static description = 'Retrieve detailed information about a specific provider including its full manifest with order/quote requirements.\n\n**Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n\n**Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.\n\nFor detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).\n\nOperation ID: getTradingProviderById\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Trading/getTradingProviderById' + static description = 'Retrieve a single provider by ID.\n\n**Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n\n**Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.\n\nFor detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).\n\nOperation ID: getTradingProviderById\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Trading/getTradingProviderById' static enableJsonFlag = false diff --git a/src/commands/utxo-management/get-utxos.ts b/src/commands/utxo-management/get-utxos.ts new file mode 100644 index 0000000..756c64f --- /dev/null +++ b/src/commands/utxo-management/get-utxos.ts @@ -0,0 +1,138 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class GetUtxos extends FireblocksBaseCommand { + static summary = 'List unspent outputs (UTXOs)' + + static description = 'Returns a paginated list of unspent transaction outputs (UTXOs) for a UTXO-based asset in a vault account, with optional filters for labels, statuses, amounts, and more.\n**Note:** These endpoints are currently in beta and might be subject to changes.\nEndpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.\n\nOperation ID: getUtxos\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/UTXO%20Management/getUtxos' + + static enableJsonFlag = false + + static flags = { + 'vault-account-id': Flags.string({ + description: 'The ID of the vault account', + required: true, + }), + 'asset-id': Flags.string({ + description: 'The ID of the asset', + required: true, + }), + 'page-cursor': Flags.string({ + description: 'Cursor for the next page of results', + }), + 'page-size': Flags.integer({ + description: 'Number of results per page (max 250, default 50)', + default: 50, + }), + 'sort': Flags.string({ + description: 'Field to sort by', + options: ['AMOUNT', 'CONFIRMATIONS'], + }), + 'order': Flags.string({ + description: 'Sort order', + options: ['ASC', 'DESC'], + }), + 'include-all-labels': Flags.string({ + description: 'Only return UTXOs that have ALL of these labels (AND logic).', + }), + 'include-any-labels': Flags.string({ + description: 'Return UTXOs that have ANY of these labels (OR logic).', + }), + 'exclude-any-labels': Flags.string({ + description: 'Exclude UTXOs that have ANY of these labels.', + }), + 'include-statuses': Flags.string({ + description: 'Filter by UTXO statuses to include.', + }), + 'address': Flags.string({ + description: 'Filter by address', + }), + 'min-amount': Flags.string({ + description: 'Minimum amount filter', + }), + 'max-amount': Flags.string({ + description: 'Maximum amount filter', + }), + 'use-change': Flags.boolean({ + description: 'Include change outputs', + }), + 'use-coinbase': Flags.boolean({ + description: 'Include coinbase outputs', + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'GET' + static path = '/v1/utxo_management/{vaultAccountId}/{assetId}/unspent_outputs' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(GetUtxos) + + this.logToStderr('Warning: This command is in beta and may change in future releases.') + + + const headers: Record = {} + + const pathParams: Record = {} + pathParams['vaultAccountId'] = String(flags['vault-account-id']) + pathParams['assetId'] = String(flags['asset-id']) + + const queryParams: Record = {} + if (flags['page-cursor'] !== undefined && flags['page-cursor'] !== null) { + queryParams['pageCursor'] = String(flags['page-cursor']) + } + if (flags['page-size'] !== undefined && flags['page-size'] !== null) { + queryParams['pageSize'] = String(flags['page-size']) + } + if (flags['sort'] !== undefined && flags['sort'] !== null) { + queryParams['sort'] = String(flags['sort']) + } + if (flags['order'] !== undefined && flags['order'] !== null) { + queryParams['order'] = String(flags['order']) + } + if (flags['include-all-labels'] !== undefined && flags['include-all-labels'] !== null) { + queryParams['includeAllLabels'] = String(flags['include-all-labels']) + } + if (flags['include-any-labels'] !== undefined && flags['include-any-labels'] !== null) { + queryParams['includeAnyLabels'] = String(flags['include-any-labels']) + } + if (flags['exclude-any-labels'] !== undefined && flags['exclude-any-labels'] !== null) { + queryParams['excludeAnyLabels'] = String(flags['exclude-any-labels']) + } + if (flags['include-statuses'] !== undefined && flags['include-statuses'] !== null) { + queryParams['includeStatuses'] = String(flags['include-statuses']) + } + if (flags['address'] !== undefined && flags['address'] !== null) { + queryParams['address'] = String(flags['address']) + } + if (flags['min-amount'] !== undefined && flags['min-amount'] !== null) { + queryParams['minAmount'] = String(flags['min-amount']) + } + if (flags['max-amount'] !== undefined && flags['max-amount'] !== null) { + queryParams['maxAmount'] = String(flags['max-amount']) + } + if (flags['use-change'] !== undefined && flags['use-change'] !== null) { + queryParams['useChange'] = String(flags['use-change']) + } + if (flags['use-coinbase'] !== undefined && flags['use-coinbase'] !== null) { + queryParams['useCoinbase'] = String(flags['use-coinbase']) + } + + const result = await this.makeRequest( + 'GET', + '/v1/utxo_management/{vaultAccountId}/{assetId}/unspent_outputs', + { + headers, + pathParams, + queryParams, + }, + ) + + return result + } +} diff --git a/src/commands/utxo-management/update-utxo-labels.ts b/src/commands/utxo-management/update-utxo-labels.ts new file mode 100644 index 0000000..85c96d9 --- /dev/null +++ b/src/commands/utxo-management/update-utxo-labels.ts @@ -0,0 +1,77 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class UpdateUtxoLabels extends FireblocksBaseCommand { + static summary = 'Attach or detach labels to/from UTXOs' + + static description = 'Attach or detach labels to/from UTXOs in a vault account. Labels can be used for organizing and filtering UTXOs.\nLabels are applied additively — \`labelsToAttach\` adds to the existing label set and \`labelsToDetach\` removes from it. Neither operation replaces the full set.\n**Note:** These endpoints are currently in beta and might be subject to changes.\nEndpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.\n\nOperation ID: updateUtxoLabels\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/UTXO%20Management/updateUtxoLabels' + + static enableJsonFlag = false + + static flags = { + 'vault-account-id': Flags.string({ + description: 'The ID of the vault account', + required: true, + }), + 'asset-id': Flags.string({ + description: 'The ID of the asset', + required: true, + }), + data: Flags.string({ + description: 'JSON request body', + required: true, + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'PATCH' + static path = '/v1/utxo_management/{vaultAccountId}/{assetId}/labels' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(UpdateUtxoLabels) + + this.logToStderr('Warning: This command is in beta and may change in future releases.') + + let body: Record | undefined + if (flags.data) { + try { + const parsed = JSON.parse(flags.data) + if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) { + this.error('--data must be a JSON object (e.g., \'{"key": "value"}\')') + } + body = parsed as Record + } catch { + this.error('Invalid JSON in --data flag. Ensure the value is valid JSON.') + } + } + + const headers: Record = {} + if (flags['idempotency-key']) { + headers['Idempotency-Key'] = flags['idempotency-key'] + } + + const pathParams: Record = {} + pathParams['vaultAccountId'] = String(flags['vault-account-id']) + pathParams['assetId'] = String(flags['asset-id']) + + + await this.confirmOrAbort('PATCH', '/v1/utxo_management/{vaultAccountId}/{assetId}/labels') + + const result = await this.makeRequest( + 'PATCH', + '/v1/utxo_management/{vaultAccountId}/{assetId}/labels', + { + body, + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/webhooks-v2/get-resend-by-query-job-status.ts b/src/commands/webhooks-v2/get-resend-by-query-job-status.ts new file mode 100644 index 0000000..b0b6625 --- /dev/null +++ b/src/commands/webhooks-v2/get-resend-by-query-job-status.ts @@ -0,0 +1,53 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class GetResendByQueryJobStatus extends FireblocksBaseCommand { + static summary = 'Get resend by query job status' + + static description = 'Get the status of a resend by query job\n\nOperation ID: getResendByQueryJobStatus\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Webhooks%20V2/getResendByQueryJobStatus' + + static enableJsonFlag = false + + static flags = { + 'webhook-id': Flags.string({ + description: 'The ID of the webhook', + required: true, + }), + 'job-id': Flags.string({ + description: 'The ID of the resend job', + required: true, + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'GET' + static path = '/v1/webhooks/{webhookId}/notifications/resend_by_query/jobs/{jobId}' + static isBeta = false + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(GetResendByQueryJobStatus) + + + const headers: Record = {} + + const pathParams: Record = {} + pathParams['webhookId'] = String(flags['webhook-id']) + pathParams['jobId'] = String(flags['job-id']) + + + const result = await this.makeRequest( + 'GET', + '/v1/webhooks/{webhookId}/notifications/resend_by_query/jobs/{jobId}', + { + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/webhooks-v2/resend-notifications-by-query.ts b/src/commands/webhooks-v2/resend-notifications-by-query.ts new file mode 100644 index 0000000..44420af --- /dev/null +++ b/src/commands/webhooks-v2/resend-notifications-by-query.ts @@ -0,0 +1,70 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class ResendNotificationsByQuery extends FireblocksBaseCommand { + static summary = 'Resend notifications by query' + + static description = 'Resend notifications matching the given query filters (statuses, events, time range, resource ID)\n\nEndpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer.\n\nOperation ID: resendNotificationsByQuery\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Webhooks%20V2/resendNotificationsByQuery' + + static enableJsonFlag = false + + static flags = { + 'webhook-id': Flags.string({ + description: 'The ID of the webhook', + required: true, + }), + data: Flags.string({ + description: 'JSON request body', + required: true, + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'POST' + static path = '/v1/webhooks/{webhookId}/notifications/resend_by_query' + static isBeta = false + static responseHeaders: string[] = ["X-Request-ID","Location"] + + async run(): Promise { + const {flags} = await this.parse(ResendNotificationsByQuery) + + let body: Record | undefined + if (flags.data) { + try { + const parsed = JSON.parse(flags.data) + if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) { + this.error('--data must be a JSON object (e.g., \'{"key": "value"}\')') + } + body = parsed as Record + } catch { + this.error('Invalid JSON in --data flag. Ensure the value is valid JSON.') + } + } + + const headers: Record = {} + if (flags['idempotency-key']) { + headers['Idempotency-Key'] = flags['idempotency-key'] + } + + const pathParams: Record = {} + pathParams['webhookId'] = String(flags['webhook-id']) + + + await this.confirmOrAbort('POST', '/v1/webhooks/{webhookId}/notifications/resend_by_query') + + const result = await this.makeRequest( + 'POST', + '/v1/webhooks/{webhookId}/notifications/resend_by_query', + { + body, + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/yarn.lock b/yarn.lock index 76bbdb9..c34284b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -232,19 +232,19 @@ "@smithy/util-stream" "^4.5.21" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@^3.972.27": - version "3.972.27" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.27.tgz#f0ca03f66ea9eeedc4905c23c7e27b4bb2984e0c" - integrity sha512-Um26EsNSUfVUX0wUXnUA1W3wzKhVy6nviEElsh5lLZUYj9bk6DXOPnpte0gt+WHubcVfVsRk40bbm4KaroTEag== +"@aws-sdk/credential-provider-ini@^3.972.28": + version "3.972.28" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.28.tgz#6bc0d684c245914dca7a1a4dd3c2d84212833320" + integrity sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw== dependencies: "@aws-sdk/core" "^3.973.26" "@aws-sdk/credential-provider-env" "^3.972.24" "@aws-sdk/credential-provider-http" "^3.972.26" - "@aws-sdk/credential-provider-login" "^3.972.27" + "@aws-sdk/credential-provider-login" "^3.972.28" "@aws-sdk/credential-provider-process" "^3.972.24" - "@aws-sdk/credential-provider-sso" "^3.972.27" - "@aws-sdk/credential-provider-web-identity" "^3.972.27" - "@aws-sdk/nested-clients" "^3.996.17" + "@aws-sdk/credential-provider-sso" "^3.972.28" + "@aws-sdk/credential-provider-web-identity" "^3.972.28" + "@aws-sdk/nested-clients" "^3.996.18" "@aws-sdk/types" "^3.973.6" "@smithy/credential-provider-imds" "^4.2.12" "@smithy/property-provider" "^4.2.12" @@ -252,13 +252,13 @@ "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-login@^3.972.27": - version "3.972.27" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.27.tgz#a910688c418a32bf6b84abed839a9bb09fe4da7e" - integrity sha512-t3ehEtHomGZwg5Gixw4fYbYtG9JBnjfAjSDabxhPEu/KLLUp0BB37/APX7MSKXQhX6ZH7pseuACFJ19NrAkNdg== +"@aws-sdk/credential-provider-login@^3.972.28": + version "3.972.28" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.28.tgz#b2d47d4d43690d2d824edc94ce955d86dd3877f1" + integrity sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ== dependencies: "@aws-sdk/core" "^3.973.26" - "@aws-sdk/nested-clients" "^3.996.17" + "@aws-sdk/nested-clients" "^3.996.18" "@aws-sdk/types" "^3.973.6" "@smithy/property-provider" "^4.2.12" "@smithy/protocol-http" "^5.3.12" @@ -267,16 +267,16 @@ tslib "^2.6.2" "@aws-sdk/credential-provider-node@^3.972.21", "@aws-sdk/credential-provider-node@^3.972.24": - version "3.972.28" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.28.tgz#bf42b55edc650b31a9b7a440f79ff77202aaad20" - integrity sha512-rren+P6k5rShG5PX61iVi40kKdueyuMLBRTctQbyR5LooO9Ygr5L6R7ilG7RF1957NSH3KC3TU206fZuKwjSpQ== + version "3.972.29" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.29.tgz#4bcc991fcbf245f75494a119b3446a678a51e019" + integrity sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g== dependencies: "@aws-sdk/credential-provider-env" "^3.972.24" "@aws-sdk/credential-provider-http" "^3.972.26" - "@aws-sdk/credential-provider-ini" "^3.972.27" + "@aws-sdk/credential-provider-ini" "^3.972.28" "@aws-sdk/credential-provider-process" "^3.972.24" - "@aws-sdk/credential-provider-sso" "^3.972.27" - "@aws-sdk/credential-provider-web-identity" "^3.972.27" + "@aws-sdk/credential-provider-sso" "^3.972.28" + "@aws-sdk/credential-provider-web-identity" "^3.972.28" "@aws-sdk/types" "^3.973.6" "@smithy/credential-provider-imds" "^4.2.12" "@smithy/property-provider" "^4.2.12" @@ -296,27 +296,27 @@ "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@^3.972.27": - version "3.972.27" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.27.tgz#2d7682048a2027dff4dabe2dec8377c658a109fe" - integrity sha512-CWXeGjlbBuHcm9appZUgXKP2zHDyTti0/+gXpSFJ2J3CnSwf1KWjicjN0qG2ozkMH6blrrzMrimeIOEYNl238Q== +"@aws-sdk/credential-provider-sso@^3.972.28": + version "3.972.28" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.28.tgz#bf150bfb7e708d58f35bb2b5786b902df19fd92d" + integrity sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A== dependencies: "@aws-sdk/core" "^3.973.26" - "@aws-sdk/nested-clients" "^3.996.17" - "@aws-sdk/token-providers" "3.1020.0" + "@aws-sdk/nested-clients" "^3.996.18" + "@aws-sdk/token-providers" "3.1021.0" "@aws-sdk/types" "^3.973.6" "@smithy/property-provider" "^4.2.12" "@smithy/shared-ini-file-loader" "^4.4.7" "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@^3.972.27": - version "3.972.27" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.27.tgz#6eeed854b3fc3e17bd96ce0feb6f1a90280b6e6d" - integrity sha512-CUY4hQIFswdQNEsRGEzGBUKGMK5KpqmNDdu2ROMgI+45PLFS8H0y3Tm7kvM16uvvw3n1pVxk85tnRVUTgtaa1w== +"@aws-sdk/credential-provider-web-identity@^3.972.28": + version "3.972.28" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.28.tgz#27fc2a0fe0d2ff1460171d2a6912898c2235a7df" + integrity sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ== dependencies: "@aws-sdk/core" "^3.973.26" - "@aws-sdk/nested-clients" "^3.996.17" + "@aws-sdk/nested-clients" "^3.996.18" "@aws-sdk/types" "^3.973.6" "@smithy/property-provider" "^4.2.12" "@smithy/shared-ini-file-loader" "^4.4.7" @@ -434,10 +434,10 @@ "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@^3.972.21", "@aws-sdk/middleware-user-agent@^3.972.24", "@aws-sdk/middleware-user-agent@^3.972.27": - version "3.972.27" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.27.tgz#356669047041861c12b131711db9d562c022294d" - integrity sha512-TIRLO5UR2+FVUGmhYoAwVkKhcVzywEDX/5LzR9tjy1h8FQAXOtFg2IqgmwvxU7y933rkTn9rl6AdgcAUgQ1/Kg== +"@aws-sdk/middleware-user-agent@^3.972.21", "@aws-sdk/middleware-user-agent@^3.972.24", "@aws-sdk/middleware-user-agent@^3.972.28": + version "3.972.28" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.28.tgz#7f81d96d2fed0334ff601af62d77e14f67fb9d22" + integrity sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ== dependencies: "@aws-sdk/core" "^3.973.26" "@aws-sdk/types" "^3.973.6" @@ -445,13 +445,13 @@ "@smithy/core" "^3.23.13" "@smithy/protocol-http" "^5.3.12" "@smithy/types" "^4.13.1" - "@smithy/util-retry" "^4.2.12" + "@smithy/util-retry" "^4.2.13" tslib "^2.6.2" -"@aws-sdk/nested-clients@^3.996.17": - version "3.996.17" - resolved "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.17.tgz#f250ab33dc2723fa69e56daa9ef09fbeaafd88fe" - integrity sha512-7B0HIX0tEFmOSJuWzdHZj1WhMXSryM+h66h96ZkqSncoY7J6wq61KOu4Kr57b/YnJP3J/EeQYVFulgR281h+7A== +"@aws-sdk/nested-clients@^3.996.18": + version "3.996.18" + resolved "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.18.tgz#b5f2403bef822e1ac01d3f7f6f2849f23d94beb9" + integrity sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" @@ -459,12 +459,12 @@ "@aws-sdk/middleware-host-header" "^3.972.8" "@aws-sdk/middleware-logger" "^3.972.8" "@aws-sdk/middleware-recursion-detection" "^3.972.9" - "@aws-sdk/middleware-user-agent" "^3.972.27" + "@aws-sdk/middleware-user-agent" "^3.972.28" "@aws-sdk/region-config-resolver" "^3.972.10" "@aws-sdk/types" "^3.973.6" "@aws-sdk/util-endpoints" "^3.996.5" "@aws-sdk/util-user-agent-browser" "^3.972.8" - "@aws-sdk/util-user-agent-node" "^3.973.13" + "@aws-sdk/util-user-agent-node" "^3.973.14" "@smithy/config-resolver" "^4.4.13" "@smithy/core" "^3.23.13" "@smithy/fetch-http-handler" "^5.3.15" @@ -472,7 +472,7 @@ "@smithy/invalid-dependency" "^4.2.12" "@smithy/middleware-content-length" "^4.2.12" "@smithy/middleware-endpoint" "^4.4.28" - "@smithy/middleware-retry" "^4.4.45" + "@smithy/middleware-retry" "^4.4.46" "@smithy/middleware-serde" "^4.2.16" "@smithy/middleware-stack" "^4.2.12" "@smithy/node-config-provider" "^4.3.12" @@ -488,7 +488,7 @@ "@smithy/util-defaults-mode-node" "^4.2.48" "@smithy/util-endpoints" "^3.3.3" "@smithy/util-middleware" "^4.2.12" - "@smithy/util-retry" "^4.2.12" + "@smithy/util-retry" "^4.2.13" "@smithy/util-utf8" "^4.2.2" tslib "^2.6.2" @@ -515,13 +515,13 @@ "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@aws-sdk/token-providers@3.1020.0": - version "3.1020.0" - resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1020.0.tgz#4df14632e6d8cabf9c061866d04507202acb2af4" - integrity sha512-T61KA/VKl0zVUubdxigr1ut7SEpwE1/4CIKb14JDLyTAOne2yWKtQE1dDCSHl0UqrZNwW/bTt+EBHfQbslZJdw== +"@aws-sdk/token-providers@3.1021.0": + version "3.1021.0" + resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1021.0.tgz#90905a8def49f90e54a73849e25ad4bcc4dbea2a" + integrity sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA== dependencies: "@aws-sdk/core" "^3.973.26" - "@aws-sdk/nested-clients" "^3.996.17" + "@aws-sdk/nested-clients" "^3.996.18" "@aws-sdk/types" "^3.973.6" "@smithy/property-provider" "^4.2.12" "@smithy/shared-ini-file-loader" "^4.4.7" @@ -571,12 +571,12 @@ bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@^3.973.10", "@aws-sdk/util-user-agent-node@^3.973.13", "@aws-sdk/util-user-agent-node@^3.973.7": - version "3.973.13" - resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.13.tgz#0f825e75900569606c25cfc2dc4cceb585462664" - integrity sha512-s1dCJ0J9WU9UPkT3FFqhKTSquYTkqWXGRaapHFyWwwJH86ZussewhNST5R5TwXVL1VSHq4aJVl9fWK+svaRVCQ== +"@aws-sdk/util-user-agent-node@^3.973.10", "@aws-sdk/util-user-agent-node@^3.973.14", "@aws-sdk/util-user-agent-node@^3.973.7": + version "3.973.14" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.14.tgz#955e50e8222c9861fdf8f273ba8ff8e28ba04a5c" + integrity sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw== dependencies: - "@aws-sdk/middleware-user-agent" "^3.972.27" + "@aws-sdk/middleware-user-agent" "^3.972.28" "@aws-sdk/types" "^3.973.6" "@smithy/node-config-provider" "^4.3.12" "@smithy/types" "^4.13.1" @@ -1819,10 +1819,10 @@ "@smithy/util-middleware" "^4.2.12" tslib "^2.6.2" -"@smithy/middleware-retry@^4.4.42", "@smithy/middleware-retry@^4.4.44", "@smithy/middleware-retry@^4.4.45": - version "4.4.45" - resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.45.tgz#550d3828ca9b3ab4554138e0ecb7c1768de73cc7" - integrity sha512-td1PxpwDIaw5/oP/xIRxBGxJKoF1L4DBAwbZ8wjMuXBYOP/r2ZE/Ocou+mBHx/yk9knFEtDBwhSrYVn+Mz4pHw== +"@smithy/middleware-retry@^4.4.42", "@smithy/middleware-retry@^4.4.44", "@smithy/middleware-retry@^4.4.46": + version "4.4.46" + resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.46.tgz#dbbf0af08c1bd03fe2afa09a6cfb7a9056387ce6" + integrity sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow== dependencies: "@smithy/node-config-provider" "^4.3.12" "@smithy/protocol-http" "^5.3.12" @@ -1830,7 +1830,7 @@ "@smithy/smithy-client" "^4.12.8" "@smithy/types" "^4.13.1" "@smithy/util-middleware" "^4.2.12" - "@smithy/util-retry" "^4.2.12" + "@smithy/util-retry" "^4.2.13" "@smithy/uuid" "^1.1.2" tslib "^2.6.2" @@ -2056,10 +2056,10 @@ "@smithy/types" "^4.13.1" tslib "^2.6.2" -"@smithy/util-retry@^4.2.12": - version "4.2.12" - resolved "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.12.tgz#be4805afee530f95b00a6ba771e18cb4c324f822" - integrity sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ== +"@smithy/util-retry@^4.2.12", "@smithy/util-retry@^4.2.13": + version "4.2.13" + resolved "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.13.tgz#ad816d6ddf197095d188e9ef56664fbd392a39c9" + integrity sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ== dependencies: "@smithy/service-error-classification" "^4.2.12" "@smithy/types" "^4.13.1" @@ -2415,10 +2415,10 @@ balanced-match@^4.0.2: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== -baseline-browser-mapping@^2.9.0: - version "2.10.12" - resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.12.tgz#60f9e2172e962839ac313d4e0c8e182090fb6621" - integrity sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ== +baseline-browser-mapping@^2.10.12: + version "2.10.13" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz#5a154cc4589193015a274e3d18319b0d76b9224e" + integrity sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw== bowser@^2.11.0: version "2.14.1" @@ -2455,15 +2455,15 @@ braces@^3.0.3: fill-range "^7.1.1" browserslist@^4.24.0: - version "4.28.1" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" - integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + version "4.28.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" + integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== dependencies: - baseline-browser-mapping "^2.9.0" - caniuse-lite "^1.0.30001759" - electron-to-chromium "^1.5.263" - node-releases "^2.0.27" - update-browserslist-db "^1.2.0" + baseline-browser-mapping "^2.10.12" + caniuse-lite "^1.0.30001782" + electron-to-chromium "^1.5.328" + node-releases "^2.0.36" + update-browserslist-db "^1.2.3" bs-logger@^0.2.6: version "0.2.6" @@ -2525,7 +2525,7 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001759: +caniuse-lite@^1.0.30001782: version "1.0.30001782" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001782.tgz#f2b8617f998bc134701c54ce9748af44f646e062" integrity sha512-dZcaJLJeDMh4rELYFw1tvSn1bhZWYFOt468FcbHHxx/Z/dFidd1I6ciyFdi3iwfQCyOjqo9upF6lGQYtMiJWxw== @@ -2766,7 +2766,7 @@ ejs@^3.1.10: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.263: +electron-to-chromium@^1.5.328: version "1.5.329" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.329.tgz#3b0b10ed570ac5625e365e8fbfd412e0b1615c69" integrity sha512-/4t+AS1l4S3ZC0Ja7PHFIWeBIxGA3QGqV8/yKsP36v7NcyUCl+bIcmw6s5zVuMIECWwBrAK/6QLzTmbJChBboQ== @@ -3911,7 +3911,7 @@ node-int64@^0.4.0: resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.27: +node-releases@^2.0.36: version "2.0.36" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d" integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== @@ -4579,7 +4579,7 @@ universalify@^0.1.0: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -update-browserslist-db@^1.2.0: +update-browserslist-db@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==