diff --git a/modules/sdk-coin-ton/package.json b/modules/sdk-coin-ton/package.json index aaa175c188..d5d9f43e84 100644 --- a/modules/sdk-coin-ton/package.json +++ b/modules/sdk-coin-ton/package.json @@ -43,6 +43,7 @@ "@bitgo/sdk-core": "^36.37.0", "@bitgo/sdk-lib-mpc": "^10.10.0", "@bitgo/statics": "^58.32.0", + "@bitgo/wasm-ton": "^1.1.1", "bignumber.js": "^9.0.0", "bn.js": "^5.2.1", "lodash": "^4.17.21", diff --git a/modules/sdk-coin-ton/src/lib/explainTransactionWasm.ts b/modules/sdk-coin-ton/src/lib/explainTransactionWasm.ts new file mode 100644 index 0000000000..bf0b1a3934 --- /dev/null +++ b/modules/sdk-coin-ton/src/lib/explainTransactionWasm.ts @@ -0,0 +1,83 @@ +/** + * WASM-based TON transaction explanation. + * + * Built on @bitgo/wasm-ton's parseTransaction(). Derives transaction types, + * extracts outputs/inputs, and maps to BitGoJS TransactionExplanation format. + * This is BitGo-specific business logic that lives outside the wasm package. + */ + +import { + Transaction as WasmTonTransaction, + parseTransaction, + type ParsedTransaction as WasmParsedTransaction, +} from '@bitgo/wasm-ton'; +import { TransactionExplanation } from './iface'; + +export interface ExplainTonTransactionWasmOptions { + txBase64: string; + /** When false, use the original bounce-flag-respecting address format. Defaults to true (bounceable EQ...). */ + toAddressBounceable?: boolean; +} + +function extractOutputs( + parsed: WasmParsedTransaction, + toAddressBounceable: boolean +): { + outputs: { address: string; amount: string }[]; + outputAmount: string; + withdrawAmount: string | undefined; +} { + const outputs: { address: string; amount: string }[] = []; + let withdrawAmount: string | undefined; + + for (const action of parsed.sendActions) { + if (action.jettonTransfer) { + outputs.push({ + address: action.jettonTransfer.destination, + amount: String(action.jettonTransfer.amount), + }); + } else { + // destinationBounceable is always EQ... (bounceable) + // destination respects the original bounce flag (UQ... when bounce=false) + outputs.push({ + address: toAddressBounceable ? action.destinationBounceable : action.destination, + amount: String(action.amount), + }); + } + + // withdrawAmount comes from the body payload parsed by WASM (not the message TON value) + if (action.withdrawAmount !== undefined) { + withdrawAmount = String(action.withdrawAmount); + } + } + + const outputAmount = outputs.reduce((sum, o) => sum + BigInt(o.amount), 0n); + + return { outputs, outputAmount: String(outputAmount), withdrawAmount }; +} + +/** + * Standalone WASM-based transaction explanation for TON. + * + * Parses the transaction via `parseTransaction(tx)` from @bitgo/wasm-ton, + * then derives the transaction type, extracts outputs/inputs, and maps + * to BitGoJS TransactionExplanation format. + */ +export function explainTonTransaction(params: ExplainTonTransactionWasmOptions): TransactionExplanation { + const toAddressBounceable = params.toAddressBounceable !== false; + const tx = WasmTonTransaction.fromBytes(Buffer.from(params.txBase64, 'base64')); + const parsed: WasmParsedTransaction = parseTransaction(tx); + + const { outputs, outputAmount, withdrawAmount } = extractOutputs(parsed, toAddressBounceable); + + return { + displayOrder: ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'withdrawAmount'], + id: tx.id, + outputs, + outputAmount, + changeOutputs: [], + changeAmount: '0', + fee: { fee: 'UNKNOWN' }, + withdrawAmount, + }; +} diff --git a/modules/sdk-coin-ton/src/lib/index.ts b/modules/sdk-coin-ton/src/lib/index.ts index 5cd31f2a7d..11e7e29881 100644 --- a/modules/sdk-coin-ton/src/lib/index.ts +++ b/modules/sdk-coin-ton/src/lib/index.ts @@ -10,4 +10,5 @@ export { TransferBuilder } from './transferBuilder'; export { TransactionBuilderFactory } from './transactionBuilderFactory'; export { TonWhalesVestingDepositBuilder } from './tonWhalesVestingDepositBuilder'; export { TonWhalesVestingWithdrawBuilder } from './tonWhalesVestingWithdrawBuilder'; +export { explainTonTransaction } from './explainTransactionWasm'; export { Interface, Utils }; diff --git a/modules/sdk-coin-ton/src/lib/utils.ts b/modules/sdk-coin-ton/src/lib/utils.ts index ff0f3cbfa8..8a61105770 100644 --- a/modules/sdk-coin-ton/src/lib/utils.ts +++ b/modules/sdk-coin-ton/src/lib/utils.ts @@ -58,7 +58,8 @@ export class Utils implements BaseUtils { wc: 0, }); const address = await wallet.getAddress(); - return address.toString(isUserFriendly, true, bounceable); + const legacyAddress = address.toString(isUserFriendly, true, bounceable); + return legacyAddress; } getAddress(address: string, bounceable = true): string { diff --git a/modules/sdk-coin-ton/src/ton.ts b/modules/sdk-coin-ton/src/ton.ts index 4938ec2713..2cad14418a 100644 --- a/modules/sdk-coin-ton/src/ton.ts +++ b/modules/sdk-coin-ton/src/ton.ts @@ -32,8 +32,10 @@ import { } from '@bitgo/sdk-core'; import { auditEddsaPrivateKey, getDerivationPath } from '@bitgo/sdk-lib-mpc'; import { BaseCoin as StaticsBaseCoin, coins } from '@bitgo/statics'; +import { Transaction as WasmTonTransaction, decode as wasmDecode, encode as wasmEncode } from '@bitgo/wasm-ton'; import { KeyPair as TonKeyPair } from './lib/keyPair'; import { TransactionBuilderFactory, Utils, TransferBuilder, TokenTransferBuilder, TransactionBuilder } from './lib'; +import { explainTonTransaction } from './lib/explainTransactionWasm'; import { getFeeEstimate } from './lib/utils'; export interface TonParseTransactionOptions extends ParseTransactionOptions { @@ -117,6 +119,36 @@ export class Ton extends BaseCoin { throw new Error('missing required tx prebuild property txHex'); } + if (this.getChain() === 'tton') { + const toBounceable = (address: string) => { + const decoded = wasmDecode(this.getAddressDetails(address).address); + return wasmEncode(decoded.workchainId, decoded.addressHash, true); + }; + const txBase64 = Buffer.from(rawTx, 'hex').toString('base64'); + const explainedTx = explainTonTransaction({ txBase64 }); + if (txParams.recipients !== undefined) { + const filteredRecipients = txParams.recipients.map((recipient) => ({ + address: toBounceable(recipient.address), + amount: BigInt(recipient.amount), + })); + const filteredOutputs = explainedTx.outputs.map((output) => ({ + address: toBounceable(output.address), + amount: BigInt(output.amount), + })); + if (!_.isEqual(filteredOutputs, filteredRecipients)) { + throw new Error('Tx outputs does not match with expected txParams recipients'); + } + let totalAmount = new BigNumber(0); + for (const recipient of txParams.recipients) { + totalAmount = totalAmount.plus(recipient.amount); + } + if (!totalAmount.isEqualTo(explainedTx.outputAmount)) { + throw new Error('Tx total amount does not match with expected total amount field'); + } + } + return true; + } + const txBuilder = this.getBuilder().from(Buffer.from(rawTx, 'hex').toString('base64')); const transaction = await txBuilder.build(); @@ -235,6 +267,10 @@ export class Ton extends BaseCoin { /** @inheritDoc */ async getSignablePayload(serializedTx: string): Promise { + if (this.getChain() === 'tton') { + const tx = WasmTonTransaction.fromBytes(Buffer.from(serializedTx, 'base64')); + return Buffer.from(tx.signablePayload()); + } const factory = new TransactionBuilderFactory(coins.get(this.getChain())); const rebuiltTransaction = await factory.from(serializedTx).build(); return rebuiltTransaction.signablePayload; @@ -242,6 +278,14 @@ export class Ton extends BaseCoin { /** @inheritDoc */ async explainTransaction(params: Record): Promise { + if (this.getChain() === 'tton') { + try { + const txBase64 = Buffer.from(params.txHex, 'hex').toString('base64'); + return explainTonTransaction({ txBase64, toAddressBounceable: params.toAddressBounceable }); + } catch { + throw new Error('Invalid transaction'); + } + } try { const factory = new TransactionBuilderFactory(coins.get(this.getChain())); const transactionBuilder = factory.from(Buffer.from(params.txHex, 'hex').toString('base64')); diff --git a/modules/sdk-coin-ton/test/unit/explainTransactionWasm.ts b/modules/sdk-coin-ton/test/unit/explainTransactionWasm.ts new file mode 100644 index 0000000000..1a8ad9a83b --- /dev/null +++ b/modules/sdk-coin-ton/test/unit/explainTransactionWasm.ts @@ -0,0 +1,135 @@ +import should from 'should'; +import { Transaction as WasmTonTransaction, parseTransaction } from '@bitgo/wasm-ton'; +import { explainTonTransaction } from '../../src/lib/explainTransactionWasm'; +import * as testData from '../resources/ton'; + +describe('TON WASM explainTransaction', function () { + describe('explainTonTransaction', function () { + it('should explain a signed send transaction', function () { + const txBase64 = testData.signedSendTransaction.tx; + const explained = explainTonTransaction({ txBase64 }); + + explained.outputs.length.should.be.greaterThan(0); + explained.outputs[0].amount.should.equal(testData.signedSendTransaction.recipient.amount); + explained.outputs[0].address.should.equal(testData.signedSendTransaction.recipient.address); + explained.changeOutputs.should.be.an.Array(); + explained.changeAmount.should.equal('0'); + should.exist(explained.id); + }); + + it('should explain a signed token send transaction', function () { + const txBase64 = testData.signedTokenSendTransaction.tx; + const explained = explainTonTransaction({ txBase64 }); + + explained.outputs.length.should.be.greaterThan(0); + should.exist(explained.id); + }); + + it('should explain a single nominator withdraw transaction', function () { + const txBase64 = testData.signedSingleNominatorWithdrawTransaction.tx; + const explained = explainTonTransaction({ txBase64 }); + + should.exist(explained.id); + explained.id.should.equal(testData.signedSingleNominatorWithdrawTransaction.txId); + should.exist(explained.withdrawAmount); + explained.withdrawAmount!.should.equal('932178112330000'); + }); + + it('should explain a Ton Whales withdrawal transaction', function () { + const txBase64 = testData.signedTonWhalesWithdrawalTransaction.tx; + const explained = explainTonTransaction({ txBase64 }); + + should.exist(explained.id); + should.exist(explained.withdrawAmount); + }); + + it('should explain a Ton Whales full withdrawal transaction', function () { + const txBase64 = testData.signedTonWhalesFullWithdrawalTransaction.tx; + const explained = explainTonTransaction({ txBase64 }); + + should.exist(explained.id); + }); + + it('should respect toAddressBounceable=false', function () { + const txBase64 = testData.signedSendTransaction.tx; + const bounceable = explainTonTransaction({ txBase64, toAddressBounceable: true }); + const nonBounceable = explainTonTransaction({ txBase64, toAddressBounceable: false }); + + bounceable.outputs[0].address.should.equal(testData.signedSendTransaction.recipient.address); + nonBounceable.outputs[0].address.should.equal(testData.signedSendTransaction.recipientBounceable.address); + }); + }); + + describe('WASM Transaction signing flow', function () { + it('should produce correct signable payload from WASM Transaction', function () { + const txBase64 = testData.signedSendTransaction.tx; + const tx = WasmTonTransaction.fromBytes(Buffer.from(txBase64, 'base64')); + const signablePayload = tx.signablePayload(); + + signablePayload.should.be.instanceOf(Uint8Array); + signablePayload.length.should.equal(32); + + const expectedSignable = Buffer.from(testData.signedSendTransaction.signable, 'base64'); + Buffer.from(signablePayload).toString('base64').should.equal(expectedSignable.toString('base64')); + }); + + it('should parse transaction and preserve bigint amounts', function () { + const txBase64 = testData.signedSendTransaction.tx; + const tx = WasmTonTransaction.fromBytes(Buffer.from(txBase64, 'base64')); + const parsed = parseTransaction(tx); + + parsed.transactionType.should.equal('Transfer'); + parsed.sendActions.length.should.be.greaterThan(0); + (typeof parsed.sendActions[0].amount).should.equal('bigint'); + parsed.seqno.should.be.a.Number(); + (typeof parsed.expireAt).should.equal('bigint'); + }); + + it('should get transaction id', function () { + const txBase64 = testData.signedSendTransaction.tx; + const tx = WasmTonTransaction.fromBytes(Buffer.from(txBase64, 'base64')); + tx.id.should.equal(testData.signedSendTransaction.txId); + }); + + it('should detect signed transaction via non-zero signature', function () { + const txBase64 = testData.signedSendTransaction.tx; + const tx = WasmTonTransaction.fromBytes(Buffer.from(txBase64, 'base64')); + const parsed = parseTransaction(tx); + + parsed.signature.should.be.a.String(); + parsed.signature.length.should.be.greaterThan(0); + parsed.signature.should.not.equal('0'.repeat(128)); + }); + }); + + describe('WASM parseTransaction types', function () { + it('should parse Transfer type', function () { + const tx = WasmTonTransaction.fromBytes(Buffer.from(testData.signedSendTransaction.tx, 'base64')); + parseTransaction(tx).transactionType.should.equal('Transfer'); + }); + + it('should parse TokenTransfer type', function () { + const tx = WasmTonTransaction.fromBytes(Buffer.from(testData.signedTokenSendTransaction.tx, 'base64')); + parseTransaction(tx).transactionType.should.equal('TokenTransfer'); + }); + + it('should parse SingleNominatorWithdraw type with correct withdrawAmount', function () { + const tx = WasmTonTransaction.fromBytes( + Buffer.from(testData.signedSingleNominatorWithdrawTransaction.tx, 'base64') + ); + const parsed = parseTransaction(tx); + parsed.transactionType.should.equal('SingleNominatorWithdraw'); + String(parsed.sendActions[0].withdrawAmount).should.equal('932178112330000'); + }); + + it('should parse WhalesDeposit type', function () { + const tx = WasmTonTransaction.fromBytes(Buffer.from(testData.signedTonWhalesDepositTransaction.tx, 'base64')); + parseTransaction(tx).transactionType.should.equal('WhalesDeposit'); + }); + + it('should parse WhalesWithdraw type', function () { + const tx = WasmTonTransaction.fromBytes(Buffer.from(testData.signedTonWhalesWithdrawalTransaction.tx, 'base64')); + parseTransaction(tx).transactionType.should.equal('WhalesWithdraw'); + }); + }); +}); diff --git a/modules/sdk-coin-ton/test/unit/ton.ts b/modules/sdk-coin-ton/test/unit/ton.ts index d7431ab61d..ea1d09c8ba 100644 --- a/modules/sdk-coin-ton/test/unit/ton.ts +++ b/modules/sdk-coin-ton/test/unit/ton.ts @@ -260,7 +260,7 @@ describe('TON:', function () { })) as TransactionExplanation; explainedTransaction.should.deepEqual({ displayOrder: ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'withdrawAmount'], - id: testData.signedSingleNominatorWithdrawTransaction.txIdBounceable, + id: testData.signedSingleNominatorWithdrawTransaction.txId, outputs: [ { address: testData.signedSingleNominatorWithdrawTransaction.recipientBounceable.address, diff --git a/modules/sdk-coin-ton/test/unit/wasmCrossCompatibility.ts b/modules/sdk-coin-ton/test/unit/wasmCrossCompatibility.ts new file mode 100644 index 0000000000..04ce1a4648 --- /dev/null +++ b/modules/sdk-coin-ton/test/unit/wasmCrossCompatibility.ts @@ -0,0 +1,187 @@ +import should from 'should'; +import { coins } from '@bitgo/statics'; +import { TransactionType } from '@bitgo/sdk-core'; +import { + buildTransaction, + parseTransaction, + Transaction as WasmTonTransaction, + type BuildContext, + type PaymentIntent, + type ParsedTransaction, +} from '@bitgo/wasm-ton'; +import { TransactionBuilderFactory } from '../../src/lib/transactionBuilderFactory'; +import * as testData from '../resources/ton'; + +/** + * Cross-compatibility tests between WASM (@bitgo/wasm-ton) and legacy + * (tonweb-based) transaction building/parsing for TON. + * + * Direction 1: WASM parses legacy-built transactions (covered by explainTransactionWasm.ts) + * Direction 2: Legacy parses WASM-built transactions (this file) + */ +describe('TON WASM Cross-Compatibility', function () { + const coin = coins.get('tton'); + const factory = new TransactionBuilderFactory(coin); + + // Use sender from test fixtures + const senderAddress = testData.sender.address; + const senderPublicKey = testData.sender.publicKey; + const recipientAddress = testData.addresses.validAddresses[0]; + + function createWasmContext(overrides: Partial = {}): BuildContext { + return { + sender: senderAddress, + seqno: 6, + expireTime: 1695997582n, + publicKey: senderPublicKey, + ...overrides, + }; + } + + // ========================================================================= + // WASM -> Legacy: Legacy can parse WASM-built transactions + // ========================================================================= + describe('Legacy parses WASM-built transactions', function () { + it('should parse a WASM-built payment transaction via legacy factory.from()', async function () { + const amount = 10000000n; // 0.01 TON + const memo = 'test'; + + // Build with WASM + const wasmTx = buildTransaction( + { + type: 'payment', + to: recipientAddress, + amount, + bounceable: false, + memo, + } as PaymentIntent, + createWasmContext() + ); + + // Convert to base64 (the format legacy expects) + const bocBytes = wasmTx.toBroadcastFormat(); + const base64Tx = Buffer.from(bocBytes).toString('base64'); + + // Parse with legacy + const legacyBuilder = factory.from(base64Tx); + const legacyTx = await legacyBuilder.build(); + const json = legacyTx.toJson(); + + // Verify the legacy builder can extract the correct fields + legacyTx.type.should.equal(TransactionType.Send); + json.seqno.should.equal(6); + json.expirationTime.should.equal(1695997582); + json.amount.should.equal(amount.toString()); + should.exist(json.sender); + should.exist(json.destination); + }); + + it('should parse a WASM-built payment without memo via legacy', async function () { + const amount = 50000000n; // 0.05 TON + + const wasmTx = buildTransaction( + { + type: 'payment', + to: recipientAddress, + amount, + bounceable: false, + } as PaymentIntent, + createWasmContext({ seqno: 10, expireTime: 1700000000n }) + ); + + const base64Tx = Buffer.from(wasmTx.toBroadcastFormat()).toString('base64'); + + const legacyBuilder = factory.from(base64Tx); + const legacyTx = await legacyBuilder.build(); + const json = legacyTx.toJson(); + + legacyTx.type.should.equal(TransactionType.Send); + json.seqno.should.equal(10); + json.expirationTime.should.equal(1700000000); + json.amount.should.equal(amount.toString()); + }); + + it('should round-trip: WASM build -> legacy parse -> legacy build -> WASM parse', async function () { + const amount = 123400000n; + const memo = 'hello'; + + const wasmTx = buildTransaction( + { + type: 'payment', + to: recipientAddress, + amount, + bounceable: false, + memo, + } as PaymentIntent, + createWasmContext({ seqno: 3, expireTime: 1234567890n }) + ); + + const base64Tx = Buffer.from(wasmTx.toBroadcastFormat()).toString('base64'); + + // Parse with legacy + const legacyBuilder = factory.from(base64Tx); + const legacyTx = await legacyBuilder.build(); + + // Rebuild with legacy should produce valid base64 + const rebuiltBase64 = legacyTx.toBroadcastFormat(); + + // Parse the rebuilt transaction with WASM to confirm fields match + const wasmParsed: ParsedTransaction = parseTransaction( + WasmTonTransaction.fromBytes(Buffer.from(rebuiltBase64, 'base64')) + ); + + wasmParsed.transactionType.should.equal('Transfer'); + wasmParsed.seqno.should.equal(3); + wasmParsed.sendActions.length.should.be.greaterThan(0); + String(wasmParsed.sendActions[0].amount).should.equal(amount.toString()); + }); + + it('should parse a WASM-built bounceable payment via legacy', async function () { + const amount = 10000000n; + + const wasmTx = buildTransaction( + { + type: 'payment', + to: recipientAddress, + amount, + bounceable: true, + } as PaymentIntent, + createWasmContext() + ); + + const base64Tx = Buffer.from(wasmTx.toBroadcastFormat()).toString('base64'); + + const legacyBuilder = factory.from(base64Tx); + const legacyTx = await legacyBuilder.build(); + const json = legacyTx.toJson(); + + legacyTx.type.should.equal(TransactionType.Send); + json.amount.should.equal(amount.toString()); + }); + }); + + // ========================================================================= + // Both WASM and legacy agree on signed fixture data + // ========================================================================= + describe('Both WASM and legacy agree on signed fixture data', function () { + it('should produce matching fields for signedSendTransaction', async function () { + const txBase64 = testData.signedSendTransaction.tx; + + // Parse with WASM + const wasmTx = WasmTonTransaction.fromBytes(Buffer.from(txBase64, 'base64')); + const wasmParsed: ParsedTransaction = parseTransaction(wasmTx); + + // Parse with legacy + const legacyBuilder = factory.from(txBase64); + const legacyTx = await legacyBuilder.build(); + const json = legacyTx.toJson(); + + // Both should agree on core fields + wasmParsed.transactionType.should.equal('Transfer'); + legacyTx.type.should.equal(TransactionType.Send); + wasmParsed.seqno.should.equal(json.seqno); + wasmParsed.sendActions.length.should.be.greaterThan(0); + String(wasmParsed.sendActions[0].amount).should.equal(json.amount); + }); + }); +}); diff --git a/webpack/bitgojs.config.js b/webpack/bitgojs.config.js index 1839c798b5..234a30a56d 100644 --- a/webpack/bitgojs.config.js +++ b/webpack/bitgojs.config.js @@ -19,6 +19,7 @@ module.exports = { // Note: We can't use global `conditionNames: ['browser', 'import', ...]` because // third-party packages like @solana/spl-token and @bufbuild/protobuf have broken ESM builds. '@bitgo/wasm-dot': path.resolve('../../node_modules/@bitgo/wasm-dot/dist/esm/js/index.js'), + '@bitgo/wasm-ton': path.resolve('../../node_modules/@bitgo/wasm-ton/dist/esm/js/index.js'), '@bitgo/wasm-utxo': path.resolve('../../node_modules/@bitgo/wasm-utxo/dist/esm/js/index.js'), '@bitgo/wasm-solana': path.resolve('../../node_modules/@bitgo/wasm-solana/dist/esm/js/index.js'), '@bitgo/utxo-ord': path.resolve('../utxo-ord/dist/esm/index.js'), diff --git a/yarn.lock b/yarn.lock index 783d1d7ae5..445db948d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,7 +45,7 @@ "@api-ts/openapi-generator@5.14.0": version "5.14.0" - resolved "https://registry.npmjs.org/@api-ts/openapi-generator/-/openapi-generator-5.14.0.tgz#13d8370ad04fa5b12d49e7f07651af216e4f7331" + resolved "https://registry.npmjs.org/@api-ts/openapi-generator/-/openapi-generator-5.14.0.tgz" integrity sha512-adpM9cRCkprZPawF7rcWL230S5pcGUnumsQaYonkmsIOEcYn7l6/qvtJI7ZXLFt3lqyH9ifPg3eBUk6nsyR2wA== dependencies: "@swc/core" "1.5.7" @@ -124,6 +124,15 @@ js-tokens "^4.0.0" picocolors "^1.1.1" +"@babel/code-frame@^7.28.6": + version "7.29.0" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + "@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": version "7.28.0" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz" @@ -310,12 +319,12 @@ "@babel/types" "^7.28.2" "@babel/helpers@^7.28.2", "@babel/helpers@^7.28.3": - version "7.28.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== + version "7.29.2" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49" + integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw== dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" "@babel/highlight@^7.10.4": version "7.25.9" @@ -334,6 +343,13 @@ dependencies: "@babel/types" "^7.28.2" +"@babel/parser@^7.28.6": + version "7.29.2" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz#58bd50b9a7951d134988a1ae177a35ef9a703ba1" + integrity sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA== + dependencies: + "@babel/types" "^7.29.0" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz" @@ -890,9 +906,9 @@ esutils "^2.0.2" "@babel/runtime@7.6.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.25.0", "@babel/runtime@^7.28.2", "@babel/runtime@^7.28.6", "@babel/runtime@^7.7.6": - version "7.28.4" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" - integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + version "7.29.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e" + integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g== "@babel/template@^7.27.1", "@babel/template@^7.27.2": version "7.27.2" @@ -903,6 +919,15 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + "@babel/traverse@^7.23.2", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.4.5": version "7.28.3" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz" @@ -924,10 +949,10 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@babel/types@^7.28.4": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== +"@babel/types@^7.28.6", "@babel/types@^7.29.0": + version "7.29.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" @@ -976,7 +1001,7 @@ "@bitgo/public-types@5.76.1": version "5.76.1" - resolved "https://registry.npmjs.org/@bitgo/public-types/-/public-types-5.76.1.tgz#c36b245fccc4a90068fced8a4e2985d57f561bc1" + resolved "https://registry.npmjs.org/@bitgo/public-types/-/public-types-5.76.1.tgz" integrity sha512-S3dKa1to6xQj/cmtKrip6ytG1/4qBkRhZ117cOERlRcHHJFY8/h+1zCKazlRU+FRc8JUWcLlAoFnAcqifHw3Eg== dependencies: fp-ts "^2.0.0" @@ -987,17 +1012,22 @@ "@bitgo/wasm-dot@^1.7.0": version "1.7.0" - resolved "https://registry.npmjs.org/@bitgo/wasm-dot/-/wasm-dot-1.7.0.tgz#d22aafea9d38ebcb4b75d38538202237eadac685" + resolved "https://registry.npmjs.org/@bitgo/wasm-dot/-/wasm-dot-1.7.0.tgz" integrity sha512-KoXavJvyDHlEN+sWcigbgxYJtdFaU7gS0EkYQbNH4npVjNlzo6rL6gwjyWbyOy7oEs65DhpJ9vY5kRbE/bKiTQ== "@bitgo/wasm-solana@^2.6.0": version "2.6.0" - resolved "https://registry.npmjs.org/@bitgo/wasm-solana/-/wasm-solana-2.6.0.tgz#c8b57ab010f22f1a1c90681cd180814c4ec2867b" + resolved "https://registry.npmjs.org/@bitgo/wasm-solana/-/wasm-solana-2.6.0.tgz" integrity sha512-F9H4pXDMhfsZW5gNEcoaBzVoEMOQRP8wbQKmjsxbm5PXBq+0Aj54rOY3bswdrFZK377/aeB+tLjXu3h9i8gInQ== +"@bitgo/wasm-ton@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@bitgo/wasm-ton/-/wasm-ton-1.1.1.tgz#3361cbbe06e1fe40d13dbf384ef806b46a5e43df" + integrity sha512-Y4x2V2ZcYWlmx42v7dlrKDtT2DuUt8smk8E98mh7RhpiifJhLk2v5RmXDwBl0A3v9TzUOU6qMOnSS/iZ8Pq52w== + "@bitgo/wasm-utxo@^2.1.0": version "2.1.0" - resolved "https://registry.npmjs.org/@bitgo/wasm-utxo/-/wasm-utxo-2.1.0.tgz#a2087b795a3eb7bfca2cc25a88b3491a74d4da06" + resolved "https://registry.npmjs.org/@bitgo/wasm-utxo/-/wasm-utxo-2.1.0.tgz" integrity sha512-JukZ+g0lH1IzcwAVGp41a4XgWVZvL1hA+ym3KsU7NIqhOG57brc1nSVoqAhIe93gsfWQ7hyz3jsFueBXbwBQmQ== "@brandonblack/musig@^0.0.1-alpha.0": @@ -1042,7 +1072,7 @@ "@clack/core@^0.3.3": version "0.3.5" - resolved "https://registry.npmjs.org/@clack/core/-/core-0.3.5.tgz#3e1454c83a329353cc3a6ff8491e4284d49565bb" + resolved "https://registry.npmjs.org/@clack/core/-/core-0.3.5.tgz" integrity sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ== dependencies: picocolors "^1.0.0" @@ -1050,7 +1080,7 @@ "@clack/prompts@^0.7.0": version "0.7.0" - resolved "https://registry.npmjs.org/@clack/prompts/-/prompts-0.7.0.tgz#6aaef48ea803d91cce12bc80811cfcb8de2e75ea" + resolved "https://registry.npmjs.org/@clack/prompts/-/prompts-0.7.0.tgz" integrity sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA== dependencies: "@clack/core" "^0.3.3" @@ -2747,7 +2777,7 @@ "@flarenetwork/flarejs@4.1.1": version "4.1.1" - resolved "https://registry.npmjs.org/@flarenetwork/flarejs/-/flarejs-4.1.1.tgz#5aac35a43431e9e08263094da48838e6159a69e7" + resolved "https://registry.npmjs.org/@flarenetwork/flarejs/-/flarejs-4.1.1.tgz" integrity sha512-XuzMROKI/4LfOWt2NY3suagmq0PjRbhyVaDznfVzTI0kRl/64xDc74kElusidewh55Y/5Ajrl1wBPrRhXG4fNQ== dependencies: "@noble/curves" "1.3.0" @@ -3976,49 +4006,49 @@ integrity sha512-Iwf7gxWMeDdrNqXYkVOib6PlDYwLw51+nMiFm1UW5nKxbQyVYHp7lhQNHsZrQ7Oqo84m9swWgzE7bhs21HkbYQ== "@nx/nx-darwin-x64@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.0.4.tgz#7b501c1556cbfd7f88c8655d5a2c5fa4b237b8e1" - integrity sha512-p+pmlq/mdNhQb12RwHP9V6yAUX9CLy8GUT4ijPzFTbxqa9dZbJk69NpSRwpAhAvvQ30gp1Zyh0t0/k/yaZqMIg== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.6.4.tgz#ba8465ace725220571ab2d822ad6994548980405" + integrity sha512-FB2XL2+ixbRI1fddz4oW+9MhoJASoTD8Ai4q5+B1OUPftgarIPLxaqI8TWba30Bos2AiYDofMJPf9uhBmLDH5Q== "@nx/nx-freebsd-x64@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.0.4.tgz#6d9ba7748d406b0914985945eeb31adf9d382956" - integrity sha512-XW2SXtfO245DRnAXVGYJUB7aBJsJ2rPD5pizxJET+l3VmtHGp2crdVuftw6iqjgrf2eAS+yCe61Jnqh687vWFg== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.6.4.tgz#c8c24390d07617b2223698cd55bf3fb50e3ae6aa" + integrity sha512-qNsXhlflc77afjcRKCn7bqI8l/HPEjKhQRFs8wfKbAfNw3XEASc0EZtBV/TStLGV6PEZQldVBaId5FBMp8GW6Q== "@nx/nx-linux-arm-gnueabihf@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.0.4.tgz#363c8adf6b4d836709a4d54f6263f113f1039af7" - integrity sha512-LCLuhbW3SIFz2FGiLdspCrNP889morCzTV/pEtxA8EgusWqCR8WjeSj3QvN8HN/GoXDsJxoUXvClZbHE+N6Hyg== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.6.4.tgz#929ed7f8d34062f2fad90aee10c7c80421231be5" + integrity sha512-rjfnii0xGe8SQqsO/DDHeJSjbqp2H5fOEgZlaYXDGOwQeLZ1TQplEdx8hyI/ErAUwVO3YHnzoMtmachBQOlspw== "@nx/nx-linux-arm64-gnu@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.0.4.tgz#81d9470130742f7042d870e584bb7728ed3cbc44" - integrity sha512-2jvS8MYYOI8eUBRTmE8HKm5mRVLqS5Cvlj06tEAjxrmH5d7Bv8BG5Ps9yZzT0qswfVKChpzIliwPZomUjLTxmA== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.6.4.tgz#3492a006d8588e09efd822612d18c12856ac4f3e" + integrity sha512-x6Zim1STewCXuHBCgoy2TO0586UlwH4RNCobn0mTiPd1jt7nU+fNqo3SpY8RzY1KmBfgcO48BBrfykPE9YWMpg== "@nx/nx-linux-arm64-musl@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.0.4.tgz#7f8176cf76ef7fc81af4ef434ac3d3959dcbf272" - integrity sha512-IK9gf8/AOtTW6rZajmGAFCN7EBzjmkIevt9MtOehQGlNXlMXydvUYKE5VU7d4oglvYs8aJJyayihfiZbFnTS8g== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.6.4.tgz#2c89d5b9f72742e4feb3f9001229dca1c0fdfed2" + integrity sha512-vYOqdgXIhtHFWdtnonp/jFfmfkyNPTu1JEdXuJpSxwUQdV2dWqS/l3HVPVWHXDrVKofPafK3M72jMvoWoaOQ6g== "@nx/nx-linux-x64-gnu@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.0.4.tgz#faeb8d6f54d81dd73abc21a2928cf4c18b810cc6" - integrity sha512-CdALjMqqNgiffQQIlyxx6mrxJCOqDzmN6BW3w9msCPHVSPOPp4AenlT0kpC7ALvmNEUm0lC4r093QbN2t6a/wA== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.6.4.tgz#8b0fa70bfd950235f91c27aa146803d8062eb4ec" + integrity sha512-UfWUDlOzlvQNVa1mnqOFxzvUwoGfM2o9ruhwYRoFm3XJbVYnjINyQsdcHwwDJItJP04LZzLPxA1+O8sU+Oqg6A== "@nx/nx-linux-x64-musl@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.0.4.tgz#2cc0e5be5415ac85f164943ea42ca4ca0889bcf9" - integrity sha512-2GPy+mAQo4JnfjTtsgGrHhZbTmmGy4RqaGowe0qMYCMuBME33ChG9iiRmArYmVtCAhYZVn26rK76/Vn3tK7fgg== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.6.4.tgz#5ae027493fe1e7580df43346e228345d181c964a" + integrity sha512-dwXpcyin4ScD5gH9FdhiNnOqFXclXLFBDTyRCEOlRUbOPayF9YEcH0PPIf9uWmwP3tshhAdr5sg9DLN+r7M3xg== "@nx/nx-win32-arm64-msvc@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.0.4.tgz#796e81bef402f216fa170eddd912578acb7bd939" - integrity sha512-jnZCCnTXoqOIrH0L31+qHVHmJuDYPoN6sl37/S1epP9n4fhcy9tjSx4xvx/WQSd417lU9saC+g7Glx2uFdgcTw== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.6.4.tgz#0674ba2b11282bc895ca8ab81b9be5364541bfb2" + integrity sha512-KqjJbFWhKJaKjET3Ep8hltXPizO0EstF4yfmp3oepWVn11poagc2MT1pf/tnRf6cdD88wd0bmw/83Ng6WUQ3Uw== "@nx/nx-win32-x64-msvc@*": - version "22.0.4" - resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.0.4.tgz#958951dd96ee14d908674f2846a9dc0f85318618" - integrity sha512-CDBqgb9RV5aHMDLcsS9kDDULc38u/eieZBhHBL01Ca5Tq075QuHn4uly6sYyHwVOxrhY4eaWNSfV2xG3Bg6Gtw== + version "22.6.4" + resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.6.4.tgz#dd7232091c4007b856e1cee3ecd7ea46fbc8c11e" + integrity sha512-CIL9m6uilGGr/eU+41/+aVWUnEcq+j1EDynUX2A4InLTbAN0ylte4Af+72mvipNiqJgDkjKaNzOCQDnp8QBjEQ== "@octokit/auth-token@^2.4.4": version "2.5.0" @@ -4479,7 +4509,7 @@ "@polkadot/keyring@13.5.6", "@polkadot/keyring@^13.1.1", "@polkadot/keyring@^13.2.1": version "13.5.6" - resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-13.5.6.tgz#b26d0cba323bb0520826211317701aa540428406" + resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-13.5.6.tgz" integrity sha512-Ybe6Mflrh96FKR5tfEaf/93RxJD7x9UigseNOJW6Yd8LF+GesdxrqmZD7zh+53Hb7smGQWf/0FCfwhoWZVgPUQ== dependencies: "@polkadot/util" "13.5.6" @@ -4799,7 +4829,7 @@ "@puppeteer/browsers@2.6.1": version "2.6.1" - resolved "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.1.tgz#d75aec5010cae377c5e4742bf5e4f62a79c21315" + resolved "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.1.tgz" integrity sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg== dependencies: debug "^4.4.0" @@ -5558,7 +5588,7 @@ "@swc/core-darwin-arm64@1.5.7": version "1.5.7" - resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.7.tgz#2b5cdbd34e4162e50de6147dd1a5cb12d23b08e8" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.7.tgz" integrity sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ== "@swc/core-darwin-x64@1.5.7": @@ -5608,7 +5638,7 @@ "@swc/core@1.5.7": version "1.5.7" - resolved "https://registry.npmjs.org/@swc/core/-/core-1.5.7.tgz#e1db7b9887d5f34eb4a3256a738d0c5f1b018c33" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.5.7.tgz" integrity sha512-U4qJRBefIJNJDRCCiVtkfa/hpiZ7w0R6kASea+/KLp+vkus3zcLSB8Ub8SvKgTIxjWpwsKcZlPf5nrv4ls46SQ== dependencies: "@swc/counter" "^0.1.2" @@ -5627,7 +5657,7 @@ "@swc/counter@^0.1.2", "@swc/counter@^0.1.3": version "0.1.3" - resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== "@swc/helpers@^0.5.11": @@ -5639,7 +5669,7 @@ "@swc/types@0.1.7": version "0.1.7" - resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.7.tgz#ea5d658cf460abff51507ca8d26e2d391bafb15e" + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.7.tgz" integrity sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ== dependencies: "@swc/counter" "^0.1.3" @@ -6200,12 +6230,12 @@ dependencies: "@types/node" "*" -"@types/node@*": - version "22.18.0" - resolved "https://registry.npmjs.org/@types/node/-/node-22.18.0.tgz" - integrity sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ== +"@types/node@*", "@types/node@^24.10.9": + version "24.10.9" + resolved "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz" + integrity sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw== dependencies: - undici-types "~6.21.0" + undici-types "~7.16.0" "@types/node@11.11.6": version "11.11.6" @@ -6250,13 +6280,6 @@ dependencies: undici-types "~5.26.4" -"@types/node@^24.10.9": - version "24.10.9" - resolved "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz#1aeb5142e4a92957489cac12b07f9c7fe26057d0" - integrity sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw== - dependencies: - undici-types "~7.16.0" - "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" @@ -6559,7 +6582,7 @@ "@types/yargs@^17.0.0": version "17.0.35" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz" integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== dependencies: "@types/yargs-parser" "*" @@ -7549,7 +7572,7 @@ aws4@^1.8.0: axios@0.25.0, axios@0.27.2, axios@1.7.4, axios@^0.21.2, axios@^0.26.1, axios@^1.13.0, axios@^1.6.0, axios@^1.8.3: version "1.13.5" - resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43" + resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz" integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q== dependencies: follow-redirects "^1.15.11" @@ -7558,7 +7581,7 @@ axios@0.25.0, axios@0.27.2, axios@1.7.4, axios@^0.21.2, axios@^0.26.1, axios@^1. b4a@^1.6.4: version "1.7.3" - resolved "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz#24cf7ccda28f5465b66aec2bac69e32809bf112f" + resolved "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz" integrity sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q== b64-lite@^1.3.1, b64-lite@^1.4.0: @@ -7625,12 +7648,12 @@ balanced-match@^1.0.0: bare-events@^2.5.4, bare-events@^2.7.0: version "2.8.2" - resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz#7b3e10bd8e1fc80daf38bb516921678f566ab89f" + resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz" integrity sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ== bare-fs@^4.0.1: version "4.5.1" - resolved "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.1.tgz#498a20a332d4a7f0b310eb89b8d2319041aa1eef" + resolved "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.1.tgz" integrity sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg== dependencies: bare-events "^2.5.4" @@ -7641,26 +7664,26 @@ bare-fs@^4.0.1: bare-os@^3.0.1: version "3.6.2" - resolved "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz#b3c4f5ad5e322c0fd0f3c29fc97d19009e2796e5" + resolved "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz" integrity sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A== bare-path@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz#b59d18130ba52a6af9276db3e96a2e3d3ea52178" + resolved "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz" integrity sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw== dependencies: bare-os "^3.0.1" bare-stream@^2.6.4: version "2.7.0" - resolved "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz#5b9e7dd0a354d06e82d6460c426728536c35d789" + resolved "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz" integrity sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A== dependencies: streamx "^2.21.0" bare-url@^2.2.2: version "2.3.2" - resolved "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz#4aef382efa662b2180a6fe4ca07a71b39bdf7ca3" + resolved "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz" integrity sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw== dependencies: bare-path "^3.0.0" @@ -8750,7 +8773,7 @@ chrome-trace-event@^1.0.2: chromium-bidi@0.11.0: version "0.11.0" - resolved "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz#9c3c42ee7b42d8448e9fce8d649dc8bfbcc31153" + resolved "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz" integrity sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA== dependencies: mitt "3.0.1" @@ -8916,7 +8939,7 @@ cmd-shim@^7.0.0: cmd-ts@0.13.0: version "0.13.0" - resolved "https://registry.npmjs.org/cmd-ts/-/cmd-ts-0.13.0.tgz#57bdbc5dc95eb5a3503ab3ac9591c91427a79fa1" + resolved "https://registry.npmjs.org/cmd-ts/-/cmd-ts-0.13.0.tgz" integrity sha512-nsnxf6wNIM/JAS7T/x/1JmbEsjH0a8tezXqqpaL0O6+eV0/aDEnRxwjxpu0VzDdRcaC1ixGSbRlUuf/IU59I4g== dependencies: chalk "^4.0.0" @@ -9792,7 +9815,7 @@ debug@^3.1.0, debug@^3.2.7: debug@^4.4.0: version "4.4.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== dependencies: ms "^2.1.3" @@ -10087,7 +10110,7 @@ detective@^4.0.0: devtools-protocol@0.0.1367902: version "0.0.1367902" - resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz#7333bfc4466c5a54a4c6de48a9dfbcb4b811660c" + resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz" integrity sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg== dezalgo@^1.0.4: @@ -10105,7 +10128,7 @@ di@^0.0.1: didyoumean@^1.2.2: version "1.2.2" - resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== diff@^3.5.0: @@ -10236,7 +10259,7 @@ domhandler@^5.0.2, domhandler@^5.0.3: dompurify@^3.3.1: version "3.3.1" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz#c7e1ddebfe3301eacd6c0c12a4af284936dbbb86" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz" integrity sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q== optionalDependencies: "@types/trusted-types" "^2.0.7" @@ -10434,7 +10457,7 @@ encodeurl@~2.0.0: encoding@^0.1.13: version "0.1.13" - resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" @@ -11254,7 +11277,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.4: events-universal@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz#b56a84fd611b6610e0a2d0f09f80fdf931e2dfe6" + resolved "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz" integrity sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw== dependencies: bare-events "^2.7.0" @@ -11488,7 +11511,7 @@ fast-diff@^1.1.2: fast-fifo@^1.2.0, fast-fifo@^1.3.2: version "1.3.2" - resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== fast-glob@^3.2.5, fast-glob@^3.2.9: @@ -11871,7 +11894,7 @@ fp-ts@2.16.2: fp-ts@2.16.9: version "2.16.9" - resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.9.tgz#99628fc5e0bb3b432c4a16d8f4455247380bae8a" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.9.tgz" integrity sha512-+I2+FnVB+tVaxcYyQkHUq7ZdKScaBlX53A41mxQtpIccsfyv8PzdzP7fzp2AY832T4aoK6UZ5WRX/ebGd8uZuQ== fp-ts@^2.0.0, fp-ts@^2.12.2, fp-ts@^2.16.2: @@ -12878,7 +12901,7 @@ iconv-lite@0.4.24: iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -13604,9 +13627,9 @@ isexe@^2.0.0: integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + version "3.1.5" + resolved "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz#42e368f68d5e10dadfee4fda7b550bc2d8892dc9" + integrity sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w== iso-url@~0.4.7: version "0.4.7" @@ -15263,7 +15286,7 @@ minizlib@^3.0.1, minizlib@^3.1.0: mitt@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== mkdirp@^0.5.5: @@ -16199,7 +16222,7 @@ open@^8.4.0: openapi-types@12.1.3: version "12.1.3" - resolved "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" + resolved "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz" integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== opener@^1.5.2: @@ -17449,7 +17472,7 @@ proxy-agent@6.4.0: proxy-agent@^6.5.0: version "6.5.0" - resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz" integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A== dependencies: agent-base "^7.1.2" @@ -17517,7 +17540,7 @@ punycode@^2.1.0, punycode@^2.1.1: puppeteer-core@23.11.1: version "23.11.1" - resolved "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.11.1.tgz#3e064de11b3cb3a2df1a8060ff2d05b41be583db" + resolved "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.11.1.tgz" integrity sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg== dependencies: "@puppeteer/browsers" "2.6.1" @@ -17529,7 +17552,7 @@ puppeteer-core@23.11.1: puppeteer@^23.10.0: version "23.11.1" - resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-23.11.1.tgz#98fd9040786b1219b1a4f639c270377586e8899c" + resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-23.11.1.tgz" integrity sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw== dependencies: "@puppeteer/browsers" "2.6.1" @@ -18494,7 +18517,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: semver@^7.6.3: version "7.7.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== send@0.19.0: @@ -18872,7 +18895,7 @@ sirv@^2.0.3: sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== sjcl@^1.0.6, "sjcl@npm:@bitgo/sjcl@1.0.1": @@ -19332,7 +19355,7 @@ streamroller@^3.1.5: streamx@^2.15.0, streamx@^2.21.0: version "2.23.0" - resolved "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz#7d0f3d00d4a6c5de5728aecd6422b4008d66fd0b" + resolved "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz" integrity sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg== dependencies: events-universal "^1.0.0" @@ -19723,7 +19746,7 @@ tape@^4.6.3: tar-fs@^3.0.6: version "3.1.1" - resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz#4f164e59fb60f103d472360731e8c6bb4a7fe9ef" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz" integrity sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg== dependencies: pump "^3.0.0" @@ -19734,7 +19757,7 @@ tar-fs@^3.0.6: tar-stream@^3.1.5: version "3.1.7" - resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz" integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== dependencies: b4a "^1.6.4" @@ -19754,7 +19777,7 @@ tar-stream@~2.2.0: tar@6.2.1, tar@^6.1.11, tar@^6.1.2: version "6.2.1" - resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" @@ -19817,7 +19840,7 @@ test-exclude@^6.0.0: text-decoder@^1.1.0: version "1.2.3" - resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz#b19da364d981b2326d5f43099c310cc80d770c65" + resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz" integrity sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA== dependencies: b4a "^1.6.4" @@ -20295,7 +20318,7 @@ typed-array-length@^1.0.7: typed-query-selector@^2.12.0: version "2.12.0" - resolved "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz#92b65dbc0a42655fccf4aeb1a08b1dddce8af5f2" + resolved "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz" integrity sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg== typedarray-to-buffer@^3.1.5: @@ -20393,7 +20416,7 @@ unbox-primitive@^1.1.0: unbzip2-stream@^1.4.3: version "1.4.3" - resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: buffer "^5.2.1" @@ -20420,11 +20443,6 @@ undici-types@~6.19.2: resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - undici-types@~7.10.0: version "7.10.0" resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz" @@ -20432,7 +20450,7 @@ undici-types@~7.10.0: undici-types@~7.16.0: version "7.16.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== unicode-canonical-property-names-ecmascript@^2.0.0: @@ -21288,7 +21306,7 @@ ws@7.5.10, ws@8.17.1, ws@8.18.0, ws@^7, ws@^7.0.0, ws@^7.3.1, ws@^7.5.10: ws@~8.17.1: version "8.17.1" - resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== wsl-utils@^0.1.0: @@ -21499,7 +21517,7 @@ yoctocolors-cjs@^2.1.2: zod@3.23.8: version "3.23.8" - resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" + resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== zod@^3.21.4: