From cba6779cddc0c036322404d1d273f219f26b5d72 Mon Sep 17 00:00:00 2001 From: fireblocks_dx_team Date: Wed, 23 Sep 2026 10:25:13 +0000 Subject: [PATCH] Generated CLI #2874611366 --- CHANGELOG.md | 163 ------------------ package.json | 131 +++++++------- src/commands/approvals/approve-approval.ts | 72 ++++++++ src/commands/approvals/create-approval-key.ts | 72 ++++++++ src/commands/approvals/delete-approval-key.ts | 60 +++++++ src/commands/approvals/get-approval-keys.ts | 65 +++++++ .../get-screening-result.ts | 50 ++++++ .../compliance-orchestrator/get-workflow.ts | 50 ++++++ .../trigger-screening.ts | 65 +++++++ .../update-workflow-status.ts | 72 ++++++++ src/commands/webhooks-v2/get-mtls-csr.ts | 16 +- .../webhooks-v2/update-webhook-oauth.ts | 2 +- yarn.lock | 84 ++++----- 13 files changed, 627 insertions(+), 275 deletions(-) delete mode 100644 CHANGELOG.md create mode 100644 src/commands/approvals/approve-approval.ts create mode 100644 src/commands/approvals/create-approval-key.ts create mode 100644 src/commands/approvals/delete-approval-key.ts create mode 100644 src/commands/approvals/get-approval-keys.ts create mode 100644 src/commands/compliance-orchestrator/get-screening-result.ts create mode 100644 src/commands/compliance-orchestrator/get-workflow.ts create mode 100644 src/commands/compliance-orchestrator/trigger-screening.ts create mode 100644 src/commands/compliance-orchestrator/update-workflow-status.ts diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 9d44959..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,163 +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). - -### [v11.0.0](https://github.com/fireblocks/fireblocks-cli/compare/v4.0.0...v11.0.0) - -> 15 September 2026 - -- Generated CLI #2850019650 [`#55`](https://github.com/fireblocks/fireblocks-cli/pull/55) - -### [v4.0.0](https://github.com/fireblocks/fireblocks-cli/compare/v3.0.0...v4.0.0) - -> 23 July 2026 - -- Generated CLI #7149 [`#40`](https://github.com/fireblocks/fireblocks-cli/pull/40) -- dump new version 4.0.0 [`1aa2ca3`](https://github.com/fireblocks/fireblocks-cli/commit/1aa2ca3a8d6ea307c855d63e9f33199326b0c60c) - -### [v3.0.0](https://github.com/fireblocks/fireblocks-cli/compare/v2.0.0...v3.0.0) - -> 1 July 2026 - -- Generated CLI #6819 [`#39`](https://github.com/fireblocks/fireblocks-cli/pull/39) -- dump new version 3.0.0 [`a556639`](https://github.com/fireblocks/fireblocks-cli/commit/a5566392ce612a4268ba8aed4322facba0a31e2a) - -### [v2.0.0](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.10...v2.0.0) - -> 28 June 2026 - -- Generated CLI #2689 [`#38`](https://github.com/fireblocks/fireblocks-cli/pull/38) -- dump new version 2.0.0 [`ecdb26e`](https://github.com/fireblocks/fireblocks-cli/commit/ecdb26e807b4f3b479654e2247592079374ea021) - -#### [v1.0.10](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.9...v1.0.10) - -> 11 June 2026 - -- Generated CLI #6460 [`#37`](https://github.com/fireblocks/fireblocks-cli/pull/37) -- dump new version 1.0.10 [`740a28d`](https://github.com/fireblocks/fireblocks-cli/commit/740a28da987ce3998ad606eda826abe80a53195f) - -#### [v1.0.9](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.8...v1.0.9) - -> 2 June 2026 - -- Generated CLI #3180 [`#36`](https://github.com/fireblocks/fireblocks-cli/pull/36) -- dump new version 1.0.9 [`aa7f393`](https://github.com/fireblocks/fireblocks-cli/commit/aa7f393c314ad9046f06751b3bebc40ff242773b) - -#### [v1.0.8](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.7...v1.0.8) - -> 7 May 2026 - -- Generated CLI #3457 [`#35`](https://github.com/fireblocks/fireblocks-cli/pull/35) -- Update README.md [`#34`](https://github.com/fireblocks/fireblocks-cli/pull/34) -- dump new version 1.0.8 [`e4c99fa`](https://github.com/fireblocks/fireblocks-cli/commit/e4c99fa60cc6e0b9777fd471f4af40dcc4b136bc) - -#### [v1.0.7](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.6...v1.0.7) - -> 28 April 2026 - -- Generated CLI #3601 [`#33`](https://github.com/fireblocks/fireblocks-cli/pull/33) -- dump new version 1.0.7 [`d306029`](https://github.com/fireblocks/fireblocks-cli/commit/d3060292702bc3605cb1243d1fcf7c821ec02fdf) - -#### [v1.0.6](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.5...v1.0.6) - -> 27 April 2026 - -- Generated CLI #628 [`#32`](https://github.com/fireblocks/fireblocks-cli/pull/32) -- dump new version 1.0.6 [`b5dab36`](https://github.com/fireblocks/fireblocks-cli/commit/b5dab369afd7a1b57ee5b411c3b5ee039bf212b7) - -#### [v1.0.5](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.4...v1.0.5) - -> 21 April 2026 - -- Generated CLI #4515 [`#29`](https://github.com/fireblocks/fireblocks-cli/pull/29) -- dump new version 1.0.5 [`f038846`](https://github.com/fireblocks/fireblocks-cli/commit/f0388467198de85fd07ee4af6643f13a4c700777) - -#### [v1.0.4](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.3...v1.0.4) - -> 21 April 2026 - -- Generated CLI #6469 [`#28`](https://github.com/fireblocks/fireblocks-cli/pull/28) -- dump new version 1.0.4 [`445f047`](https://github.com/fireblocks/fireblocks-cli/commit/445f047a26c2b1d62c5d084d9ab74c6dd70ff7a1) - -#### [v1.0.3](https://github.com/fireblocks/fireblocks-cli/compare/v1.0.2...v1.0.3) - -> 21 April 2026 - -- Generated CLI #4147 [`#27`](https://github.com/fireblocks/fireblocks-cli/pull/27) -- Generated CLI #3663 [`#26`](https://github.com/fireblocks/fireblocks-cli/pull/26) -- dump new version 1.0.3 [`3d5771d`](https://github.com/fireblocks/fireblocks-cli/commit/3d5771dfc96d51f18bab1dea20f2f810e84cfc8b) -- dump new version 1.0.3 [`653c2b4`](https://github.com/fireblocks/fireblocks-cli/commit/653c2b47fbed3b3c6e0e3e264c3fd21db048702e) - -#### [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) -- release 1.0.2 [`9416c27`](https://github.com/fireblocks/fireblocks-cli/commit/9416c27d05c71a2894682e94f9b93b3e10a54c80) - -#### [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 eac3787..746cb61 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": "11.0.0", + "version": "0.1.0", "author": "Fireblocks", "repository": { "type": "git", @@ -40,11 +40,7 @@ "./dist", "./oclif.manifest.json" ], - "keywords": [ - "oclif", - "fireblocks", - "cli" - ], + "keywords": ["oclif", "fireblocks", "cli"], "license": "MIT", "main": "dist/index.js", "type": "module", @@ -58,177 +54,180 @@ "topicSeparator": " ", "topics": { "admin-quorum": { - "description": "Admin Quorum operations" + "description": "Admin Quorum operations" }, "api-user": { - "description": "Api User operations" + "description": "Api User operations" }, "approvals": { - "description": "Approvals operations (Beta)" + "description": "Approvals operations (Beta)" }, "audit-logs": { - "description": "Audit Logs operations" + "description": "Audit Logs operations" }, "blockchain-link": { - "description": "Blockchain link operations (Beta)" + "description": "Blockchain link operations (Beta)" }, "blockchains-assets": { - "description": "Blockchains & assets operations" + "description": "Blockchains & assets operations" }, "canton": { - "description": "Canton operations (Beta)" + "description": "Canton operations (Beta)" }, "compliance": { - "description": "Compliance operations" + "description": "Compliance operations" }, "compliance-screening-configuration": { - "description": "Compliance Screening Configuration operations" + "description": "Compliance Screening Configuration operations" + }, + "compliance-orchestrator": { + "description": "Compliance Orchestrator operations (Beta)" }, "connected-accounts": { - "description": "Connected Accounts operations (Beta)" + "description": "Connected Accounts operations (Beta)" }, "console-user": { - "description": "Console User operations" + "description": "Console User operations" }, "contacts": { - "description": "Contacts operations" + "description": "Contacts operations" }, "contract-interactions": { - "description": "Contract Interactions operations" + "description": "Contract Interactions operations" }, "contract-templates": { - "description": "Contract Templates operations" + "description": "Contract Templates operations" }, "contracts": { - "description": "Contracts operations" + "description": "Contracts operations" }, "cosigners": { - "description": "Cosigners operations (Beta)" + "description": "Cosigners operations (Beta)" }, "deployed-contracts": { - "description": "Deployed Contracts operations" + "description": "Deployed Contracts operations" }, "earn": { - "description": "Earn operations" + "description": "Earn operations" }, "embedded-wallets": { - "description": "Embedded Wallets operations" + "description": "Embedded Wallets operations" }, "exchange-accounts": { - "description": "Exchange accounts operations" + "description": "Exchange accounts operations" }, "external-wallets": { - "description": "External wallets operations" + "description": "External wallets operations" }, "fiat-accounts": { - "description": "Fiat accounts operations" + "description": "Fiat accounts operations" }, "gas-stations": { - "description": "Gas stations operations" + "description": "Gas stations operations" }, "genie": { - "description": "Genie operations (Beta)" + "description": "Genie operations (Beta)" }, "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)" }, "network-connections": { - "description": "Network connections operations" + "description": "Network connections operations" }, "nfts": { - "description": "NFTs operations" + "description": "NFTs operations" }, "off-exchanges": { - "description": "Off exchanges operations" + "description": "Off exchanges operations" }, "onchain-data": { - "description": "Onchain Data operations" + "description": "Onchain Data operations" }, "ota": { - "description": "OTA operations (Beta)" + "description": "OTA operations (Beta)" }, "payments-flows": { - "description": "Payments - Flows operations" + "description": "Payments - Flows operations" }, "payments-payout": { - "description": "Payments - Payout operations" + "description": "Payments - Payout operations" }, "policy-editor": { - "description": "Policy Editor operations (Beta)" + "description": "Policy Editor operations (Beta)" }, "policy-editor-v2": { - "description": "Policy Editor V2 operations" + "description": "Policy Editor V2 operations" }, "reports": { - "description": "Reports operations (Beta)" + "description": "Reports operations (Beta)" }, "reset-device": { - "description": "Reset device operations" + "description": "Reset device operations" }, "security-posture-management": { - "description": "Security Posture Management operations" + "description": "Security Posture Management operations" }, "smart-transfer": { - "description": "Smart Transfer operations" + "description": "Smart Transfer operations" }, "staking": { - "description": "Staking operations" + "description": "Staking operations" }, "tags": { - "description": "Tags operations" + "description": "Tags operations" }, "tokenization": { - "description": "Tokenization operations" + "description": "Tokenization operations" }, "trading": { - "description": "Trading operations (Beta)" + "description": "Trading operations (Beta)" }, "transactions": { - "description": "Transactions operations" + "description": "Transactions operations" }, "travel-rule": { - "description": "Travel Rule operations" + "description": "Travel Rule operations" }, "trlink": { - "description": "TRLink operations" + "description": "TRLink operations" }, "user-groups": { - "description": "User groups operations (Beta)" + "description": "User groups operations (Beta)" }, "users": { - "description": "Users operations" + "description": "Users operations" }, "utxo-management": { - "description": "UTXO Management operations (Beta)" + "description": "UTXO Management operations (Beta)" }, "vaults": { - "description": "Vaults operations" + "description": "Vaults operations" }, "web3-connections": { - "description": "Web3 connections operations" + "description": "Web3 connections operations" }, "webhooks": { - "description": "Webhooks operations" + "description": "Webhooks operations" }, "webhooks-v2": { - "description": "Webhooks V2 operations" + "description": "Webhooks V2 operations" }, "whitelist-ip-addresses": { - "description": "whitelist ip addresses operations" + "description": "whitelist ip addresses operations" }, "workspace": { - "description": "Workspace operations" + "description": "Workspace operations" }, "workspace-status": { - "description": "Workspace Status operations (Beta)" + "description": "Workspace Status operations (Beta)" } - }, +}, "plugins": [ "@oclif/plugin-help", "@oclif/plugin-autocomplete" @@ -246,7 +245,7 @@ "win32-x64" ], "macos": { - "identifier": "com.fireblocks.mycli" + "identifier": "com.fireblocks.mycli" } }, "scripts": { @@ -257,6 +256,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/approvals/approve-approval.ts b/src/commands/approvals/approve-approval.ts new file mode 100644 index 0000000..cafe7a0 --- /dev/null +++ b/src/commands/approvals/approve-approval.ts @@ -0,0 +1,72 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class ApproveApproval extends FireblocksBaseCommand { + static summary = 'Approve an approval request' + + static description = 'Approve a pending approval request as the authenticated API user. The caller signs the request\'s signable data with the private key of a registered approval API key and submits the base64url-encoded signature, optionally with the key ID. The server verifies the signature against the registered public key — using the given key ID, or matching against all of the user\'s registered keys when the key ID is omitted — and advances the approval quorum.\n\nEndpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.\n\nOperation ID: approveApproval\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Approvals/approveApproval' + + static enableJsonFlag = false + + static flags = { + 'request-id': Flags.string({ + description: 'The approval request ID.', + 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/approvals/{requestId}/approve' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(ApproveApproval) + + 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['requestId'] = String(flags['request-id']) + + + await this.confirmOrAbort('POST', '/v1/approvals/{requestId}/approve') + + const result = await this.makeRequest( + 'POST', + '/v1/approvals/{requestId}/approve', + { + body, + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/approvals/create-approval-key.ts b/src/commands/approvals/create-approval-key.ts new file mode 100644 index 0000000..4954c13 --- /dev/null +++ b/src/commands/approvals/create-approval-key.ts @@ -0,0 +1,72 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class CreateApprovalKey extends FireblocksBaseCommand { + static summary = 'Register an approval key' + + static description = 'Register an approval public key for an API user, used to sign approval requests. Up to 2 active keys are supported per API user. Returns the server-generated key ID used for deletion.\n\nThe \`userId\` must be the authenticated API user\'s own ID. Registering a key for another user is not supported and is rejected.\n\nEndpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.\n\nOperation ID: createApprovalKey\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Approvals/createApprovalKey' + + static enableJsonFlag = false + + static flags = { + 'user-id': Flags.string({ + description: 'The ID of the API user to register the approval key for.', + 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/management/api_users/{userId}/approval_keys' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(CreateApprovalKey) + + 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['userId'] = String(flags['user-id']) + + + await this.confirmOrAbort('POST', '/v1/management/api_users/{userId}/approval_keys') + + const result = await this.makeRequest( + 'POST', + '/v1/management/api_users/{userId}/approval_keys', + { + body, + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/approvals/delete-approval-key.ts b/src/commands/approvals/delete-approval-key.ts new file mode 100644 index 0000000..6abb151 --- /dev/null +++ b/src/commands/approvals/delete-approval-key.ts @@ -0,0 +1,60 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class DeleteApprovalKey extends FireblocksBaseCommand { + static summary = 'Delete an approval key' + + static description = 'Delete (revoke) an approval public key for the specified API user. Revoking the last key disables the API user\'s ability to sign approvals.\n\nEndpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin.\n\nOperation ID: deleteApprovalKey\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Approvals/deleteApprovalKey' + + static enableJsonFlag = false + + static flags = { + 'user-id': Flags.string({ + description: 'The ID of the API user whose approval key to delete.', + required: true, + }), + 'key-id': Flags.string({ + description: 'The ID of the approval key to delete.', + required: true, + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'DELETE' + static path = '/v1/management/api_users/{userId}/approval_keys/{keyId}' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(DeleteApprovalKey) + + this.logToStderr('Warning: This command is in beta and may change in future releases.') + + + const headers: Record = {} + if (flags['idempotency-key']) { + headers['Idempotency-Key'] = flags['idempotency-key'] + } + + const pathParams: Record = {} + pathParams['userId'] = String(flags['user-id']) + pathParams['keyId'] = String(flags['key-id']) + + + await this.confirmOrAbort('DELETE', '/v1/management/api_users/{userId}/approval_keys/{keyId}') + + const result = await this.makeRequest( + 'DELETE', + '/v1/management/api_users/{userId}/approval_keys/{keyId}', + { + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/approvals/get-approval-keys.ts b/src/commands/approvals/get-approval-keys.ts new file mode 100644 index 0000000..2ed4356 --- /dev/null +++ b/src/commands/approvals/get-approval-keys.ts @@ -0,0 +1,65 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class GetApprovalKeys extends FireblocksBaseCommand { + static summary = 'List approval keys' + + static description = 'List the approval public keys registered for the specified API user.\n\nEndpoint Permission: Owner, Admin, Non-Signing Admin, Approver, Signer, Security Admin, Security Auditor.\n\nOperation ID: getApprovalKeys\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Approvals/getApprovalKeys' + + static enableJsonFlag = false + + static flags = { + 'user-id': Flags.string({ + description: 'The ID of the API user whose approval keys to list.', + required: true, + }), + 'page-size': Flags.integer({ + description: 'Number of results per page. Maximum 15. Defaults to 10.', + default: 10, + }), + 'page-cursor': Flags.string({ + description: 'Cursor returned from the previous response (the \`next\` field) to fetch the next page.', + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'GET' + static path = '/v1/management/api_users/{userId}/approval_keys' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(GetApprovalKeys) + + this.logToStderr('Warning: This command is in beta and may change in future releases.') + + + const headers: Record = {} + + const pathParams: Record = {} + pathParams['userId'] = String(flags['user-id']) + + const queryParams: Record = {} + if (flags['page-size'] !== undefined && flags['page-size'] !== null) { + queryParams['pageSize'] = String(flags['page-size']) + } + if (flags['page-cursor'] !== undefined && flags['page-cursor'] !== null) { + queryParams['pageCursor'] = String(flags['page-cursor']) + } + + const result = await this.makeRequest( + 'GET', + '/v1/management/api_users/{userId}/approval_keys', + { + headers, + pathParams, + queryParams, + }, + ) + + return result + } +} diff --git a/src/commands/compliance-orchestrator/get-screening-result.ts b/src/commands/compliance-orchestrator/get-screening-result.ts new file mode 100644 index 0000000..c1ee173 --- /dev/null +++ b/src/commands/compliance-orchestrator/get-screening-result.ts @@ -0,0 +1,50 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class GetScreeningResult extends FireblocksBaseCommand { + static summary = 'Get a Compliance Orchestrator screening\'s result' + + static description = 'Returns the result of a screening started by \`POST /v1/compliance/orchestrator/screenings\`, with a result per workflow step and an audit log. Safe to poll: a screening still in flight reports \`PENDING\` or \`RUNNING\`. Only screenings owned by the requesting tenant are returned.\n\nOperation ID: getScreeningResult\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Compliance%20Orchestrator/getScreeningResult' + + static enableJsonFlag = false + + static flags = { + 'screening-id': Flags.string({ + description: 'The screening\'s identifier, returned by \`POST /v1/compliance/orchestrator/screenings\`.', + required: true, + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'GET' + static path = '/v1/compliance/orchestrator/screenings/{screeningId}' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(GetScreeningResult) + + this.logToStderr('Warning: This command is in beta and may change in future releases.') + + + const headers: Record = {} + + const pathParams: Record = {} + pathParams['screeningId'] = String(flags['screening-id']) + + + const result = await this.makeRequest( + 'GET', + '/v1/compliance/orchestrator/screenings/{screeningId}', + { + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/compliance-orchestrator/get-workflow.ts b/src/commands/compliance-orchestrator/get-workflow.ts new file mode 100644 index 0000000..c73f6e6 --- /dev/null +++ b/src/commands/compliance-orchestrator/get-workflow.ts @@ -0,0 +1,50 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class GetWorkflow extends FireblocksBaseCommand { + static summary = 'Get a Compliance Orchestrator workflow' + + static description = 'Returns a workflow\'s status and its steps in execution order. Read it to see what a given \`workflowId\` will screen, and which fields its rules may reference.\n\nOperation ID: getWorkflow\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Compliance%20Orchestrator/getWorkflow' + + static enableJsonFlag = false + + static flags = { + 'workflow-id': Flags.string({ + description: 'The workflow\'s identifier.', + required: true, + }), + 'include-headers': Flags.boolean({ + description: 'Include spec-defined response headers in output', + default: false, + }), + } + + static method = 'GET' + static path = '/v1/compliance/orchestrator/workflows/{workflowId}' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(GetWorkflow) + + this.logToStderr('Warning: This command is in beta and may change in future releases.') + + + const headers: Record = {} + + const pathParams: Record = {} + pathParams['workflowId'] = String(flags['workflow-id']) + + + const result = await this.makeRequest( + 'GET', + '/v1/compliance/orchestrator/workflows/{workflowId}', + { + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/compliance-orchestrator/trigger-screening.ts b/src/commands/compliance-orchestrator/trigger-screening.ts new file mode 100644 index 0000000..18914b7 --- /dev/null +++ b/src/commands/compliance-orchestrator/trigger-screening.ts @@ -0,0 +1,65 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class TriggerScreening extends FireblocksBaseCommand { + static summary = 'Trigger a Compliance Orchestrator screening' + + static description = 'Starts a compliance screening against an active workflow and returns a \`screeningId\`. The screening runs asynchronously — poll \`GET /v1/compliance/orchestrator/screenings/{screeningId}\` for the result.\n\nUnlike the screening that applies automatically to submitted transactions under \`/v1/screening\`, this is called on demand, before anything exists on-chain.\n\nOperation ID: triggerScreening\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Compliance%20Orchestrator/triggerScreening' + + static enableJsonFlag = false + + static flags = { + 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/compliance/orchestrator/screenings' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(TriggerScreening) + + 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'] + } + + + + await this.confirmOrAbort('POST', '/v1/compliance/orchestrator/screenings') + + const result = await this.makeRequest( + 'POST', + '/v1/compliance/orchestrator/screenings', + { + body, + headers, + }, + ) + + return result + } +} diff --git a/src/commands/compliance-orchestrator/update-workflow-status.ts b/src/commands/compliance-orchestrator/update-workflow-status.ts new file mode 100644 index 0000000..b38f83c --- /dev/null +++ b/src/commands/compliance-orchestrator/update-workflow-status.ts @@ -0,0 +1,72 @@ +import {Flags} from '@oclif/core' +import {FireblocksBaseCommand} from '../../lib/base-command.js' + +export default class UpdateWorkflowStatus extends FireblocksBaseCommand { + static summary = 'Update a Compliance Orchestrator workflow\'s status' + + static description = 'Moves a workflow between \`DRAFT\` and \`ACTIVE\`. A workflow must be \`ACTIVE\` before \`POST /v1/compliance/orchestrator/screenings\` will accept a screening against it. Returns the workflow\'s id and new status, not its full configuration.\n\nOperation ID: updateWorkflowStatus\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Compliance%20Orchestrator/updateWorkflowStatus' + + static enableJsonFlag = false + + static flags = { + 'workflow-id': Flags.string({ + description: 'The workflow\'s identifier.', + 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/compliance/orchestrator/workflows/{workflowId}/status' + static isBeta = true + static responseHeaders: string[] = ["X-Request-ID"] + + async run(): Promise { + const {flags} = await this.parse(UpdateWorkflowStatus) + + 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['workflowId'] = String(flags['workflow-id']) + + + await this.confirmOrAbort('PATCH', '/v1/compliance/orchestrator/workflows/{workflowId}/status') + + const result = await this.makeRequest( + 'PATCH', + '/v1/compliance/orchestrator/workflows/{workflowId}/status', + { + body, + headers, + pathParams, + }, + ) + + return result + } +} diff --git a/src/commands/webhooks-v2/get-mtls-csr.ts b/src/commands/webhooks-v2/get-mtls-csr.ts index fd0c3da..4c7eeaf 100644 --- a/src/commands/webhooks-v2/get-mtls-csr.ts +++ b/src/commands/webhooks-v2/get-mtls-csr.ts @@ -4,11 +4,16 @@ import {FireblocksBaseCommand} from '../../lib/base-command.js' export default class GetMtlsCsr extends FireblocksBaseCommand { static summary = 'Get mTLS CSR' - static description = 'Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate.\n\nOperation ID: getMtlsCsr\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Webhooks%20V2/getMtlsCsr' + static description = 'Returns the Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate.\n\nThe private key the CSR is built from is held by Fireblocks and is specific to this workspace. It is created on the first request for a given key type, and the same CSR is returned on subsequent requests for that type.\n\nPass \`keyAlgorithm\` to choose RSA or ECDSA. A workspace may hold one key of each: the CSR returned is always the one for the type requested, so a certificate signed against it matches the key used at delivery time.\n\nOperation ID: getMtlsCsr\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Webhooks%20V2/getMtlsCsr' static enableJsonFlag = false static flags = { + 'key-algorithm': Flags.string({ + description: 'Algorithm of the private key the CSR is generated for. ECDSA keys are smaller and quicker to issue, but the certificate authority signing the request has to accept an EC subject key, which some do not by default.', + default: 'RSA', + options: ['RSA', 'ECDSA'], + }), 'include-headers': Flags.boolean({ description: 'Include spec-defined response headers in output', default: false, @@ -16,7 +21,7 @@ export default class GetMtlsCsr extends FireblocksBaseCommand { } static method = 'GET' - static path = '/v1/webhooks/mtls/csr' + static path = '/v1/webhooks_settings/mtls_csr' static isBeta = false static responseHeaders: string[] = ["X-Request-ID"] @@ -27,12 +32,17 @@ export default class GetMtlsCsr extends FireblocksBaseCommand { const headers: Record = {} + const queryParams: Record = {} + if (flags['key-algorithm'] !== undefined && flags['key-algorithm'] !== null) { + queryParams['keyAlgorithm'] = String(flags['key-algorithm']) + } const result = await this.makeRequest( 'GET', - '/v1/webhooks/mtls/csr', + '/v1/webhooks_settings/mtls_csr', { headers, + queryParams, }, ) diff --git a/src/commands/webhooks-v2/update-webhook-oauth.ts b/src/commands/webhooks-v2/update-webhook-oauth.ts index 98c3a10..04b9887 100644 --- a/src/commands/webhooks-v2/update-webhook-oauth.ts +++ b/src/commands/webhooks-v2/update-webhook-oauth.ts @@ -4,7 +4,7 @@ import {FireblocksBaseCommand} from '../../lib/base-command.js' export default class UpdateWebhookOauth extends FireblocksBaseCommand { static summary = 'Update OAuth credentials' - static description = 'Updates only the fields present in the request; anything omitted is left as it is. Sending \`clientSecret\` on its own rotates the secret for every webhook using these credentials.\n\n\`customJwtClaims\`, \`customBodyParams\` and \`customHeaders\` are all merged key by key rather than replaced, the same way a webhook\'s own \`customHeaders\` behaves: a key sent with a value is added or overwritten, a key sent with a \`null\` value is deleted, and a key you omit is left alone. Since a \`null\` inside a map is the delete mechanism, none of the three accepts \`null\` for the whole field — \`customJwtClaims: null\`, \`customBodyParams: null\` or \`customHeaders: null\` is rejected with a \`400\` rather than ignored. Clear a map by listing each of its keys with a \`null\` value. Because \`null\` is spent on deletion, a claim cannot be set to JSON \`null\` either, on this endpoint or on create. \`mtlsClientSignedCert\` is a scalar rather than a map, so \`null\` there does remove it.\n\n**Endpoint Permissions:** Owner, Admin, Non-Signing Admin.\n\nOperation ID: updateWebhookOauth\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Webhooks%20V2/updateWebhookOauth' + static description = 'Updates only the fields present in the request; anything omitted is left as it is. Sending \`clientSecret\` on its own rotates the secret for every webhook using these credentials.\n\n\`customJwtClaims\`, \`customBodyParams\` and \`customHeaders\` are all merged key by key rather than replaced, the same way a webhook\'s own \`customHeaders\` behaves: a key sent with a value is added or overwritten, a key sent with a \`null\` value is deleted, and a key you omit is left alone. Setting one of the three to \`null\` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of \`null\` — one names an entry to delete, the other names the field. A claim cannot be set to JSON \`null\`, though, on this endpoint or on create, because \`null\` is spent on deletion. \`mtlsClientSignedCert\` is a scalar rather than a map, so \`null\` there does remove it.\n\n**Endpoint Permissions:** Owner, Admin, Non-Signing Admin.\n\nOperation ID: updateWebhookOauth\nDocs: https://docs.fireblocks.com/api/swagger-ui/#/Webhooks%20V2/updateWebhookOauth' static enableJsonFlag = false diff --git a/yarn.lock b/yarn.lock index cfbddd8..7dae819 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,12 +14,12 @@ tslib "^2.6.2" "@aws-sdk/client-cloudfront@^3.1079.0": - version "3.1117.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1117.0.tgz#5001196cb9a1055a126f057830d431223ea60f6b" - integrity sha512-mFQRJENi3IUQc6oLrCELpDgYFx53i47vIkgDhrsKlPDe0OQ+Qm7QEhl5wjBJc4IPoeKNyawqSDOSeq8rFZ9Esg== + version "3.1124.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1124.0.tgz#926a51fc10b921f76910a7953f9276844c9d751a" + integrity sha512-eCTPtU83/AkZK51LnUG4mMTiog6ojkdhQCT7Ilc76rowtREPAZJem2AIUS2r3Qrm2+mhWWvU1kF3j1l1UoDt4A== dependencies: "@aws-sdk/core" "^3.977.9" - "@aws-sdk/credential-provider-node" "^3.972.81" + "@aws-sdk/credential-provider-node" "^3.972.82" "@aws-sdk/types" "^3.974.5" "@smithy/core" "^3.33.3" "@smithy/fetch-http-handler" "^5.7.2" @@ -28,13 +28,13 @@ tslib "^2.6.2" "@aws-sdk/client-s3@^3.1079.0": - version "3.1117.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1117.0.tgz#43aacd46d4f4e4b12b4edd5f65a437e898824b0e" - integrity sha512-M/zyjg0u0Sxm73sInvyDb9+/YUuAOz8/xxmcmj0quJ7NXllZqXPxzjti3oVDz/lQ5mDf7iuxBLc0Y3deJI2hRw== + version "3.1124.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1124.0.tgz#d502425a2b259ae4511b88794aaf4c03a077f676" + integrity sha512-f20BksgVlXufcf/mijde1LAjwM/iSDdG3mGtN3yRFOUzXtlFEOjxNi1Rf2Kb+rSgoiOSpO0hUOna9Bs+J1gX2A== dependencies: "@aws-sdk/checksums" "^3.1000.29" "@aws-sdk/core" "^3.977.9" - "@aws-sdk/credential-provider-node" "^3.972.81" + "@aws-sdk/credential-provider-node" "^3.972.82" "@aws-sdk/middleware-sdk-s3" "^3.972.75" "@aws-sdk/signature-v4-multi-region" "^3.996.46" "@aws-sdk/types" "^3.974.5" @@ -113,10 +113,10 @@ "@smithy/types" "^4.17.2" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@^3.972.81": - version "3.972.81" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.81.tgz#f803fd0627194e94d673416820577c38a2684b2e" - integrity sha512-Rml+WitoFvXmv6JZ18U/xGdGDGGvB/mOin0ya0lTnTrdC0Z1lrVxTYh7iNklZBcvcRMrs4DoEf6xy1KWyrLQQw== +"@aws-sdk/credential-provider-node@^3.972.82": + version "3.972.82" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.82.tgz#9967ea14f708f9e3274ed334a07a550282556a32" + integrity sha512-znDkEOGXB8W3kG1LJUKP3foBZY/9qLM0eil/DxWXSp37XsdsRLQHE/d/OaCGGVgKpA6znR38h/+INk8do1FjiA== dependencies: "@aws-sdk/credential-provider-env" "^3.972.70" "@aws-sdk/credential-provider-http" "^3.972.72" @@ -1074,9 +1074,9 @@ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.5" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" - integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + version "1.6.0" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz#f4c663e862f06dc98ca4d453862c46902789a18d" + integrity sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -1267,9 +1267,9 @@ tslib "^2.6.2" "@smithy/node-http-handler@^4.11.3": - version "4.11.3" - resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.11.3.tgz#27e91a61b6de8a13e9b552f22975d7dd369cb397" - integrity sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA== + version "4.12.0" + resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.12.0.tgz#3a45177c595bb832454f44e3c4eadd19f016bcde" + integrity sha512-0mq1pHadfyXCYCqm2cNpbjNIT+fbaUpNxewZb/YNr2L0IrEVMOb8gM/Fl4K6XvHCW3uSNDFwPl/+iKm0bx9jYg== dependencies: "@smithy/core" "^3.33.3" "@smithy/types" "^4.17.2" @@ -1403,9 +1403,9 @@ "@types/node" "*" "@types/node@*": - version "26.3.0" - resolved "https://registry.npmjs.org/@types/node/-/node-26.3.0.tgz#757c33b17fe06db5a356582e9658603a1bd80caf" - integrity sha512-L3fgrnchriRC2ExBflb8j4uZZURHZfQsmQeyVzhjcHW4kkwVyo8/0h1B2MVzMTrYUJYu6G7EWs14hW/L9putqw== + version "26.4.1" + resolved "https://registry.npmjs.org/@types/node/-/node-26.4.1.tgz#3d8dc80515894958448ee266cf5d6bc3e5205bd5" + integrity sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA== dependencies: undici-types "~8.3.0" @@ -1590,9 +1590,9 @@ balanced-match@^4.0.2: integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== baseline-browser-mapping@^2.11.12: - version "2.11.19" - resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.19.tgz#4711abac48b88ccb56b5817e86f1b3a9a0764276" - integrity sha512-Grytf1xOxOEMTGRwx6rLGKkTabd4vMg3VrKdj/7joCmV0qgh4QwMMO6xh34YEXQqirAuUdgQGa5orJQQ+69RBw== + version "2.11.20" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.20.tgz#26078c7a4b08299656ea7ddceaebec955dc44303" + integrity sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw== bowser@^2.11.0: version "2.14.1" @@ -1936,9 +1936,9 @@ ejs@^6: integrity sha512-UaaM14yby8U3k02ihS1Bmj5Kz2d7CCQM1scxpgs4Mhkq8F1wR2gl3+Ts4h5Ne4Mnt7M9m4Dw7jsuMr3+xO4vZA== electron-to-chromium@^1.5.402: - version "1.5.414" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.414.tgz#4d38036562ddd192214aaade4124bdbbf2297291" - integrity sha512-aYlviXiaXBbzvKgyALpcMmqa3Np3sDr0XnZbEG62n2UpZFbEcjQ4EEMOLGzVPhwVnwTz0lvKY+GcARbunuHekw== + version "1.5.420" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.420.tgz#fc66d26a722d6f227e2092acdf38dd55b198cb44" + integrity sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA== emittery@^0.13.1: version "0.13.1" @@ -2815,17 +2815,17 @@ js-tokens@^4.0.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.15.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.1.tgz#24bc95028f361cdaaa84745b06a109c4486773c0" - integrity sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag== + version "3.15.2" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz#3f83823ac6be17f570f23b2ecdef3777ff5ea364" + integrity sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w== dependencies: argparse "^1.0.7" esprima "^4.0.0" js-yaml@^4: - version "4.3.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz#01216c001d67f48e2cd560d708c7af21090a3848" - integrity sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ== + version "4.3.2" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz#8e44fb14a2643c59726bb15787b5f1512cb3d3fb" + integrity sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA== dependencies: argparse "^2.0.1" @@ -3055,9 +3055,9 @@ node-int64@^0.4.0: integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.53: - version "2.0.53" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz#0fe5ad8a7935e075172f574e56f0c20f07fa41af" - integrity sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ== + version "2.0.54" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz#09af17d5647aa9f221ec5cf2becb95b68a981afe" + integrity sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ== normalize-package-data@^6: version "6.0.2" @@ -3637,9 +3637,9 @@ tslib@^2.0.3, tslib@^2.6.2: integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tsx@^4: - version "4.23.12" - resolved "https://registry.npmjs.org/tsx/-/tsx-4.23.12.tgz#3a4919591cd9b9e00011b75e596c8ab8db23c09c" - integrity sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q== + version "4.23.13" + resolved "https://registry.npmjs.org/tsx/-/tsx-4.23.13.tgz#393b8dd813d49e25aed7b1d7cbac6930da49ec08" + integrity sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw== dependencies: esbuild "~0.28.0" optionalDependencies: @@ -3693,9 +3693,9 @@ universalify@^0.1.0: integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== update-browserslist-db@^1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz#a71c28dd22f505481dbc4689087b18d933e90afd" - integrity sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ== + version "1.3.2" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz#9d99fbff56c50bb11ba5fd35cece5916da595836" + integrity sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw== dependencies: escalade "^3.2.0" picocolors "^1.1.1"