diff --git a/docs/openrpc.json b/docs/openrpc.json index 1e671049..4c310ccd 100644 --- a/docs/openrpc.json +++ b/docs/openrpc.json @@ -591,7 +591,10 @@ "$ref": "#/components/schemas/Address" } }, - "required": ["value", "address"] + "required": [ + "value", + "address" + ] }, { "description": "Output is a 'data output'. Register arbitrary data on the blockchain.", @@ -605,7 +608,9 @@ "type": "string" } }, - "required": ["data"] + "required": [ + "data" + ] } ] } @@ -628,7 +633,10 @@ "type": "number" } }, - "required": ["txId", "index"] + "required": [ + "txId", + "index" + ] } } }, @@ -850,7 +858,10 @@ "type": "object", "properties": { "type": { - "enum": ["deposit", "withdrawal"] + "enum": [ + "deposit", + "withdrawal" + ] }, "amount": { "type": "string" @@ -867,7 +878,11 @@ "$ref": "#/components/schemas/Address" } }, - "required": ["type", "amount", "token"] + "required": [ + "type", + "amount", + "token" + ] }, "TransactionHex": { "description": "Transaction encoded in hexadecimal.", @@ -991,7 +1006,7 @@ "type": "string" } }, - "errors":{ + "errors": { "NotImplementedError": { "code": -31001, "message": "Feature not implemented" diff --git a/packages/hathor-rpc-handler/__tests__/rpcMethods/batchRequests.test.ts b/packages/hathor-rpc-handler/__tests__/rpcMethods/batchRequests.test.ts new file mode 100644 index 00000000..7889d88c --- /dev/null +++ b/packages/hathor-rpc-handler/__tests__/rpcMethods/batchRequests.test.ts @@ -0,0 +1,750 @@ +/** + * Copyright (c) Hathor Labs and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { HathorWallet } from '@hathor/wallet-lib'; +import { batchRequests } from '../../src/rpcMethods/batchRequests'; +import { + RpcMethods, + BatchRequestsRpcRequest, + TriggerTypes, + TriggerResponseTypes, + RpcResponseTypes, + BatchRequestsResponse, +} from '../../src/types'; +import { + InvalidParamsError, + PromptRejectedError, +} from '../../src/errors'; + +describe('batchRequests', () => { + let wallet: jest.Mocked; + let promptHandler: jest.Mock; + + beforeEach(() => { + // Mock wallet + wallet = { + getNetwork: jest.fn().mockReturnValue('testnet'), + sendManyOutputsSendTransaction: jest.fn(), + createNewToken: jest.fn(), + signMessageWithAddress: jest.fn(), + getAddressAtIndex: jest.fn().mockResolvedValue('testAddress'), + getAddressPathForIndex: jest.fn().mockResolvedValue('m/44\'/280\'/0\'/0/0'), + getCurrentAddress: jest.fn().mockResolvedValue({ + address: 'testAddress', + index: 0, + addressPath: 'm/44\'/280\'/0\'/0/0', + }), + getBalance: jest.fn().mockResolvedValue([{ + token: { id: '00', name: 'Hathor', symbol: 'HTR' }, + balance: { unlocked: 100n, locked: 0n }, + }]), + getUtxos: jest.fn().mockResolvedValue({ + total_amount_available: 100n, + total_utxos_available: 1n, + total_amount_locked: 0n, + total_utxos_locked: 0n, + utxos: [], + }), + } as unknown as jest.Mocked; + + // Mock prompt handler + promptHandler = jest.fn(); + }); + + describe('schema validation', () => { + it('should reject empty batch requests', async () => { + const rpcRequest: any = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [], + }, + }; + + await expect( + batchRequests(rpcRequest, wallet, {}, promptHandler) + ).rejects.toThrow(InvalidParamsError); + }); + + it('should reject batch with more than 20 operations', async () => { + const rpcRequest: any = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: Array(21).fill({ + id: 'op', + method: RpcMethods.GetAddress, + params: { network: 'testnet', type: 'first_empty' }, + }), + }, + }; + + await expect( + batchRequests(rpcRequest, wallet, {}, promptHandler) + ).rejects.toThrow(InvalidParamsError); + }); + + it('should reject batch with inconsistent networks', async () => { + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [ + { + id: 'op1', + method: RpcMethods.GetAddress, + params: { network: 'mainnet', type: 'first_empty' }, + }, + ], + }, + }; + + await expect( + batchRequests(rpcRequest, wallet, {}, promptHandler) + ).rejects.toThrow(InvalidParamsError); + }); + + it('should reject batch with invalid operation parameters', async () => { + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [ + { + id: 'op1', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [], // Invalid: empty outputs + }, + }, + ], + }, + }; + + await expect( + batchRequests(rpcRequest, wallet, {}, promptHandler) + ).rejects.toThrow(InvalidParamsError); + }); + }); + + describe('user approval', () => { + it('should reject if user rejects batch confirmation', async () => { + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [ + { + id: 'get-address', + method: RpcMethods.GetAddress, + params: { network: 'testnet', type: 'first_empty' }, + }, + ], + }, + }; + + promptHandler.mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: false }, + }); + + await expect( + batchRequests(rpcRequest, wallet, {}, promptHandler) + ).rejects.toThrow(PromptRejectedError); + }); + + it('should reject if user rejects PIN prompt', async () => { + wallet.sendManyOutputsSendTransaction = jest.fn().mockResolvedValue({ + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr', value: 100n, token: '00' }], + }), + run: jest.fn(), + }); + + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [ + { + id: 'send-tx', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr', value: '100', token: '00' }], + }, + }, + ], + }, + }; + + promptHandler + .mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { accepted: false }, + }); + + await expect( + batchRequests(rpcRequest, wallet, {}, promptHandler) + ).rejects.toThrow(PromptRejectedError); + }); + }); + + describe('read-only batch (no PIN required)', () => { + it('should execute read operations without requesting PIN', async () => { + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + errorHandling: 'fail-fast', + requests: [ + { + id: 'get-address', + method: RpcMethods.GetAddress, + params: { network: 'testnet', type: 'first_empty' }, + }, + { + id: 'get-balance', + method: RpcMethods.GetBalance, + params: { network: 'testnet', tokens: ['00'] }, + }, + ], + }, + }; + + promptHandler.mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + // Should only call batch confirmation, not PIN prompt + expect(promptHandler).toHaveBeenCalledTimes(5); // confirm + initial loading + 2x operation loading + loading finished + expect(promptHandler).toHaveBeenCalledWith( + expect.objectContaining({ + type: TriggerTypes.BatchRequestsConfirmationPrompt, + }), + {} + ); + expect(promptHandler).not.toHaveBeenCalledWith( + expect.objectContaining({ + type: TriggerTypes.PinConfirmationPrompt, + }), + {} + ); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('success'); + expect(batchResponse.response.results).toHaveLength(2); + expect(batchResponse.response.results[0].status).toBe('success'); + expect(batchResponse.response.results[1].status).toBe('success'); + }); + }); + + describe('write operations batch (PIN required)', () => { + it('should execute write operations with single PIN entry', async () => { + const txResponse = { hash: 'txHash123' }; + const signResponse = 'signature123'; + + wallet.sendManyOutputsSendTransaction = jest.fn().mockResolvedValue({ + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr', value: 100n, token: '00' }], + }), + run: jest.fn().mockResolvedValue(txResponse), + }); + + wallet.signMessageWithAddress = jest.fn().mockResolvedValue(signResponse); + + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + errorHandling: 'fail-fast', + requests: [ + { + id: 'send-tx', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr', value: '100', token: '00' }], + }, + }, + { + id: 'sign-msg', + method: RpcMethods.SignWithAddress, + params: { + network: 'testnet', + message: 'test message', + addressIndex: 0, + }, + }, + ], + }, + }; + + const pinCode = '123456'; + promptHandler + .mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { accepted: true, pinCode }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('success'); + expect(batchResponse.response.results).toHaveLength(2); + expect(batchResponse.response.results[0].id).toBe('send-tx'); + expect(batchResponse.response.results[0].status).toBe('success'); + expect(batchResponse.response.results[1].id).toBe('sign-msg'); + expect(batchResponse.response.results[1].status).toBe('success'); + + // Verify PIN was only requested once + expect(promptHandler).toHaveBeenCalledWith( + expect.objectContaining({ + type: TriggerTypes.PinConfirmationPrompt, + }), + {} + ); + }); + }); + + describe('mixed read and write operations', () => { + it('should request PIN once for batch with mixed operations', async () => { + wallet.sendManyOutputsSendTransaction = jest.fn().mockResolvedValue({ + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr', value: 100n, token: '00' }], + }), + run: jest.fn().mockResolvedValue({ hash: 'txHash' }), + }); + + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [ + { + id: 'get-balance', + method: RpcMethods.GetBalance, + params: { network: 'testnet', tokens: ['00'] }, + }, + { + id: 'send-tx', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr', value: '100' }], + }, + }, + ], + }, + }; + + promptHandler + .mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { accepted: true, pinCode: '123456' }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('success'); + expect(batchResponse.response.results).toHaveLength(2); + expect(batchResponse.response.results[0].status).toBe('success'); + expect(batchResponse.response.results[1].status).toBe('success'); + }); + }); + + describe('error handling: fail-fast', () => { + it('should stop at first error and mark remaining as skipped', async () => { + // Create mocks that return the same object for both preparation and execution + const tx1Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr1', value: 100n, token: '00' }], + }), + run: jest.fn().mockResolvedValue({ hash: 'tx1' }), + }; + const tx2Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr2', value: 100n, token: '00' }], + }), + run: jest.fn().mockRejectedValue(new Error('Insufficient funds')), + }; + const tx3Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr3', value: 100n, token: '00' }], + }), + run: jest.fn().mockResolvedValue({ hash: 'tx3' }), + }; + + wallet.sendManyOutputsSendTransaction = jest.fn() + .mockResolvedValueOnce(tx1Mock) // tx1 preparation + .mockResolvedValueOnce(tx2Mock) // tx2 preparation + .mockResolvedValueOnce(tx3Mock) // tx3 preparation + .mockResolvedValueOnce(tx1Mock) // tx1 execution + .mockResolvedValueOnce(tx2Mock); // tx2 execution (fails, so tx3 never executes) + + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + errorHandling: 'fail-fast', + requests: [ + { + id: 'tx1', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr1', value: '100' }], + }, + }, + { + id: 'tx2', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr2', value: '100' }], + }, + }, + { + id: 'tx3', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr3', value: '100' }], + }, + }, + ], + }, + }; + + promptHandler + .mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { accepted: true, pinCode: '123456' }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('partial-success'); // tx1 succeeded, tx2 failed, tx3 skipped + expect(batchResponse.response.results).toHaveLength(3); + expect(batchResponse.response.results[0].status).toBe('success'); + expect(batchResponse.response.results[1].status).toBe('failed'); + expect(batchResponse.response.results[1].error).toBeDefined(); + expect(batchResponse.response.results[2].status).toBe('skipped'); + }); + }); + + describe('error handling: continue-on-error', () => { + it('should continue executing operations after error', async () => { + // Create mocks that return the same object for both preparation and execution + const tx1Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr1', value: 100n, token: '00' }], + }), + run: jest.fn().mockResolvedValue({ hash: 'tx1' }), + }; + const tx2Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr2', value: 100n, token: '00' }], + }), + run: jest.fn().mockRejectedValue(new Error('Insufficient funds')), + }; + const tx3Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr3', value: 100n, token: '00' }], + }), + run: jest.fn().mockResolvedValue({ hash: 'tx3' }), + }; + + wallet.sendManyOutputsSendTransaction = jest.fn() + .mockResolvedValueOnce(tx1Mock) // tx1 preparation + .mockResolvedValueOnce(tx2Mock) // tx2 preparation + .mockResolvedValueOnce(tx3Mock) // tx3 preparation + .mockResolvedValueOnce(tx1Mock) // tx1 execution + .mockResolvedValueOnce(tx2Mock) // tx2 execution (fails) + .mockResolvedValueOnce(tx3Mock); // tx3 execution (continues despite tx2 failure) + + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + errorHandling: 'continue-on-error', + requests: [ + { + id: 'tx1', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr1', value: '100' }], + }, + }, + { + id: 'tx2', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr2', value: '100' }], + }, + }, + { + id: 'tx3', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr3', value: '100' }], + }, + }, + ], + }, + }; + + promptHandler + .mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { accepted: true, pinCode: '123456' }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('partial-success'); + expect(batchResponse.response.results).toHaveLength(3); + expect(batchResponse.response.results[0].status).toBe('success'); + expect(batchResponse.response.results[1].status).toBe('failed'); + expect(batchResponse.response.results[1].error).toBeDefined(); + expect(batchResponse.response.results[2].status).toBe('success'); + }); + }); + + describe('loading triggers', () => { + it('should emit loading triggers during execution', async () => { + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [ + { + id: 'op1', + method: RpcMethods.GetAddress, + params: { network: 'testnet', type: 'first_empty' }, + }, + { + id: 'op2', + method: RpcMethods.GetBalance, + params: { network: 'testnet', tokens: ['00'] }, + }, + ], + }, + }; + + promptHandler.mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }); + + await batchRequests(rpcRequest, wallet, {}, promptHandler); + + // Should have emitted loading triggers + expect(promptHandler).toHaveBeenCalledWith( + expect.objectContaining({ + type: TriggerTypes.BatchRequestsLoadingTrigger, + data: expect.objectContaining({ + total: 2, + current: expect.any(Number), + currentOperation: expect.any(String), + }), + }), + {} + ); + + expect(promptHandler).toHaveBeenCalledWith( + expect.objectContaining({ + type: TriggerTypes.BatchRequestsLoadingFinishedTrigger, + }), + {} + ); + }); + }); + + describe('overall status calculation', () => { + it('should return "success" when all operations succeed', async () => { + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + requests: [ + { + id: 'op1', + method: RpcMethods.GetAddress, + params: { network: 'testnet', type: 'first_empty' }, + }, + ], + }, + }; + + promptHandler.mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('success'); + }); + + it('should return "failed" when all operations fail or are skipped', async () => { + wallet.sendManyOutputsSendTransaction = jest.fn().mockResolvedValue({ + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr', value: 100n, token: '00' }], + }), + run: jest.fn().mockRejectedValue(new Error('Failed')), + }); + + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + errorHandling: 'fail-fast', + requests: [ + { + id: 'tx1', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr', value: '100' }], + }, + }, + ], + }, + }; + + promptHandler + .mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { accepted: true, pinCode: '123456' }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('failed'); + }); + + it('should return "partial-success" when some operations succeed', async () => { + // Create mocks that return the same object for both preparation and execution + const tx1Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr1', value: 100n, token: '00' }], + }), + run: jest.fn().mockResolvedValue({ hash: 'tx1' }), + }; + const tx2Mock = { + prepareTxData: jest.fn().mockResolvedValue({ + inputs: [], + outputs: [{ address: 'addr2', value: 100n, token: '00' }], + }), + run: jest.fn().mockRejectedValue(new Error('Failed')), + }; + + wallet.sendManyOutputsSendTransaction = jest.fn() + .mockResolvedValueOnce(tx1Mock) // tx1 preparation + .mockResolvedValueOnce(tx2Mock) // tx2 preparation + .mockResolvedValueOnce(tx1Mock) // tx1 execution + .mockResolvedValueOnce(tx2Mock); // tx2 execution (fails) + + const rpcRequest: BatchRequestsRpcRequest = { + method: RpcMethods.BatchRequests, + params: { + network: 'testnet', + errorHandling: 'continue-on-error', + requests: [ + { + id: 'tx1', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr1', value: '100' }], + }, + }, + { + id: 'tx2', + method: RpcMethods.SendTransaction, + params: { + network: 'testnet', + outputs: [{ address: 'addr2', value: '100' }], + }, + }, + ], + }, + }; + + promptHandler + .mockResolvedValueOnce({ + type: TriggerResponseTypes.BatchRequestsConfirmationResponse, + data: { accepted: true }, + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { accepted: true, pinCode: '123456' }, + }); + + const response = await batchRequests(rpcRequest, wallet, {}, promptHandler); + + expect(response.type).toBe(RpcResponseTypes.BatchRequestsResponse); + const batchResponse = response as BatchRequestsResponse; + expect(batchResponse.response.status).toBe('partial-success'); + }); + }); +}); diff --git a/packages/hathor-rpc-handler/__tests__/rpcMethods/sendNanoContractTx.test.ts b/packages/hathor-rpc-handler/__tests__/rpcMethods/sendNanoContractTx.test.ts index 9730b019..f2545118 100644 --- a/packages/hathor-rpc-handler/__tests__/rpcMethods/sendNanoContractTx.test.ts +++ b/packages/hathor-rpc-handler/__tests__/rpcMethods/sendNanoContractTx.test.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import { HathorWallet, nanoUtils } from '@hathor/wallet-lib'; +import { HathorWallet, nanoUtils, ncApi } from '@hathor/wallet-lib'; import { NanoContractAction } from '@hathor/wallet-lib/lib/nano_contracts/types'; import { sendNanoContractTx, NanoContractActionWithStringAmount } from '../../src/rpcMethods/sendNanoContractTx'; import { TriggerTypes, RpcMethods, SendNanoContractRpcRequest, TriggerResponseTypes, RpcResponseTypes } from '../../src/types'; @@ -13,6 +13,14 @@ import { SendNanoContractTxError, InvalidParamsError } from '../../src/errors'; jest.spyOn(nanoUtils, 'validateAndParseBlueprintMethodArgs').mockResolvedValue([]); +jest.spyOn(nanoUtils, 'getBlueprintId').mockResolvedValue('test-blueprint'); +jest.spyOn(ncApi, 'getBlueprintInformation').mockResolvedValue({ + id: 'mock-blueprint-id', + name: 'mock-blueprint', + attributes: new Map(), + public_methods: new Map(), + private_methods: new Map(), +}); describe('sendNanoContractTx', () => { let rpcRequest: SendNanoContractRpcRequest; @@ -501,6 +509,29 @@ describe('sendNanoContractTx parameter validation', () => { }); it('should accept valid parameters with nc_id', async () => { + const promptHandler = jest.fn() + .mockResolvedValueOnce({ + type: TriggerResponseTypes.SendNanoContractTxConfirmationResponse, + data: { + accepted: true, + nc: { + caller: 'test-caller', + blueprintId: 'test-blueprint', + ncId: null, + actions: [] as NanoContractAction[], + args: [] as unknown[], + method: 'test-method', + pushTx: true, + }, + } + }) + .mockResolvedValueOnce({ + type: TriggerResponseTypes.PinRequestResponse, + data: { + accepted: true, + pinCode: '1234', + } + }); const validActions = [ { type: 'deposit', @@ -515,7 +546,7 @@ describe('sendNanoContractTx parameter validation', () => { params: { network: 'mainnet', method: 'test-method', - blueprint_id: '', + blueprint_id: '', // no blueprint id in the parameters nc_id: 'test-nc-id', actions: validActions as unknown as NanoContractAction[], args: [] as unknown[], @@ -523,9 +554,22 @@ describe('sendNanoContractTx parameter validation', () => { }, } as SendNanoContractRpcRequest; - await expect( - sendNanoContractTx(validRequest, mockWallet, {}, mockTriggerHandler) - ).resolves.toBeDefined(); + await sendNanoContractTx(validRequest, mockWallet, {}, promptHandler); + expect(promptHandler).toHaveBeenCalledWith({ + ...validRequest, + type: TriggerTypes.SendNanoContractTxConfirmationPrompt, + data: { + actions: expect.any(Array), + args: expect.any(Array), + parsedArgs: expect.any(Array), + blueprintId: 'test-blueprint', // make sure we added the blueprint id in the data object + method: expect.any(String), + ncId: expect.any(String), + pushTx: expect.any(Boolean), + } + }, {}); + + expect(nanoUtils.getBlueprintId).toHaveBeenCalled(); }); it('should use default push_tx value when not provided', async () => { diff --git a/packages/hathor-rpc-handler/package.json b/packages/hathor-rpc-handler/package.json index d5f16b72..3dc90d9c 100644 --- a/packages/hathor-rpc-handler/package.json +++ b/packages/hathor-rpc-handler/package.json @@ -1,7 +1,7 @@ { "name": "@hathor/hathor-rpc-handler", "license": "MIT", - "version": "3.0.1", + "version": "3.1.0", "main": "dist/index.js", "typings": "dist/index.d.ts", "files": [ diff --git a/packages/hathor-rpc-handler/src/rpcHandler/index.ts b/packages/hathor-rpc-handler/src/rpcHandler/index.ts index 0252c7be..0abff01b 100644 --- a/packages/hathor-rpc-handler/src/rpcHandler/index.ts +++ b/packages/hathor-rpc-handler/src/rpcHandler/index.ts @@ -23,6 +23,7 @@ import { SendTransactionRpcRequest, CreateNanoContractCreateTokenTxRpcRequest, ChangeNetworkRpcRequest, + BatchRequestsRpcRequest, } from '../types'; import { getAddress, @@ -36,6 +37,7 @@ import { sendTransaction, createNanoContractCreateTokenTx, changeNetwork, + batchRequests, } from '../rpcMethods'; import { InvalidRpcMethod } from '../errors'; @@ -112,6 +114,12 @@ export const handleRpcRequest = async ( requestMetadata, promptHandler, ); + case RpcMethods.BatchRequests: return batchRequests( + request as BatchRequestsRpcRequest, + wallet, + requestMetadata, + promptHandler, + ); default: throw new InvalidRpcMethod(); } }; diff --git a/packages/hathor-rpc-handler/src/rpcMethods/batchRequests.ts b/packages/hathor-rpc-handler/src/rpcMethods/batchRequests.ts new file mode 100644 index 00000000..f3b71a6b --- /dev/null +++ b/packages/hathor-rpc-handler/src/rpcMethods/batchRequests.ts @@ -0,0 +1,725 @@ +/** + * Copyright (c) Hathor Labs and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { z } from 'zod'; +import { config, Network, ncApi, nanoUtils } from '@hathor/wallet-lib'; +import type { IHathorWallet } from '@hathor/wallet-lib'; +import type { AddressInfoObject } from '@hathor/wallet-lib/lib/wallet/types'; +import { + TriggerTypes, + TriggerHandler, + RequestMetadata, + RpcResponse, + RpcResponseTypes, + RpcMethods, + BatchRequestsRpcRequest, + BatchOperationRequest, + BatchRequestsConfirmationPrompt, + BatchRequestsConfirmationResponse, + PinConfirmationPrompt, + PinRequestResponse, + BatchOperationDetail, + SendTransactionDetails, + CreateTokenDetails, + SendNanoContractDetails, + SignWithAddressDetails, + SignOracleDataDetails, + GetAddressDetails, + GetBalanceDetails, + GetUtxosDetails, + ChangeNetworkDetails, + BatchOperationResult, +} from '../types'; +import { + PromptRejectedError, + InvalidParamsError, + InsufficientFundsError, + PrepareSendTransactionError, + SendNanoContractTxError, + NotImplementedError, +} from '../errors'; +import { validateNetwork } from '../helpers'; +import { createTokenRpcSchema } from '../schemas'; +// Import schemas from existing RPC methods +import { sendTransactionSchema } from './sendTransaction'; +import { signWithAddressSchema } from './signWithAddress'; +import { signOracleDataSchema } from './signOracleData'; +import { sendNanoContractSchema } from './sendNanoContractTx'; +import { getAddressSchema } from './getAddress'; +import { getBalanceSchema } from './getBalance'; +import { getUtxosSchema } from './getUtxos'; +import { changeNetworkSchema } from './changeNetwork'; + +const batchRequestsSchema = z.object({ + method: z.literal(RpcMethods.BatchRequests), + params: z.object({ + network: z.string().min(1), + requests: z.array(z.object({ + id: z.string().min(1), + method: z.nativeEnum(RpcMethods), + params: z.any(), + })).min(1).max(20), // Limit to 20 operations + errorHandling: z.enum(['fail-fast', 'continue-on-error']).default('fail-fast'), + }), +}); + +/** + * Prepares an operation for batch execution by validating and parsing its parameters + */ +async function prepareOperation( + request: BatchOperationRequest, + wallet: IHathorWallet, +): Promise { + + switch (request.method) { + case RpcMethods.SendTransaction: { + // Validate schema + const validationResult = sendTransactionSchema.safeParse({ + method: request.method, + params: request.params, + }); + + if (!validationResult.success) { + throw new InvalidParamsError( + validationResult.error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ') + ); + } + + const { params } = validationResult.data; + + // Prepare transaction (this validates inputs and calculates change) + const stubPinCode = '111111'; + const sendTx = await wallet.sendManyOutputsSendTransaction( + params.outputs, + { + inputs: params.inputs || [], + changeAddress: params.changeAddress, + pinCode: stubPinCode, + } + ); + + let preparedTx; + try { + preparedTx = await sendTx.prepareTxData(); + } catch (err) { + if (err instanceof Error) { + if (err.message.includes('Insufficient amount of tokens')) { + throw new InsufficientFundsError(err.message); + } + } + throw new PrepareSendTransactionError( + err instanceof Error ? err.message : 'Unknown error preparing transaction' + ); + } + + return { + id: request.id, + method: request.method, + description: 'Send Transaction', + params: request.params, + details: { + type: 'sendTransaction', + outputs: preparedTx.outputs, + inputs: preparedTx.inputs, + changeAddress: params.changeAddress, + }, + }; + } + + case RpcMethods.CreateToken: { + const params = createTokenRpcSchema.parse(request.params); + + if (params.options.changeAddress && !await wallet.isAddressMine(params.options.changeAddress)) { + throw new Error('Change address is not from this wallet'); + } + + return { + id: request.id, + method: request.method, + description: `Create Token: ${params.name} (${params.symbol})`, + params: request.params, + details: { + type: 'createToken', + name: params.name, + symbol: params.symbol, + amount: params.amount, + mintAddress: params.options.mintAddress, + changeAddress: params.options.changeAddress, + createMint: params.options.createMint, + mintAuthorityAddress: params.options.mintAuthorityAddress, + allowExternalMintAuthorityAddress: params.options.allowExternalMintAuthorityAddress, + createMelt: params.options.createMelt, + meltAuthorityAddress: params.options.meltAuthorityAddress, + allowExternalMeltAuthorityAddress: params.options.allowExternalMeltAuthorityAddress, + data: params.options.data, + }, + }; + } + + case RpcMethods.SendNanoContractTx: { + const params = sendNanoContractSchema.parse(request.params); + + let blueprintId = params.blueprintId; + if (blueprintId) { + // Validate blueprint + try { + await ncApi.getBlueprintInformation(blueprintId); + } catch (e) { + throw new SendNanoContractTxError(`Invalid blueprint ID ${blueprintId}`); + } + } else { + // Get blueprint from NC ID + try { + blueprintId = await nanoUtils.getBlueprintId(params.ncId!, wallet); + } catch { + throw new SendNanoContractTxError( + `Error getting blueprint id with nc id ${params.ncId}` + ); + } + } + + // Validate and parse blueprint method args + config.setServerUrl(wallet.getServerUrl()); + const result = await nanoUtils.validateAndParseBlueprintMethodArgs( + blueprintId!, + params.method, + params.args, + new Network(params.network) + ); + const parsedArgs = result.map(data => ({ ...data, parsed: data.field.toUser() })); + + return { + id: request.id, + method: request.method, + description: `Nano Contract: ${params.method}`, + params: request.params, + details: { + type: 'sendNanoContract', + blueprintId: blueprintId!, + ncId: params.ncId, + actions: params.actions, + method: params.method, + args: params.args, + parsedArgs, + }, + }; + } + + case RpcMethods.SignWithAddress: { + const parseResult = signWithAddressSchema.safeParse({ + method: request.method, + params: request.params, + }); + + if (!parseResult.success) { + throw new InvalidParamsError( + parseResult.error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ') + ); + } + + const { params } = parseResult.data; + const base58 = await wallet.getAddressAtIndex(params.addressIndex); + const addressPath = await wallet.getAddressPathForIndex(params.addressIndex); + + const address: AddressInfoObject = { + address: base58, + index: params.addressIndex, + addressPath, + info: undefined, + }; + + return { + id: request.id, + method: request.method, + description: `Sign Message with Address ${params.addressIndex}`, + params: request.params, + details: { + type: 'signWithAddress', + address, + message: params.message, + }, + }; + } + + case RpcMethods.SignOracleData: { + const parseResult = signOracleDataSchema.safeParse(request.params); + + if (!parseResult.success) { + throw new InvalidParamsError( + parseResult.error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ') + ); + } + + const params = parseResult.data; + + return { + id: request.id, + method: request.method, + description: `Sign Oracle Data for ${params.oracle}`, + params: request.params, + details: { + type: 'signOracleData', + oracle: params.oracle, + data: params.data, + }, + }; + } + + case RpcMethods.GetAddress: { + const params = getAddressSchema.parse(request.params); + + return { + id: request.id, + method: request.method, + description: `Get Address (${params.type})`, + params: request.params, + details: { + type: 'getAddress', + addressType: params.type as 'first_empty' | 'index' | 'client' | 'full_path', + index: 'index' in params ? params.index : undefined, + fullPath: 'full_path' in params ? params.full_path : undefined, + }, + }; + } + + case RpcMethods.GetBalance: { + const params = getBalanceSchema.parse(request.params); + + return { + id: request.id, + method: request.method, + description: `Get Balance (${params.tokens.length} token${params.tokens.length > 1 ? 's' : ''})`, + params: request.params, + details: { + type: 'getBalance', + tokens: params.tokens, + addressIndexes: params.addressIndexes, + }, + }; + } + + case RpcMethods.GetUtxos: { + const validatedRequest = getUtxosSchema.parse({ + method: request.method, + params: request.params, + }); + + return { + id: request.id, + method: request.method, + description: `Get UTXOs${validatedRequest.params.token ? ` for token ${validatedRequest.params.token}` : ''}`, + params: request.params, + details: { + type: 'getUtxos', + token: validatedRequest.params.token, + maxUtxos: validatedRequest.params.maxUtxos, + filterAddress: validatedRequest.params.filterAddress, + authorities: validatedRequest.params.authorities, + amountSmallerThan: validatedRequest.params.amountSmallerThan, + amountBiggerThan: validatedRequest.params.amountBiggerThan, + maximumAmount: validatedRequest.params.maximumAmount, + onlyAvailableUtxos: validatedRequest.params.onlyAvailableUtxos, + }, + }; + } + + case RpcMethods.ChangeNetwork: { + const params = changeNetworkSchema.parse(request.params); + + return { + id: request.id, + method: request.method, + description: `Change Network to ${params.newNetwork}`, + params: request.params, + details: { + type: 'changeNetwork', + newNetwork: params.newNetwork, + }, + }; + } + + default: + throw new Error(`Unsupported batch operation: ${request.method}`); + } +} + +/** + * Executes a prepared operation with the provided PIN code + */ +async function executeOperation( + operation: BatchOperationDetail, + wallet: IHathorWallet, + pinCode: string | undefined, + _metadata: RequestMetadata, +): Promise { + + switch (operation.method) { + case RpcMethods.SendTransaction: { + const details = operation.details as SendTransactionDetails; + + // Transaction was already prepared in prepareOperation + // Now we execute with the real PIN + const sendTx = await wallet.sendManyOutputsSendTransaction( + details.outputs as any, + { + inputs: details.inputs, + changeAddress: details.changeAddress, + pinCode: pinCode!, + } + ); + + return await sendTx.run(null, pinCode!); + } + + case RpcMethods.CreateToken: { + const details = operation.details as CreateTokenDetails; + + return await wallet.createNewToken( + details.name, + details.symbol, + details.amount, + { + mintAddress: details.mintAddress, + changeAddress: details.changeAddress, + createMint: details.createMint, + mintAuthorityAddress: details.mintAuthorityAddress, + allowExternalMintAuthorityAddress: details.allowExternalMintAuthorityAddress, + createMelt: details.createMelt, + meltAuthorityAddress: details.meltAuthorityAddress, + allowExternalMeltAuthorityAddress: details.allowExternalMeltAuthorityAddress, + data: details.data, + pinCode: pinCode!, + } + ); + } + + case RpcMethods.SendNanoContractTx: { + const details = operation.details as SendNanoContractDetails; + + // For nano contract, we need the caller address + // Using the first address for now + const caller = await wallet.getAddressAtIndex(0); + + const txData = { + ncId: details.ncId, + blueprintId: details.blueprintId, + actions: details.actions, + args: details.args, + }; + + return await wallet.createAndSendNanoContractTransaction( + details.method, + caller, + txData, + { pinCode: pinCode! } + ); + } + + case RpcMethods.SignWithAddress: { + const details = operation.details as SignWithAddressDetails; + + const signature = await wallet.signMessageWithAddress( + details.message, + details.address.index, + pinCode!, + ); + + return { + message: details.message, + signature, + address: details.address, + }; + } + + case RpcMethods.SignOracleData: { + const details = operation.details as SignOracleDataDetails; + + const type = 'str'; + const oracleDataBuffer = nanoUtils.getOracleBuffer( + details.oracle, + new Network(wallet.getNetworkObject().name) + ); + + const signedData = await nanoUtils.getOracleSignedDataFromUser( + oracleDataBuffer, + '', // nc_id not needed here + `SignedData[${type}]`, + details.data, + wallet, + { pinCode: pinCode! } + ); + + return { + data: details.data, + signedData, + oracle: details.oracle, + }; + } + + case RpcMethods.GetAddress: { + const details = operation.details as GetAddressDetails; + + let addressInfo: AddressInfoObject; + + switch (details.addressType) { + case 'first_empty': + addressInfo = await wallet.getCurrentAddress(); + break; + case 'full_path': + throw new NotImplementedError('full_path not implemented'); + case 'index': { + const address = await wallet.getAddressAtIndex(details.index!); + const addressPath = await wallet.getAddressPathForIndex(details.index!); + addressInfo = { address, index: details.index!, addressPath }; + break; + } + case 'client': { + // For batch, 'client' type needs to be handled differently + // as it requires additional user interaction mid-batch + throw new Error('client type address requests not supported in batch'); + } + } + + return addressInfo; + } + + case RpcMethods.GetBalance: { + const details = operation.details as GetBalanceDetails; + + if (details.addressIndexes) { + throw new NotImplementedError('addressIndexes not implemented'); + } + + const balances = (await Promise.all( + details.tokens.map(token => wallet.getBalance(token)) + )).flat(); + + return balances; + } + + case RpcMethods.GetUtxos: { + const details = operation.details as GetUtxosDetails; + + const options = { + token: details.token, + authorities: details.authorities, + max_utxos: details.maxUtxos, + filter_address: details.filterAddress, + amount_smaller_than: details.amountSmallerThan, + amount_bigger_than: details.amountBiggerThan, + max_amount: details.maximumAmount, + only_available_utxos: details.onlyAvailableUtxos, + }; + + const utxoDetails = await wallet.getUtxos(options); + return utxoDetails; + } + + case RpcMethods.ChangeNetwork: { + const details = operation.details as ChangeNetworkDetails; + + // changeNetwork RPC method just returns the new network + // The actual network change is handled by the client + return { + newNetwork: details.newNetwork, + }; + } + + default: + throw new Error(`Unsupported operation: ${operation.method}`); + } +} + +/** + * Handles the 'htr_batchRequests' RPC request by executing multiple operations + * with a single user approval and PIN entry. + */ +export async function batchRequests( + rpcRequest: BatchRequestsRpcRequest, + wallet: IHathorWallet, + requestMetadata: RequestMetadata, + triggerHandler: TriggerHandler, +): Promise { + + // 1. Validate batch request schema + const validationResult = batchRequestsSchema.safeParse(rpcRequest); + + if (!validationResult.success) { + throw new InvalidParamsError( + validationResult.error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ') + ); + } + + const params = validationResult.data.params; + + // 2. Validate network consistency + validateNetwork(wallet, params.network); + + // 3. Validate all operations in params.requests use same network + for (const request of params.requests) { + if (request.params?.network && request.params.network !== params.network) { + throw new InvalidParamsError( + `All operations must use the same network. Expected ${params.network}, got ${request.params.network}` + ); + } + } + + // 4. Prepare all operations (validate and parse without executing) + const operations: BatchOperationDetail[] = []; + + for (const request of params.requests) { + try { + const operationDetail = await prepareOperation(request as BatchOperationRequest, wallet); + operations.push(operationDetail); + } catch (err) { + throw new InvalidParamsError( + `Invalid parameters for operation ${request.id}: ${err instanceof Error ? err.message : 'Unknown error'}` + ); + } + } + + // 5. Show batch confirmation prompt + const batchConfirmPrompt: BatchRequestsConfirmationPrompt = { + ...rpcRequest, + type: TriggerTypes.BatchRequestsConfirmationPrompt, + data: { + network: params.network, + operations, + errorHandling: params.errorHandling, + }, + }; + + const confirmResponse = await triggerHandler( + batchConfirmPrompt, + requestMetadata + ) as BatchRequestsConfirmationResponse; + + if (!confirmResponse.data.accepted) { + throw new PromptRejectedError('User rejected batch request'); + } + + // 6. Request PIN once (only if there are write operations) + const writeOperationMethods = [ + RpcMethods.SendTransaction, + RpcMethods.CreateToken, + RpcMethods.SendNanoContractTx, + RpcMethods.SignWithAddress, + RpcMethods.SignOracleData, + RpcMethods.CreateNanoContractCreateTokenTx, + ]; + + const hasWriteOperations = operations.some(op => + writeOperationMethods.includes(op.method as RpcMethods) + ); + + let pinCode: string | undefined; + + if (hasWriteOperations) { + const pinPrompt: PinConfirmationPrompt = { + ...rpcRequest, + type: TriggerTypes.PinConfirmationPrompt, + }; + + const pinResponse = await triggerHandler( + pinPrompt, + requestMetadata + ) as PinRequestResponse; + + if (!pinResponse.data.accepted) { + throw new PromptRejectedError('User rejected PIN prompt'); + } + + pinCode = pinResponse.data.pinCode; + } + + // 7. Show initial loading state + triggerHandler({ + type: TriggerTypes.BatchRequestsLoadingTrigger, + data: { + total: operations.length, + current: 0, + currentOperation: operations[0]?.id || '', + }, + }, requestMetadata); + + // 8. Execute operations sequentially + const results: BatchOperationResult[] = []; + const errorHandling = params.errorHandling; + + for (let i = 0; i < operations.length; i++) { + const operation = operations[i]; + + // Update loading state + triggerHandler({ + type: TriggerTypes.BatchRequestsLoadingTrigger, + data: { + total: operations.length, + current: i + 1, + currentOperation: operation.id, + }, + }, requestMetadata); + + try { + const result = await executeOperation( + operation, + wallet, + pinCode, + requestMetadata + ); + + results.push({ + id: operation.id, + status: 'success', + response: result, + }); + + } catch (err) { + const error = { + code: (err as any).code || 'UNKNOWN_ERROR', + message: err instanceof Error ? err.message : 'An unknown error occurred', + }; + + results.push({ + id: operation.id, + status: 'failed', + error, + }); + + // Handle error based on strategy + if (errorHandling === 'fail-fast') { + // Mark remaining operations as skipped + for (let j = i + 1; j < operations.length; j++) { + results.push({ + id: operations[j].id, + status: 'skipped', + }); + } + break; + } + // If continue-on-error, continue to next operation + } + } + + // 9. Hide loading state + triggerHandler({ + type: TriggerTypes.BatchRequestsLoadingFinishedTrigger, + }, requestMetadata); + + // 10. Determine overall status + const allSuccess = results.every(r => r.status === 'success'); + const allFailed = results.every(r => r.status === 'failed' || r.status === 'skipped'); + const status = allSuccess ? 'success' : allFailed ? 'failed' : 'partial-success'; + + // 11. Return results + return { + type: RpcResponseTypes.BatchRequestsResponse, + response: { + status, + results, + }, + }; +} diff --git a/packages/hathor-rpc-handler/src/rpcMethods/changeNetwork.ts b/packages/hathor-rpc-handler/src/rpcMethods/changeNetwork.ts index ed958fce..028b3d07 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/changeNetwork.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/changeNetwork.ts @@ -19,7 +19,7 @@ import { import { PromptRejectedError, InvalidParamsError } from '../errors'; import { validateNetwork } from '../helpers'; -const schema = z.object({ +export const changeNetworkSchema = z.object({ network: z.string().min(1), newNetwork: z.string().min(1), }); @@ -45,7 +45,7 @@ export async function changeNetwork( promptHandler: TriggerHandler, ) { try { - const params = schema.parse(rpcRequest.params); + const params = changeNetworkSchema.parse(rpcRequest.params); validateNetwork(wallet, params.network); const confirmed = await promptHandler({ diff --git a/packages/hathor-rpc-handler/src/rpcMethods/getAddress.ts b/packages/hathor-rpc-handler/src/rpcMethods/getAddress.ts index 91e46a5c..0b6eac6a 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/getAddress.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/getAddress.ts @@ -25,7 +25,7 @@ const baseSchema = { network: z.string().min(1), }; -const getAddressSchema = z.discriminatedUnion("type", [ +export const getAddressSchema = z.discriminatedUnion("type", [ z.object(baseSchema).merge(z.object({ type: z.literal('first_empty'), })), diff --git a/packages/hathor-rpc-handler/src/rpcMethods/getBalance.ts b/packages/hathor-rpc-handler/src/rpcMethods/getBalance.ts index 96388ceb..2eb71e65 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/getBalance.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/getBalance.ts @@ -21,7 +21,7 @@ import { import { NotImplementedError, PromptRejectedError, InvalidParamsError } from '../errors'; import { validateNetwork } from '../helpers'; -const getBalanceSchema = z.object({ +export const getBalanceSchema = z.object({ network: z.string().min(1), tokens: z.array(z.string().min(1)).min(1), addressIndexes: z.array(z.number().int().nonnegative()).optional(), diff --git a/packages/hathor-rpc-handler/src/rpcMethods/getUtxos.ts b/packages/hathor-rpc-handler/src/rpcMethods/getUtxos.ts index ef55df3a..c1f795ef 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/getUtxos.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/getUtxos.ts @@ -20,7 +20,7 @@ import { PromptRejectedError, InvalidParamsError } from '../errors'; import { TriggerTypes } from '../types'; import { validateNetwork } from '../helpers'; -const getUtxosSchema = z.object({ +export const getUtxosSchema = z.object({ method: z.literal(RpcMethods.GetUtxos), params: z.object({ network: z.string().min(1), diff --git a/packages/hathor-rpc-handler/src/rpcMethods/index.ts b/packages/hathor-rpc-handler/src/rpcMethods/index.ts index 37c94e75..0cf4a17f 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/index.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/index.ts @@ -9,3 +9,4 @@ export * from './createToken'; export * from './sendTransaction'; export * from './createNanoContractCreateTokenTx'; export * from './changeNetwork'; +export * from './batchRequests'; diff --git a/packages/hathor-rpc-handler/src/rpcMethods/sendNanoContractTx.ts b/packages/hathor-rpc-handler/src/rpcMethods/sendNanoContractTx.ts index bf0401a4..63d3745d 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/sendNanoContractTx.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/sendNanoContractTx.ts @@ -22,13 +22,13 @@ import { SendNanoContractTxLoadingFinishedTrigger, } from '../types'; import { PromptRejectedError, SendNanoContractTxError, InvalidParamsError } from '../errors'; -import { INanoContractActionSchema, NanoContractAction, nanoUtils, Network, config } from '@hathor/wallet-lib'; +import { INanoContractActionSchema, NanoContractAction, ncApi, nanoUtils, Network, config } from '@hathor/wallet-lib'; export type NanoContractActionWithStringAmount = Omit & { amount: string, } -const sendNanoContractSchema = z.object({ +export const sendNanoContractSchema = z.object({ network: z.string().min(1), method: z.string().min(1), blueprint_id: z.string().nullish(), @@ -76,24 +76,27 @@ export async function sendNanoContractTx( }; let blueprintId = params.blueprintId; - if (!blueprintId) { - let response; + if (blueprintId) { + // Check if the user sent a valid blueprint id try { - response = await wallet.getFullTxById(params.ncId!); - } catch { - // Error getting nano contract transaction data from the full node + await ncApi.getBlueprintInformation(blueprintId); + } catch (e) { + // Invalid blueprint id throw new SendNanoContractTxError( - `Error getting nano contract transaction data with id ${params.ncId} from the full node` + `Invalid blueprint ID ${blueprintId}` ); } + } - if (!response.tx.nc_id) { + if (!blueprintId) { + try { + blueprintId = await nanoUtils.getBlueprintId(params.ncId!, wallet); + } catch { + // Error getting blueprint ID throw new SendNanoContractTxError( - `Transaction with id ${params.ncId} is not a nano contract transaction.` + `Error getting blueprint id with nc id ${params.ncId} from the full node` ); } - - blueprintId = response.tx.nc_blueprint_id!; } config.setServerUrl(wallet.getServerUrl()); @@ -106,7 +109,7 @@ export async function sendNanoContractTx( ...rpcRequest, type: TriggerTypes.SendNanoContractTxConfirmationPrompt, data: { - blueprintId: params.blueprintId, + blueprintId, ncId: params.ncId, actions: params.actions, method: params.method, diff --git a/packages/hathor-rpc-handler/src/rpcMethods/sendTransaction.ts b/packages/hathor-rpc-handler/src/rpcMethods/sendTransaction.ts index 2f4dbc1a..09de98d6 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/sendTransaction.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/sendTransaction.ts @@ -32,14 +32,14 @@ import { } from '../errors'; import { validateNetwork } from '../helpers'; -const OutputValueSchema = z.object({ +export const OutputValueSchema = z.object({ address: z.string(), value: z.string().regex(/^\d+$/) .pipe(z.coerce.bigint().positive()), token: z.string().default(constants.NATIVE_TOKEN_UID), }); -const OutputDataSchema = z.object({ +export const OutputDataSchema = z.object({ type: z.string().optional(), data: z.string().min(1), }).transform((output): DataScriptOutputRequestObj => ({ @@ -47,9 +47,9 @@ const OutputDataSchema = z.object({ data: output.data, })); -const OutputSchema = z.union([OutputValueSchema, OutputDataSchema]); +export const OutputSchema = z.union([OutputValueSchema, OutputDataSchema]); -const sendTransactionSchema = z.object({ +export const sendTransactionSchema = z.object({ method: z.literal(RpcMethods.SendTransaction), params: z.object({ network: z.string().min(1), diff --git a/packages/hathor-rpc-handler/src/rpcMethods/signOracleData.ts b/packages/hathor-rpc-handler/src/rpcMethods/signOracleData.ts index 10344a17..b23d5d3b 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/signOracleData.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/signOracleData.ts @@ -26,7 +26,7 @@ import { validateNetwork } from '../helpers'; import { PromptRejectedError, InvalidParamsError } from '../errors'; import { z } from 'zod'; -const signOracleDataSchema = z.object({ +export const signOracleDataSchema = z.object({ nc_id: z.string(), network: z.string().min(1), oracle: z.string().min(1), diff --git a/packages/hathor-rpc-handler/src/rpcMethods/signWithAddress.ts b/packages/hathor-rpc-handler/src/rpcMethods/signWithAddress.ts index 4e809fd7..bed93c65 100644 --- a/packages/hathor-rpc-handler/src/rpcMethods/signWithAddress.ts +++ b/packages/hathor-rpc-handler/src/rpcMethods/signWithAddress.ts @@ -24,7 +24,7 @@ import { PromptRejectedError, InvalidParamsError } from '../errors'; import { validateNetwork } from '../helpers'; import { AddressInfoObject } from '@hathor/wallet-lib/lib/wallet/types'; -const signWithAddressSchema = z.object({ +export const signWithAddressSchema = z.object({ method: z.literal(RpcMethods.SignWithAddress), params: z.object({ network: z.string().min(1), diff --git a/packages/hathor-rpc-handler/src/types/prompt.ts b/packages/hathor-rpc-handler/src/types/prompt.ts index 0b76ce94..aad7ae7e 100644 --- a/packages/hathor-rpc-handler/src/types/prompt.ts +++ b/packages/hathor-rpc-handler/src/types/prompt.ts @@ -35,6 +35,9 @@ export enum TriggerTypes { CreateNanoContractCreateTokenTxLoadingTrigger, CreateNanoContractCreateTokenTxLoadingFinishedTrigger, ChangeNetworkConfirmationPrompt, + BatchRequestsConfirmationPrompt, + BatchRequestsLoadingTrigger, + BatchRequestsLoadingFinishedTrigger, } export enum TriggerResponseTypes { @@ -50,6 +53,7 @@ export enum TriggerResponseTypes { CreateNanoContractCreateTokenTxConfirmationResponse, GetBalanceConfirmationResponse, ChangeNetworkRequestConfirmationResponse, + BatchRequestsConfirmationResponse, } export type Trigger = @@ -77,7 +81,10 @@ export type Trigger = | CreateNanoContractCreateTokenTxConfirmationPrompt | CreateNanoContractCreateTokenTxLoadingTrigger | CreateNanoContractCreateTokenTxLoadingFinishedTrigger - | ChangeNetworkConfirmationPrompt; + | ChangeNetworkConfirmationPrompt + | BatchRequestsConfirmationPrompt + | BatchRequestsLoadingTrigger + | BatchRequestsLoadingFinishedTrigger; export interface BaseLoadingTrigger { type: TriggerTypes; @@ -325,7 +332,8 @@ export type TriggerResponse = | SendTransactionConfirmationResponse | CreateNanoContractCreateTokenTxConfirmationResponse | GetBalanceConfirmationResponse - | ChangeNetworkRequestConfirmationResponse; + | ChangeNetworkRequestConfirmationResponse + | BatchRequestsConfirmationResponse; export type TriggerHandler = (prompt: Trigger, requestMetadata: RequestMetadata) => Promise; @@ -362,3 +370,125 @@ export interface CreateNanoContractCreateTokenTxLoadingTrigger extends BaseLoadi export interface CreateNanoContractCreateTokenTxLoadingFinishedTrigger extends BaseLoadingTrigger { type: TriggerTypes.CreateNanoContractCreateTokenTxLoadingFinishedTrigger; } + +// Batch Request Types +export interface SendTransactionDetails { + type: 'sendTransaction'; + outputs: IDataOutput[]; + inputs: IDataInput[]; + changeAddress?: string; +} + +export interface CreateTokenDetails { + type: 'createToken'; + name: string; + symbol: string; + amount: bigint; + mintAddress: string | null; + changeAddress: string | null; + createMint: boolean; + mintAuthorityAddress: string | null; + allowExternalMintAuthorityAddress: boolean; + createMelt: boolean; + meltAuthorityAddress: string | null; + allowExternalMeltAuthorityAddress: boolean; + data: string[] | null; +} + +export interface SendNanoContractDetails { + type: 'sendNanoContract'; + blueprintId: string; + ncId: string | null; + actions: NanoContractAction[]; + method: string; + args: unknown[]; + parsedArgs: unknown[]; +} + +export interface SignWithAddressDetails { + type: 'signWithAddress'; + address: AddressInfoObject; + message: string; +} + +export interface SignOracleDataDetails { + type: 'signOracleData'; + oracle: string; + data: string; +} + +export interface GetAddressDetails { + type: 'getAddress'; + addressType: 'first_empty' | 'index' | 'client' | 'full_path'; + index?: number; + fullPath?: string; +} + +export interface GetBalanceDetails { + type: 'getBalance'; + tokens: string[]; + addressIndexes?: number[]; +} + +export interface GetUtxosDetails { + type: 'getUtxos'; + token?: string; + maxUtxos?: number; + filterAddress?: string; + authorities?: number; + amountSmallerThan?: number; + amountBiggerThan?: number; + maximumAmount?: number; + onlyAvailableUtxos?: boolean; +} + +export interface ChangeNetworkDetails { + type: 'changeNetwork'; + newNetwork: string; +} + +export interface BatchOperationDetail { + id: string; + method: string; + description: string; + params: any; // Original request params to pass to existing snap dialogs + details: + | SendTransactionDetails + | CreateTokenDetails + | SendNanoContractDetails + | SignWithAddressDetails + | SignOracleDataDetails + | GetAddressDetails + | GetBalanceDetails + | GetUtxosDetails + | ChangeNetworkDetails; +} + +export type BatchRequestsConfirmationPrompt = BaseConfirmationPrompt & { + type: TriggerTypes.BatchRequestsConfirmationPrompt; + data: { + network: string; + operations: BatchOperationDetail[]; + errorHandling: 'fail-fast' | 'continue-on-error'; + }; +}; + +export interface BatchRequestsConfirmationResponse { + type: TriggerResponseTypes.BatchRequestsConfirmationResponse; + data: { + accepted: boolean; + }; +} + +export interface BatchRequestsLoadingTrigger extends BaseLoadingTrigger { + type: TriggerTypes.BatchRequestsLoadingTrigger; + data: { + total: number; + current: number; + currentOperation: string; + }; +} + +export interface BatchRequestsLoadingFinishedTrigger extends BaseLoadingTrigger { + type: TriggerTypes.BatchRequestsLoadingFinishedTrigger; +} diff --git a/packages/hathor-rpc-handler/src/types/rpcRequest.ts b/packages/hathor-rpc-handler/src/types/rpcRequest.ts index 81c748df..e4066bae 100644 --- a/packages/hathor-rpc-handler/src/types/rpcRequest.ts +++ b/packages/hathor-rpc-handler/src/types/rpcRequest.ts @@ -21,6 +21,7 @@ export enum RpcMethods { SendTransaction = 'htr_sendTransaction', CreateNanoContractCreateTokenTx = 'htr_createNanoContractCreateTokenTx', ChangeNetwork = 'htr_changeNetwork', + BatchRequests = 'htr_batchRequests', } export interface CreateTokenRpcRequest { @@ -161,6 +162,21 @@ export interface GenericRpcRequest { params?: unknown | null; } +export interface BatchOperationRequest { + id: string; + method: RpcMethods; + params: any; +} + +export interface BatchRequestsRpcRequest { + method: RpcMethods.BatchRequests; + params: { + network: string; + requests: BatchOperationRequest[]; + errorHandling?: 'fail-fast' | 'continue-on-error'; + }; +} + export type RpcRequest = GetAddressRpcRequest | GetBalanceRpcRequest | GetUtxosRpcRequest @@ -171,5 +187,6 @@ export type RpcRequest = GetAddressRpcRequest | SignOracleDataRpcRequest | SendTransactionRpcRequest | CreateNanoContractCreateTokenTxRpcRequest - | ChangeNetworkRpcRequest; + | ChangeNetworkRpcRequest + | BatchRequestsRpcRequest; diff --git a/packages/hathor-rpc-handler/src/types/rpcResponse.ts b/packages/hathor-rpc-handler/src/types/rpcResponse.ts index 12477914..147d193a 100644 --- a/packages/hathor-rpc-handler/src/types/rpcResponse.ts +++ b/packages/hathor-rpc-handler/src/types/rpcResponse.ts @@ -22,6 +22,7 @@ export enum RpcResponseTypes { SendTransactionResponse, CreateNanoContractCreateTokenTxResponse, ChangeNetworkResponse, + BatchRequestsResponse, } export interface BaseRpcResponse { @@ -96,6 +97,24 @@ export interface ChangeNetworkResponse extends BaseRpcResponse { } } +export interface BatchOperationResult { + id: string; + status: 'success' | 'failed' | 'skipped'; + response?: any; + error?: { + code: string; + message: string; + }; +} + +export interface BatchRequestsResponse extends BaseRpcResponse { + type: RpcResponseTypes.BatchRequestsResponse; + response: { + status: 'success' | 'partial-success' | 'failed'; + results: BatchOperationResult[]; + }; +} + export type RpcResponse = GetAddressResponse | SendNanoContractTxResponse | SignWithAddressResponse @@ -106,4 +125,5 @@ export type RpcResponse = GetAddressResponse | GetUtxosResponse | SendTransactionResponse | CreateNanoContractCreateTokenTxResponse - | ChangeNetworkResponse; + | ChangeNetworkResponse + | BatchRequestsResponse; diff --git a/packages/snap-utils/package.json b/packages/snap-utils/package.json index cfc8f5a7..b3b18fcb 100644 --- a/packages/snap-utils/package.json +++ b/packages/snap-utils/package.json @@ -1,5 +1,5 @@ { - "name": "snap-utils", + "name": "@hathor/snap-utils", "packageManager": "yarn@4.2.2", "version": "0.1.0", "files": [ diff --git a/packages/snap-utils/src/react-hooks/MetamaskContext.tsx b/packages/snap-utils/src/react-hooks/MetamaskContext.tsx index ddc1b4de..f3c8c4d6 100644 --- a/packages/snap-utils/src/react-hooks/MetamaskContext.tsx +++ b/packages/snap-utils/src/react-hooks/MetamaskContext.tsx @@ -11,7 +11,7 @@ type MetaMaskContextType = { installedSnap: Snap | null; error: Error | null; setInstalledSnap: (snap: Snap | null) => void; - setError: (error: Error) => void; + setError: (error: Error | null) => void; }; export const MetaMaskContext = createContext({ diff --git a/packages/snap/package.json b/packages/snap/package.json index 2e90ab98..9b54510b 100644 --- a/packages/snap/package.json +++ b/packages/snap/package.json @@ -1,5 +1,5 @@ { - "name": "snap", + "name": "@hathor/snap", "packageManager": "yarn@4.2.2", "version": "0.1.0", "description": "", diff --git a/packages/snap/src/dialogs/address.tsx b/packages/snap/src/dialogs/address.tsx index 86edc572..287f1c0a 100644 --- a/packages/snap/src/dialogs/address.tsx +++ b/packages/snap/src/dialogs/address.tsx @@ -32,6 +32,12 @@ const renderAddressIndex = (data, params) => { ); } +export const renderAddressContent = (params) => ( +
+ {renderParamText(params)} +
+); + export const addressPage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -44,9 +50,7 @@ export const addressPage = async (data, params, origin) => ( The dApp {origin} is requesting your public address. -
- {renderParamText(params)} -
+ {renderAddressContent(params)} The following address will be shared if the request is confirmed. diff --git a/packages/snap/src/dialogs/balance.tsx b/packages/snap/src/dialogs/balance.tsx index b022124d..3ff36b49 100644 --- a/packages/snap/src/dialogs/balance.tsx +++ b/packages/snap/src/dialogs/balance.tsx @@ -15,6 +15,12 @@ const renderBalances = (data) => { )) } +export const renderBalanceContent = (params) => ( +
+ +
+); + export const balancePage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -30,7 +36,7 @@ export const balancePage = async (data, params, origin) => (
- {renderBalances(data)} + {renderBalances(data)}
diff --git a/packages/snap/src/dialogs/batchRequests.tsx b/packages/snap/src/dialogs/batchRequests.tsx new file mode 100644 index 00000000..a4e532ec --- /dev/null +++ b/packages/snap/src/dialogs/batchRequests.tsx @@ -0,0 +1,112 @@ +/** + * Copyright (c) Hathor Labs and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { REQUEST_METHODS, DIALOG_TYPES } from '../constants'; +import { Box, Card, Container, Divider, Heading, Section, Text } from '@metamask/snaps-sdk/jsx'; +import { renderSendTransactionContent } from './sendTransaction'; +import { renderCreateTokenContent } from './createToken'; +import { renderCreateNanoContent } from './createNano'; +import { renderSignWithAddressContent } from './signWithAddress'; +import { renderOracleDataContent } from './oracleData'; +import { renderAddressContent } from './address'; +import { renderBalanceContent } from './balance'; +import { renderUtxosContent } from './utxos'; +import { renderChangeNetworkContent } from './changeNetwork'; + +const getOperationTitle = (operation) => { + const methodNames = { + htr_sendTransaction: 'Send Transaction', + htr_createToken: 'Create Token', + htr_sendNanoContractTx: 'Nano Contract Transaction', + htr_signWithAddress: 'Sign Message', + htr_signOracleData: 'Sign Oracle Data', + htr_getAddress: 'Get Address', + htr_getBalance: 'Get Balance', + htr_getUtxos: 'Get UTXOs', + htr_changeNetwork: 'Change Network', + }; + + return methodNames[operation.method] || operation.method; +}; + +const renderOperationContent = (operation) => { + const { details, params } = operation; + + if (!details || !params) return null; + + // Use the ORIGINAL params with the existing snap dialog renderers + switch (details.type) { + case 'sendTransaction': + return renderSendTransactionContent(params); + + case 'createToken': + return renderCreateTokenContent(params); + + case 'sendNanoContract': + return renderCreateNanoContent({ parsedArgs: details.parsedArgs }, params); + + case 'signWithAddress': + return renderSignWithAddressContent({ address: details.address, message: details.message }); + + case 'signOracleData': + return renderOracleDataContent(params); + + case 'getAddress': + return renderAddressContent(params); + + case 'getBalance': + return renderBalanceContent(params); + + case 'getUtxos': + return renderUtxosContent(params); + + case 'changeNetwork': + return renderChangeNetworkContent(params); + + default: + return null; + } +}; + +const renderOperationsList = (operations) => { + return operations.map((operation, index) => ( + +
+ {`${index + 1}. ${getOperationTitle(operation)}`} + {renderOperationContent(operation)} +
+ {index < operations.length - 1 ? : null} +
+ )); +}; + +export const batchRequestsPage = async (data, params, origin) => ( + await snap.request({ + method: REQUEST_METHODS.DIALOG, + params: { + type: DIALOG_TYPES.CONFIRMATION, + content: ( + + + Batch Request + + The dApp {origin} is requesting permission to execute {data.operations.length} operations in a batch. + + + You will only need to approve once and enter your PIN once for all operations. + + {data.errorHandling && ( + + )} + + {renderOperationsList(data.operations)} + + + ), + }, + }) +); diff --git a/packages/snap/src/dialogs/changeNetwork.tsx b/packages/snap/src/dialogs/changeNetwork.tsx index 8f186011..8be033fa 100644 --- a/packages/snap/src/dialogs/changeNetwork.tsx +++ b/packages/snap/src/dialogs/changeNetwork.tsx @@ -8,6 +8,13 @@ import { REQUEST_METHODS, DIALOG_TYPES } from '../constants'; import { Box, Card, Container, Copyable, Heading, Section, Text } from '@metamask/snaps-sdk/jsx'; +export const renderChangeNetworkContent = (params) => ( +
+ + +
+); + export const changeNetworkPage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -20,10 +27,7 @@ export const changeNetworkPage = async (data, params, origin) => ( The dApp {origin} is requesting to change the network. -
- - -
+ {renderChangeNetworkContent(params)} ), diff --git a/packages/snap/src/dialogs/createNano.tsx b/packages/snap/src/dialogs/createNano.tsx index 5246a451..e2cac7e3 100644 --- a/packages/snap/src/dialogs/createNano.tsx +++ b/packages/snap/src/dialogs/createNano.tsx @@ -156,6 +156,19 @@ const renderAction = (action) => { ); } +export const renderCreateNanoContent = (data, params) => ( + +
+ Contract Details: + {renderOptionalContractDetail(params.nc_id, "Nano Contract ID")} + {renderOptionalContractDetail(params.blueprint_id, "Blueprint ID")} + +
+ {renderArguments(data.parsedArgs)} + {renderActions(params.actions)} +
+); + export const createNanoPage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -168,14 +181,7 @@ export const createNanoPage = async (data, params, origin) => ( The dApp {origin} is requesting permission to execute a nano contract transaction on the Hathor Network -
- Contract Details: - {renderOptionalContractDetail(params.nc_id, "Nano Contract ID")} - {renderOptionalContractDetail(params.blueprint_id, "Blueprint ID")} - -
- {renderArguments(data.parsedArgs)} - {renderActions(params.actions)} + {renderCreateNanoContent(data, params)} ), diff --git a/packages/snap/src/dialogs/createToken.tsx b/packages/snap/src/dialogs/createToken.tsx index 716c722c..89aa713c 100644 --- a/packages/snap/src/dialogs/createToken.tsx +++ b/packages/snap/src/dialogs/createToken.tsx @@ -21,6 +21,23 @@ const boolToString = (bool) => { return bool ? 'true' : 'false'; } +export const renderCreateTokenContent = (params) => ( +
+ + + + {renderConditionalCard('Address', params.address)} + {renderConditionalCard('Change address', params.change_address)} + {renderConditionalCard('Create mint authority', params.create_mint, boolToString(params.create_mint))} + {renderConditionalCard('Mint address', params.mint_authority_address)} + {renderConditionalCard('Allow external mint address', params.allow_external_mint_authority_address, boolToString(params.allow_external_mint_authority_address))} + {renderConditionalCard('Create melt authority', params.create_melt, boolToString(params.create_melt))} + {renderConditionalCard('Melt address', params.melt_authority_address)} + {renderConditionalCard('Allow external melt address', params.allow_external_melt_authority_address, boolToString(params.allow_external_melt_authority_address))} + {renderConditionalCard('Data', params.data, params.data ? params.data.join(', ') : '')} +
+); + export const createTokenPage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -33,20 +50,7 @@ export const createTokenPage = async (data, params, origin) => ( The dApp {origin} is requesting permission to create a new token on the Hathor Network with the following details: -
- - - - {renderConditionalCard('Address', params.address)} - {renderConditionalCard('Change address', params.change_address)} - {renderConditionalCard('Create mint authority', params.create_mint, boolToString(params.create_mint))} - {renderConditionalCard('Mint address', params.mint_authority_address)} - {renderConditionalCard('Allow external mint address', params.allow_external_mint_authority_address, boolToString(params.allow_external_mint_authority_address))} - {renderConditionalCard('Create melt authority', params.create_melt, boolToString(params.create_melt))} - {renderConditionalCard('Melt address', params.melt_authority_address)} - {renderConditionalCard('Allow external melt address', params.allow_external_melt_authority_address, boolToString(params.allow_external_melt_authority_address))} - {renderConditionalCard('Data', params.data, params.data ? params.data.join(', ') : '')} -
+ {renderCreateTokenContent(params)} ), diff --git a/packages/snap/src/dialogs/index.ts b/packages/snap/src/dialogs/index.ts index 1446d594..68c22211 100644 --- a/packages/snap/src/dialogs/index.ts +++ b/packages/snap/src/dialogs/index.ts @@ -7,6 +7,7 @@ export * from './address'; export * from './balance'; +export * from './batchRequests'; export * from './utxos'; export * from './sendTransaction'; export * from './signWithAddress'; diff --git a/packages/snap/src/dialogs/oracleData.tsx b/packages/snap/src/dialogs/oracleData.tsx index f5b1424b..88ada9c3 100644 --- a/packages/snap/src/dialogs/oracleData.tsx +++ b/packages/snap/src/dialogs/oracleData.tsx @@ -8,6 +8,15 @@ import { REQUEST_METHODS, DIALOG_TYPES } from '../constants'; import { Bold, Box, Card, Container, Copyable, Heading, Section, Text } from '@metamask/snaps-sdk/jsx'; +export const renderOracleDataContent = (params) => ( +
+ Nano Contract ID + + + +
+); + export const oracleDataPage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -20,12 +29,7 @@ export const oracleDataPage = async (data, params, origin) => ( The dApp {origin} is requesting permission to get an oracle signature from your wallet -
- Nano Contract ID - - - -
+ {renderOracleDataContent(params)} ), diff --git a/packages/snap/src/dialogs/sendTransaction.tsx b/packages/snap/src/dialogs/sendTransaction.tsx index 7afc0009..f30ac36e 100644 --- a/packages/snap/src/dialogs/sendTransaction.tsx +++ b/packages/snap/src/dialogs/sendTransaction.tsx @@ -86,6 +86,17 @@ const renderChangeAddress = (changeAddress) => { ); } +export const renderSendTransactionContent = (params) => ( +
+ Transaction preview + {renderInputs(params.inputs)} + Outputs + + {renderOutputs(params.outputs)} + {renderChangeAddress(params.changeAddress)} +
+); + export const sendTransactionPage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -98,14 +109,7 @@ export const sendTransactionPage = async (data, params, origin) => ( The dApp {origin} is requesting permission to send a transaction from your Hathor wallet. -
- Transaction preview - {renderInputs(params.inputs)} - Outputs - - {renderOutputs(params.outputs)} - {renderChangeAddress(params.changeAddress)} -
+ {renderSendTransactionContent(params)} ), diff --git a/packages/snap/src/dialogs/signWithAddress.tsx b/packages/snap/src/dialogs/signWithAddress.tsx index 88702a86..97064f47 100644 --- a/packages/snap/src/dialogs/signWithAddress.tsx +++ b/packages/snap/src/dialogs/signWithAddress.tsx @@ -8,6 +8,20 @@ import { REQUEST_METHODS, DIALOG_TYPES } from '../constants'; import { Bold, Box, Copyable, Container, Heading, Section, Text } from '@metamask/snaps-sdk/jsx'; +export const renderSignWithAddressContent = (data) => ( + +
+ Address + Index {data.address.index.toString()} + +
+
+ Message + {data.message} +
+
+); + export const signWithAddressPage = async (data, params, origin) => ( await snap.request({ method: REQUEST_METHODS.DIALOG, @@ -20,15 +34,7 @@ export const signWithAddressPage = async (data, params, origin) => ( The dApp {origin} is requesting your signature on a message using your Hathor wallet address. -
- Address - Index {data.address.index.toString()} - -
-
- Message - {data.message} -
+ {renderSignWithAddressContent(data)} ), diff --git a/packages/snap/src/dialogs/utxos.tsx b/packages/snap/src/dialogs/utxos.tsx index daaa4e88..ccd5cf81 100644 --- a/packages/snap/src/dialogs/utxos.tsx +++ b/packages/snap/src/dialogs/utxos.tsx @@ -45,6 +45,20 @@ const renderAmountSummary = (data, params) => { ); } +export const renderUtxosContent = (params) => ( +
+ Filter parameters + + Token: {renderTokenFilterParam(params.token)} + {params.filterAddress ? {`Address: ${params.filterAddress}`} : null} + {params.maxUtxos ? {`Maximum quantity: ${params.maxUtxos}`} : null} + {params.authorities ? {`Authority: ${params.authorities}`} : null} + {params.amountSmallerThan ? {`Amount smaller than: ${numberUtils.prettyValue(params.amountSmallerThan)}`} : null} + {params.amountBiggerThan ? {`Amount bigger than: ${numberUtils.prettyValue(params.amountBiggerThan)}`} : null} + {params.maximumAmount ? {`Maximum total amount: ${numberUtils.prettyValue(params.maximumAmount)}`} : null} +
+); + export const utxosPage = async (data, params, origin) => { const content = ( @@ -54,17 +68,7 @@ export const utxosPage = async (data, params, origin) => { {`${origin} requests information about ${data.utxos?.length || 0} UTXOs`} -
- Filter parameters - - Token: {renderTokenFilterParam(params.token)} - {params.filterAddress ? {`Address: ${params.filterAddress}`} : null} - {params.maxUtxos ? {`Maximum quantity: ${params.maxUtxos}`} : null} - {params.authorities ? {`Authority: ${params.authorities}`} : null} - {params.amountSmallerThan ? {`Amount smaller than: ${numberUtils.prettyValue(params.amountSmallerThan)}`} : null} - {params.amountBiggerThan ? {`Amount bigger than: ${numberUtils.prettyValue(params.amountBiggerThan)}`} : null} - {params.maximumAmount ? {`Maximum total amount: ${numberUtils.prettyValue(params.maximumAmount)}`} : null} -
+ {renderUtxosContent(params)}
Summary diff --git a/packages/snap/src/utils/prompt.ts b/packages/snap/src/utils/prompt.ts index 19757304..df41b7ed 100644 --- a/packages/snap/src/utils/prompt.ts +++ b/packages/snap/src/utils/prompt.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import { addressPage, balancePage, changeNetworkPage, createNanoPage, createTokenPage, oracleDataPage, sendTransactionPage, signWithAddressPage, utxosPage } from '../dialogs'; +import { addressPage, balancePage, batchRequestsPage, changeNetworkPage, createNanoPage, createTokenPage, oracleDataPage, sendTransactionPage, signWithAddressPage, utxosPage } from '../dialogs'; import { setNetwork } from '../utils/network'; import { DEFAULT_PIN_CODE, NETWORK_MAP } from '../constants'; import { RpcMethods, TriggerTypes } from '@hathor/hathor-rpc-handler'; @@ -83,12 +83,21 @@ export const promptHandler = (origin, wallet) => async (promptRequest) => { case TriggerTypes.SignOracleDataConfirmationPrompt: approved = await oracleDataPage(data, params, origin); return { data: approved }; + case TriggerTypes.BatchRequestsConfirmationPrompt: + approved = await batchRequestsPage(data, params, origin); + return { + data: { + accepted: approved + } + }; case TriggerTypes.SendNanoContractTxLoadingTrigger: case TriggerTypes.SendNanoContractTxLoadingFinishedTrigger: case TriggerTypes.CreateTokenLoadingTrigger: case TriggerTypes.CreateTokenLoadingFinishedTrigger: case TriggerTypes.SendTransactionLoadingTrigger: case TriggerTypes.SendTransactionLoadingFinishedTrigger: + case TriggerTypes.BatchRequestsLoadingTrigger: + case TriggerTypes.BatchRequestsLoadingFinishedTrigger: break; default: throw new Error('Invalid request'); diff --git a/packages/web-wallet/.vite/deps/_metadata.json b/packages/web-wallet/.vite/deps/_metadata.json new file mode 100644 index 00000000..cc3adb14 --- /dev/null +++ b/packages/web-wallet/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "6403c86a", + "configHash": "eb5dc736", + "lockfileHash": "4ac0deab", + "browserHash": "25956c2a", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/packages/web-wallet/.vite/deps/package.json b/packages/web-wallet/.vite/deps/package.json new file mode 100644 index 00000000..3dbc1ca5 --- /dev/null +++ b/packages/web-wallet/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/web-wallet/package.json b/packages/web-wallet/package.json index ce4a89cd..0e41d3e5 100644 --- a/packages/web-wallet/package.json +++ b/packages/web-wallet/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@hathor/snap-utils": "workspace:^", "@hathor/wallet-lib": "^2.6.1", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-slot": "^1.2.3", @@ -19,7 +20,6 @@ "react": "^19.1.1", "react-dom": "^19.1.1", "react-qr-code": "^2.0.18", - "snap-utils": "workspace:^", "tailwind-merge": "^3.3.1" }, "devDependencies": { diff --git a/packages/web-wallet/src/App.tsx b/packages/web-wallet/src/App.tsx index 4293c1b2..2fb3e81e 100644 --- a/packages/web-wallet/src/App.tsx +++ b/packages/web-wallet/src/App.tsx @@ -1,4 +1,4 @@ -import { MetaMaskProvider } from 'snap-utils' +import { MetaMaskProvider } from '@hathor/snap-utils' import { WalletProvider } from './contexts/WalletContext' import ProperWalletHome from './components/ProperWalletHome' diff --git a/packages/web-wallet/src/contexts/WalletContext.tsx b/packages/web-wallet/src/contexts/WalletContext.tsx index aee403a7..cc3826f2 100644 --- a/packages/web-wallet/src/contexts/WalletContext.tsx +++ b/packages/web-wallet/src/contexts/WalletContext.tsx @@ -1,6 +1,6 @@ import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react'; import { WalletServiceMethods } from '../services/HathorWalletService'; -import { useInvokeSnap, useRequestSnap } from 'snap-utils'; +import { useInvokeSnap, useRequestSnap } from '@hathor/snap-utils'; interface WalletBalance { token: string; @@ -66,19 +66,11 @@ export const WalletProvider: React.FC = ({ children }) => { const checkExistingConnection = async () => { try { setState(prev => ({ ...prev, loadingStep: 'Checking existing connection...' })); - - // Try to get address without requesting snap first - const address = await WalletServiceMethods.getAddress(invokeSnap, 'index', 0); - - if (address) { - setState(prev => ({ ...prev, loadingStep: 'Loading wallet data...' })); - - // If we got an address, snap is already connected - const [balances, network] = await Promise.all([ - WalletServiceMethods.getBalance(invokeSnap, ['00']), - WalletServiceMethods.getConnectedNetwork(invokeSnap), - ]); + // Use batch request to load all wallet data at once with a single approval + const { address, balances, network } = await WalletServiceMethods.batchWalletInit(invokeSnap, ['00']); + + if (address) { setState(prev => ({ ...prev, isConnected: true, @@ -112,19 +104,10 @@ export const WalletProvider: React.FC = ({ children }) => { try { // Request the snap to install/activate it await requestSnap(); - setState(prev => ({ ...prev, loadingStep: 'Loading address...' })); + setState(prev => ({ ...prev, loadingStep: 'Loading wallet data...' })); - // Get wallet address - const address = await WalletServiceMethods.getAddress(invokeSnap, 'index', 0); - setState(prev => ({ ...prev, loadingStep: 'Loading balance...' })); - - // Get balance - const balances = await WalletServiceMethods.getBalance(invokeSnap, ['00']); - console.log('💼 Wallet context received balances:', balances); - setState(prev => ({ ...prev, loadingStep: 'Getting network info...' })); - - // Get network - const network = await WalletServiceMethods.getConnectedNetwork(invokeSnap); + // Use batch request to load all wallet data at once with a single approval + const { address, balances, network } = await WalletServiceMethods.batchWalletInit(invokeSnap, ['00']); setState(prev => ({ ...prev, @@ -135,8 +118,8 @@ export const WalletProvider: React.FC = ({ children }) => { isConnecting: false, loadingStep: '', })); - - console.log('✅ Wallet state updated with balances:', balances); + + console.log('Wallet connected via batch request:', { address, balances, network }); } catch (error) { console.error('Connection error:', error); setState(prev => ({ diff --git a/packages/web-wallet/src/services/HathorWalletService.ts b/packages/web-wallet/src/services/HathorWalletService.ts index 23129ea8..63de8141 100644 --- a/packages/web-wallet/src/services/HathorWalletService.ts +++ b/packages/web-wallet/src/services/HathorWalletService.ts @@ -61,8 +61,8 @@ export const WalletServiceMethods = { async getBalance(invokeSnap: any, tokens: string[] = [TOKEN_IDS.HTR]): Promise { try { - console.log('🔍 Getting balance with params:', { network: DEFAULT_NETWORK, tokens }); - + console.log('Getting balance with params:', { network: DEFAULT_NETWORK, tokens }); + const response = await invokeSnap({ method: 'htr_getBalance', params: { @@ -71,19 +71,19 @@ export const WalletServiceMethods = { } }); - console.log('📡 Raw balance response from snap:', response); + console.log('Raw balance response from snap:', response); // Handle null response when snap is not connected if (!response) { - console.warn('⚠️ Received null response from snap'); + console.warn('Received null response from snap'); return []; } - console.log('📊 Balance response.response:', response.response); + console.log('Balance response.response:', response.response); // Transform the response to match our interface const balances = response.response?.map((balance: any) => { - console.log('💰 Processing balance item:', balance); + console.log('Processing balance item:', balance); return { token: balance.token_id || balance.token, available: balance.available || 0, @@ -91,10 +91,10 @@ export const WalletServiceMethods = { }; }) || []; - console.log('✅ Final processed balances:', balances); + console.log('Final processed balances:', balances); return balances; } catch (error) { - console.error('❌ Failed to get balance:', error); + console.error('Failed to get balance:', error); throw error; } }, @@ -176,6 +176,76 @@ export const WalletServiceMethods = { // Return empty array instead of throwing to avoid breaking the UI return []; } + }, + + async batchWalletInit(invokeSnap: any, tokens: string[] = [TOKEN_IDS.HTR]): Promise<{ + address: string; + balances: WalletBalance[]; + network: string; + }> { + try { + console.log('Initiating batched wallet load...'); + + const response = await invokeSnap({ + method: 'htr_batchRequests', + params: { + network: DEFAULT_NETWORK, + errorHandling: 'fail-fast', + requests: [ + { + id: 'get-address', + method: 'htr_getAddress', + params: { + type: 'index', + index: 0, + }, + }, + { + id: 'get-balance', + method: 'htr_getBalance', + params: { + network: DEFAULT_NETWORK, + tokens, + }, + }, + { + id: 'get-network', + method: 'htr_getConnectedNetwork', + params: {}, + }, + ], + }, + }); + + console.log('Batch response:', response); + + if (!response || response.response.status !== 'success') { + throw new Error('Batch request failed'); + } + + const results = response.response.results; + + // Extract results by ID + const addressResult = results.find((r: any) => r.id === 'get-address'); + const balanceResult = results.find((r: any) => r.id === 'get-balance'); + const networkResult = results.find((r: any) => r.id === 'get-network'); + + const address = addressResult?.response?.response || ''; + const network = networkResult?.response?.response || DEFAULT_NETWORK; + + const balances = balanceResult?.response?.response?.map((balance: any) => ({ + token: balance.token_id || balance.token, + available: balance.available || 0, + locked: balance.locked || 0, + })) || []; + + console.log('Batched wallet init complete:', { address, balances, network }); + + return { address, balances, network }; + } catch (error) { + console.error('Batch wallet init failed:', error); + throw error; + } } }; diff --git a/yarn.lock b/yarn.lock index d4e82212..c136a672 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,16 +12,6 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10/f3451525379c68a73eb0a1e65247fbf28c0cccd126d93af21c75fceff77773d43c0d4a2d51978fb131aff25b5f2cb41a9fe48cc296e61ae65e679c4f6918b0ab - languageName: node - linkType: hard - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" @@ -34,36 +24,13 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/compat-data@npm:7.28.0" - checksum: 10/1a56a5e48c7259f72cc4329adeca38e72fd650ea09de267ea4aa070e3da91e5c265313b6656823fff77d64a8bab9554f276c66dade9355fdc0d8604deea015aa - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9": - version: 7.28.0 - resolution: "@babel/core@npm:7.28.0" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.0" - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-module-transforms": "npm:^7.27.3" - "@babel/helpers": "npm:^7.27.6" - "@babel/parser": "npm:^7.28.0" - "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.0" - "@babel/types": "npm:^7.28.0" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/1c86eec8d76053f7b1c5f65296d51d7b8ac00f80d169ff76d3cd2e7d85ab222eb100d40cc3314f41b96c8cc06e9abab21c63d246161f0f3f70ef14c958419c33 + version: 7.28.4 + resolution: "@babel/compat-data@npm:7.28.4" + checksum: 10/95b7864e6b210c84c069743966da448c0cb50015a4de5e18dd755776a0b5e53c4653e74f26700aed8de922eaa3b8844fc5fc5b29bc64830249d2abe914aec832 languageName: node linkType: hard -"@babel/core@npm:^7.28.4": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.28.4": version: 7.28.4 resolution: "@babel/core@npm:7.28.4" dependencies: @@ -86,20 +53,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.28.0, @babel/generator@npm:^7.7.2": - version: 7.28.0 - resolution: "@babel/generator@npm:7.28.0" - dependencies: - "@babel/parser": "npm:^7.28.0" - "@babel/types": "npm:^7.28.0" - "@jridgewell/gen-mapping": "npm:^0.3.12" - "@jridgewell/trace-mapping": "npm:^0.3.28" - jsesc: "npm:^3.0.2" - checksum: 10/064c5ba4c07ecd7600377bd0022d5f6bdb3b35e9ff78d9378f6bd1e656467ca902c091647222ab2f0d2967f6d6c0ca33157d37dd9b1c51926c9b0e1527ab9b92 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.28.3": +"@babel/generator@npm:^7.28.3, @babel/generator@npm:^7.7.2": version: 7.28.3 resolution: "@babel/generator@npm:7.28.3" dependencies: @@ -134,20 +88,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-create-class-features-plugin@npm:7.27.1" +"@babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-create-class-features-plugin@npm:7.28.3" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.3" "@babel/helper-member-expression-to-functions": "npm:^7.27.1" "@babel/helper-optimise-call-expression": "npm:^7.27.1" "@babel/helper-replace-supers": "npm:^7.27.1" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/701579b49046cd42f6a6b1e693e6827df8623185adf0911c4d68a219a082d8fd4501672880d92b6b96263d1c92a3beb891b3464a662a55e69e7539d8db9277da + checksum: 10/32d01bdd601b4d129b1d510058a19644abc764badcc543adaec9e71443e874ef252783cceb2809645bdf0e92b07f206fd439c75a2a48cf702c627aba7f3ee34a languageName: node linkType: hard @@ -206,20 +160,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.27.3": - version: 7.27.3 - resolution: "@babel/helper-module-transforms@npm:7.27.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/47abc90ceb181b4bdea9bf1717adf536d1b5e5acb6f6d8a7a4524080318b5ca8a99e6d58677268c596bad71077d1d98834d2c3815f2443e6d3f287962300f15d - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.28.3": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": version: 7.28.3 resolution: "@babel/helper-module-transforms@npm:7.28.3" dependencies: @@ -306,23 +247,13 @@ __metadata: linkType: hard "@babel/helper-wrap-function@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-wrap-function@npm:7.27.1" - dependencies: - "@babel/template": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10/effa5ba1732764982db52295a0003d0d6b527edf70d8c649f5a521808decbc47fc8f3c21cd31f7b6331192289f3bf5617141bce778fec45dcaedf5708d9c3140 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.27.6": - version: 7.27.6 - resolution: "@babel/helpers@npm:7.27.6" + version: 7.28.3 + resolution: "@babel/helper-wrap-function@npm:7.28.3" dependencies: "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.27.6" - checksum: 10/33c1ab2b42f05317776a4d67c5b00d916dbecfbde38a9406a1300ad3ad6e0380a2f6fcd3361369119a82a7d3c20de6e66552d147297f17f656cf17912605aa97 + "@babel/traverse": "npm:^7.28.3" + "@babel/types": "npm:^7.28.2" + checksum: 10/a5ed5fe7b8d9949d3b4f45ccec0b365018b8e444f6a6d794b4c8291e251e680f5b7c79c49c2170de9d14967c78721f59620ce70c5dac2d53c30628ef971d9dce languageName: node linkType: hard @@ -336,18 +267,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/parser@npm:7.28.0" - dependencies: - "@babel/types": "npm:^7.28.0" - bin: - parser: ./bin/babel-parser.js - checksum: 10/2c14a0d2600bae9ab81924df0a85bbd34e427caa099c260743f7c6c12b2042e743e776043a0d1a2573229ae648f7e66a80cfb26fc27e2a9eb59b55932d44c817 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.28.3, @babel/parser@npm:^7.28.4": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.3, @babel/parser@npm:^7.28.4": version: 7.28.4 resolution: "@babel/parser@npm:7.28.4" dependencies: @@ -405,15 +325,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.27.1" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.3" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/dfa68da5f68c0fa9deff1739ac270a5643ea07540b26a2a05403bc536c96595f0fe98a5eac9f9b3501b79ce57caa3045a94c75d5ccbfed946a62469a370ecdc2 + checksum: 10/eeacdb7fa5ae19e366cbc4da98736b898e05b9abe572aa23093e6be842c6c8284d08af538528ec771073a3749718033be3713ff455ca008d11a7b0e90e62a53d languageName: node linkType: hard @@ -685,13 +605,13 @@ __metadata: linkType: hard "@babel/plugin-transform-block-scoping@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.28.0" + version: 7.28.4 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.4" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/eefa0d0b3cd8005b77ad3239700cec90c2b19612e664772c50da6b917b272d20ebc831db6ff0d9fef011a810d9f02c434fdf551b3a4264eb834afa20090a9434 + checksum: 10/0848c681b0229ebb98da8a1fab53a29a94f79c4b80e536cb00dcedc08ca29341a48ebdf34d846f4d738376aa8e36830fa7f444bae3e85c8761cab96e9ad72a0f languageName: node linkType: hard @@ -707,31 +627,31 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.22.11, @babel/plugin-transform-class-static-block@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-class-static-block@npm:7.27.1" +"@babel/plugin-transform-class-static-block@npm:^7.22.11, @babel/plugin-transform-class-static-block@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.3" "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10/2d49de0f5ffc66ae873be1d8c3bf4d22e51889cc779d534e4dbda0f91e36907479e5c650b209fcfc80f922a6c3c2d76c905fc2f5dc78cc9a836f8c31b10686c4 + checksum: 10/c0ba8f0cbf3699287e5a711907dab3b29f346d9c107faa4e424aa26252e45845d74ca08ee6245bfccf32a8c04bc1d07a89b635e51522592c6044b810a48d3f58 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-classes@npm:7.28.0" +"@babel/plugin-transform-classes@npm:^7.28.3": + version: 7.28.4 + resolution: "@babel/plugin-transform-classes@npm:7.28.4" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.27.3" "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-globals": "npm:^7.28.0" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.0" + "@babel/traverse": "npm:^7.28.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/1a812a02f641ffc80b139b3c690ceba52476576f9df1a62dbdde9c412e88ca143b7b872da71665838c34276c4ed92f6547199044a424222b84f9a8ee7c85798f + checksum: 10/1f8423d0ba287ba4ae3aac89299e704a666ef2fc5950cd581e056c068486917a460efd5731fdd0d0fb0a8a08852e13b31c1add089028e89a8991a7fdfaff5c43 languageName: node linkType: hard @@ -1004,17 +924,17 @@ __metadata: linkType: hard "@babel/plugin-transform-object-rest-spread@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.0" + version: 7.28.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" dependencies: "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/plugin-transform-destructuring": "npm:^7.28.0" "@babel/plugin-transform-parameters": "npm:^7.27.7" - "@babel/traverse": "npm:^7.28.0" + "@babel/traverse": "npm:^7.28.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/55d37dbc0d5d47db860b7cc9fe5e3660d83108113fc3f2a7daecb95c20d4046a70247777969006f7db8fb2005eeeda719b9ff21e9f6d43355d0a62fc41b5880e + checksum: 10/aebe464e368cefa5c3ba40316c47b61eb25f891d436b2241021efef5bd0b473c4aa5ba4b9fa0f4b4d5ce4f6bc6b727628d1ca79d54e7b8deebb5369f7dff2984 languageName: node linkType: hard @@ -1122,14 +1042,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-regenerator@npm:7.28.0" +"@babel/plugin-transform-regenerator@npm:^7.28.3": + version: 7.28.4 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/f8d4e635857b32b7ff8eeff0726e9bbfbece12eccd65e53d081fe0176cb432cd6bfcc64d28edc34c3cfa1aa79da46ec8d0b9b4f9242da7ec2153c34ea6d2163c + checksum: 10/24da51a659d882e02bd4353da9d8e045e58d967c1cddaf985ad699a9fc9f920a45eff421c4283a248d83dc16590b8956e66fd710be5db8723b274cfea0b51b2f languageName: node linkType: hard @@ -1157,8 +1077,8 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.13.2": - version: 7.28.0 - resolution: "@babel/plugin-transform-runtime@npm:7.28.0" + version: 7.28.3 + resolution: "@babel/plugin-transform-runtime@npm:7.28.3" dependencies: "@babel/helper-module-imports": "npm:^7.27.1" "@babel/helper-plugin-utils": "npm:^7.27.1" @@ -1168,7 +1088,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/43abe94e64ab4d2be71958d1ae0dbfeeb241ce820e4c48f285c8bcc2e764b673786f784bc743b6903bfc72ec694003f1e5c2b032b83accd591dfc203a64e3d4a + checksum: 10/5e8d45f3d243ff15cf4ebe59c2bf52e33bb5864092365dd332330256c96eaa7a16e3cecb1c9e826d5ced7e3cc0b0925c2ca29df674d97252c8eb90ecddab1d78 languageName: node linkType: hard @@ -1291,8 +1211,8 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.23.2": - version: 7.28.0 - resolution: "@babel/preset-env@npm:7.28.0" + version: 7.28.3 + resolution: "@babel/preset-env@npm:7.28.3" dependencies: "@babel/compat-data": "npm:^7.28.0" "@babel/helper-compilation-targets": "npm:^7.27.2" @@ -1302,7 +1222,7 @@ __metadata: "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.3" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" @@ -1313,8 +1233,8 @@ __metadata: "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" "@babel/plugin-transform-block-scoping": "npm:^7.28.0" "@babel/plugin-transform-class-properties": "npm:^7.27.1" - "@babel/plugin-transform-class-static-block": "npm:^7.27.1" - "@babel/plugin-transform-classes": "npm:^7.28.0" + "@babel/plugin-transform-class-static-block": "npm:^7.28.3" + "@babel/plugin-transform-classes": "npm:^7.28.3" "@babel/plugin-transform-computed-properties": "npm:^7.27.1" "@babel/plugin-transform-destructuring": "npm:^7.28.0" "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" @@ -1346,7 +1266,7 @@ __metadata: "@babel/plugin-transform-private-methods": "npm:^7.27.1" "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" "@babel/plugin-transform-property-literals": "npm:^7.27.1" - "@babel/plugin-transform-regenerator": "npm:^7.28.0" + "@babel/plugin-transform-regenerator": "npm:^7.28.3" "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" "@babel/plugin-transform-reserved-words": "npm:^7.27.1" "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" @@ -1366,7 +1286,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/8814453ffe4cfd5926cf2af0ecc956240bcc1e5f49592015962a5f1c115c5c0c34c1e0a5c66d3d4e1a283644bb5ea4e199ced0b6117ffd20113a994fd3080798 + checksum: 10/b09991276a5ea4f2f95077bb451420f683e19d59405bc1fbbb392bb3571592edc922daac4eaa50b2b407c0b24c4e1e9df0f76738c3c573dac4e6bcf028daa8c5 languageName: node linkType: hard @@ -1399,9 +1319,9 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.9.2": - version: 7.27.6 - resolution: "@babel/runtime@npm:7.27.6" - checksum: 10/cc957a12ba3781241b83d528eb69ddeb86ca5ac43179a825e83aa81263a6b3eb88c57bed8a937cdeacfc3192e07ec24c73acdfea4507d0c0428c8e23d6322bfe + version: 7.28.4 + resolution: "@babel/runtime@npm:7.28.4" + checksum: 10/6c9a70452322ea80b3c9b2a412bcf60771819213a67576c8cec41e88a95bb7bf01fc983754cda35dc19603eef52df22203ccbf7777b9d6316932f9fb77c25163 languageName: node linkType: hard @@ -1416,22 +1336,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/traverse@npm:7.28.0" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.0" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.28.0" - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.0" - debug: "npm:^4.3.1" - checksum: 10/c1c24b12b6cb46241ec5d11ddbd2989d6955c282715cbd8ee91a09fe156b3bdb0b88353ac33329c2992113e3dfb5198f616c834f8805bb3fa85da1f864bec5f3 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4": +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4": version: 7.28.4 resolution: "@babel/traverse@npm:7.28.4" dependencies: @@ -1446,17 +1351,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.23.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.28.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.28.0 - resolution: "@babel/types@npm:7.28.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - checksum: 10/2f28b84efb5005d1e85fc3944219c284400c42aeefc1f6e10500a74fed43b3dfb4f9e349a5d6e0e3fc24f5d241c513b30ef00ede2885535ce7a0a4e111c2098e - languageName: node - linkType: hard - -"@babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.23.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.28.4 resolution: "@babel/types@npm:7.28.4" dependencies: @@ -1480,17 +1375,24 @@ __metadata: languageName: node linkType: hard -"@endo/env-options@npm:^1.1.10": - version: 1.1.10 - resolution: "@endo/env-options@npm:1.1.10" - checksum: 10/a9facb3ac3b05ff7ccb699c6f2d3896b87e75d5c13a1ad82feb5309bd7a78d51f1155bf35eb02f48a6fdc2436ae6b52a87e6a7d6e6ac843f70233afaf280be40 +"@endo/cache-map@npm:^1.1.0": + version: 1.1.0 + resolution: "@endo/cache-map@npm:1.1.0" + checksum: 10/1cf2ebae70e9983edd30e830933df52ab9a0140fdecd420325fd20f1633b9afeb377b5cac548c7b7d04beb4cd1a14e672055ad25145119b2b151db78ffaa0b2f languageName: node linkType: hard -"@endo/immutable-arraybuffer@npm:^1.1.1": - version: 1.1.1 - resolution: "@endo/immutable-arraybuffer@npm:1.1.1" - checksum: 10/87a8a51b11a844f7ee7d67ba9370ce20ac38218e6af1eeaf7550c4699897c89f16751ca18c83930b87c7c994a7f6136354ca29afb08780f9286356b21a13e39f +"@endo/env-options@npm:^1.1.11": + version: 1.1.11 + resolution: "@endo/env-options@npm:1.1.11" + checksum: 10/a85326b2f422ebb3f5895ed263d230bf9c4915ed2f798210bebb3941daf94d97495f4767f4113bab8f3781b0534ecbe1d29067d7806478fd6237ab69e97fe5c1 + languageName: node + linkType: hard + +"@endo/immutable-arraybuffer@npm:^1.1.2": + version: 1.1.2 + resolution: "@endo/immutable-arraybuffer@npm:1.1.2" + checksum: 10/99159e4a04aad1dbe633b54b90f4591ff527c301ff2dc6585b65949e9c98b8942d726a23815470e6e4641c447bc94368cc96282f8fb50fb78f326b670c48cd16 languageName: node linkType: hard @@ -1687,18 +1589,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.7.0 - resolution: "@eslint-community/eslint-utils@npm:4.7.0" - dependencies: - eslint-visitor-keys: "npm:^3.4.3" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/43ed5d391526d9f5bbe452aef336389a473026fca92057cf97c576db11401ce9bcf8ef0bf72625bbaf6207ed8ba6bf0dcf4d7e809c24f08faa68a28533c491a7 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": version: 4.9.0 resolution: "@eslint-community/eslint-utils@npm:4.9.0" dependencies: @@ -1716,17 +1607,6 @@ __metadata: languageName: node linkType: hard -"@eslint/config-array@npm:^0.15.1": - version: 0.15.1 - resolution: "@eslint/config-array@npm:0.15.1" - dependencies: - "@eslint/object-schema": "npm:^2.1.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10/cf8f68a24498531180fad6846cb52dac4e852b0296d2664930bc15d6a2944ad427827bbaebfddf3f87b9c5db0e36c13974d6dc89fff8ba0d3d2b4357b8d52b4e - languageName: node - linkType: hard - "@eslint/config-array@npm:^0.21.0": version: 0.21.0 resolution: "@eslint/config-array@npm:0.21.0" @@ -1771,7 +1651,7 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.1.0, @eslint/eslintrc@npm:^3.3.1": +"@eslint/eslintrc@npm:^3.3.1": version: 3.3.1 resolution: "@eslint/eslintrc@npm:3.3.1" dependencies: @@ -1788,6 +1668,13 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:8.56.0": + version: 8.56.0 + resolution: "@eslint/js@npm:8.56.0" + checksum: 10/97a4b5ccf7e24f4d205a1fb0f21cdcd610348ecf685f6798a48dd41ba443f2c1eedd3050ff5a0b8f30b8cf6501ab512aa9b76e531db15e59c9ebaa41f3162e37 + languageName: node + linkType: hard + "@eslint/js@npm:8.57.1": version: 8.57.1 resolution: "@eslint/js@npm:8.57.1" @@ -1802,14 +1689,7 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.4.0": - version: 9.4.0 - resolution: "@eslint/js@npm:9.4.0" - checksum: 10/f1fa9acda8bab02dad21e9b7f46c6ba8cb3949979846caf7667f0c682ed0b56d9e8db143b00aab587ef2d02603df202eb5f7017d8f3a98be94be6efa763865ab - languageName: node - linkType: hard - -"@eslint/object-schema@npm:^2.1.3, @eslint/object-schema@npm:^2.1.6": +"@eslint/object-schema@npm:^2.1.6": version: 2.1.6 resolution: "@eslint/object-schema@npm:2.1.6" checksum: 10/266085c8d3fa6cd99457fb6350dffb8ee39db9c6baf28dc2b86576657373c92a568aec4bae7d142978e798b74c271696672e103202d47a0c148da39154351ed6 @@ -1845,15 +1725,6 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/rlp@npm:^5.0.2": - version: 5.0.2 - resolution: "@ethereumjs/rlp@npm:5.0.2" - bin: - rlp: bin/rlp.cjs - checksum: 10/2af80d98faf7f64dfb6d739c2df7da7350ff5ad52426c3219897e843ee441215db0ffa346873200a6be6d11142edb9536e66acd62436b5005fa935baaf7eb6bd - languageName: node - linkType: hard - "@ethereumjs/tx@npm:^4.2.0": version: 4.2.0 resolution: "@ethereumjs/tx@npm:4.2.0" @@ -1877,34 +1748,102 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/util@npm:^9.1.0": - version: 9.1.0 - resolution: "@ethereumjs/util@npm:9.1.0" - dependencies: - "@ethereumjs/rlp": "npm:^5.0.2" - ethereum-cryptography: "npm:^2.2.1" - checksum: 10/4e22c4081c63eebb808eccd54f7f91cd3407f4cac192da5f30a0d6983fe07d51f25e6a9d08624f1376e604bb7dce574aafcf0fbf0becf42f62687c11e710ac41 - languageName: node - linkType: hard - -"@hathor/hathor-rpc-handler@workspace:*, @hathor/hathor-rpc-handler@workspace:packages/hathor-rpc-handler": +"@hathor/hathor-rpc-handler@workspace:^, @hathor/hathor-rpc-handler@workspace:packages/hathor-rpc-handler": version: 0.0.0-use.local resolution: "@hathor/hathor-rpc-handler@workspace:packages/hathor-rpc-handler" dependencies: - "@eslint/js": "npm:9.4.0" + "@eslint/js": "npm:8.56.0" "@hathor/wallet-lib": "npm:2.8.3" "@types/eslint__js": "npm:8.42.3" "@types/jest": "npm:29.5.12" "@types/node": "npm:20.14.2" - eslint: "npm:9.4.0" + eslint: "npm:^8.56.0" jest: "npm:29.7.0" ts-jest: "npm:29.1.4" - typescript: "npm:5.4.5" + typescript: "npm:4.8.4" typescript-eslint: "npm:7.13.0" zod: "npm:3.23.8" languageName: unknown linkType: soft +"@hathor/snap-utils@workspace:^, @hathor/snap-utils@workspace:packages/snap-utils": + version: 0.0.0-use.local + resolution: "@hathor/snap-utils@workspace:packages/snap-utils" + dependencies: + "@metamask/eslint-config": "npm:^12.2.0" + "@metamask/eslint-config-browser": "npm:^12.1.0" + "@metamask/eslint-config-jest": "npm:^12.1.0" + "@metamask/eslint-config-nodejs": "npm:^12.1.0" + "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/providers": "npm:^16.0.0" + "@types/jest": "npm:^27.5.2" + "@types/node": "npm:^22.14.0" + "@types/react": "npm:^18.0.15" + "@types/react-dom": "npm:^18.0.6" + "@types/styled-components": "npm:^5.1.25" + "@typescript-eslint/eslint-plugin": "npm:^5.42.1" + "@typescript-eslint/parser": "npm:^5.42.1" + eslint: "npm:^8.45.0" + eslint-config-prettier: "npm:^8.5.0" + eslint-plugin-import: "npm:~2.26.0" + eslint-plugin-jest: "npm:^27.1.5" + eslint-plugin-jsdoc: "npm:^41.1.2" + eslint-plugin-n: "npm:^15.7.0" + eslint-plugin-prettier: "npm:^4.2.1" + eslint-plugin-promise: "npm:^6.1.1" + prettier: "npm:^2.7.1" + prettier-plugin-packagejson: "npm:^2.2.18" + typescript: "npm:^4.7.4" + peerDependencies: + react: ^18.2.0 + languageName: unknown + linkType: soft + +"@hathor/snap@workspace:packages/snap": + version: 0.0.0-use.local + resolution: "@hathor/snap@workspace:packages/snap" + dependencies: + "@hathor/hathor-rpc-handler": "workspace:^" + "@hathor/wallet-lib": "npm:^1.15.0" + "@jest/globals": "npm:^29.5.0" + "@metamask/auto-changelog": "npm:^3.4.4" + "@metamask/eslint-config": "npm:^12.2.0" + "@metamask/eslint-config-jest": "npm:^12.1.0" + "@metamask/eslint-config-nodejs": "npm:^12.1.0" + "@metamask/eslint-config-typescript": "npm:^12.1.0" + "@metamask/snaps-cli": "npm:^6.2.1" + "@metamask/snaps-jest": "npm:^8.2.0" + "@metamask/snaps-sdk": "npm:6.9.0" + "@types/path-browserify": "npm:^1" + "@types/react": "npm:18.2.4" + "@types/react-dom": "npm:18.2.4" + "@typescript-eslint/eslint-plugin": "npm:^5.42.1" + "@typescript-eslint/parser": "npm:^5.42.1" + assert: "npm:^2.1.0" + bn.js: "npm:4.11.8" + buffer: "npm:^6.0.3" + crypto-browserify: "npm:^3.12.1" + eslint: "npm:^8.56.0" + eslint-config-prettier: "npm:^8.5.0" + eslint-plugin-import: "npm:~2.26.0" + eslint-plugin-jest: "npm:^27.1.5" + eslint-plugin-jsdoc: "npm:^41.1.2" + eslint-plugin-n: "npm:^15.7.0" + eslint-plugin-prettier: "npm:^4.2.1" + eslint-plugin-promise: "npm:^6.1.1" + jest: "npm:^29.5.0" + path-browserify: "npm:^1.0.1" + prettier: "npm:^2.7.1" + prettier-plugin-packagejson: "npm:^2.2.11" + process: "npm:^0.11.10" + rimraf: "npm:^3.0.2" + stream-browserify: "npm:^3.0.0" + ts-jest: "npm:^29.1.0" + typescript: "npm:~4.8.4" + util: "npm:^0.12.5" + languageName: unknown + linkType: soft + "@hathor/wallet-lib@npm:2.8.3, @hathor/wallet-lib@npm:^2.6.1": version: 2.8.3 resolution: "@hathor/wallet-lib@npm:2.8.3" @@ -1923,11 +1862,30 @@ __metadata: languageName: node linkType: hard +"@hathor/wallet-lib@npm:^1.15.0": + version: 1.15.0 + resolution: "@hathor/wallet-lib@npm:1.15.0" + dependencies: + axios: "npm:1.7.2" + bitcore-lib: "npm:8.25.10" + bitcore-mnemonic: "npm:8.25.10" + buffer: "npm:6.0.3" + crypto-js: "npm:4.2.0" + isomorphic-ws: "npm:5.0.0" + lodash: "npm:4.17.21" + long: "npm:5.2.3" + queue-microtask: "npm:1.2.3" + ws: "npm:8.17.1" + checksum: 10/92babf6327fe589c60f71083fe00cf860e55209c148736bace0a685e504faa3192cf134f098a258d32fb7221398ab3d3f0b5bf9ed8db55d0819cfe28720d0cae + languageName: node + linkType: hard + "@hathor/web-wallet@workspace:packages/web-wallet": version: 0.0.0-use.local resolution: "@hathor/web-wallet@workspace:packages/web-wallet" dependencies: "@eslint/js": "npm:^9.33.0" + "@hathor/snap-utils": "workspace:^" "@hathor/wallet-lib": "npm:^2.6.1" "@playwright/test": "npm:^1.54.2" "@radix-ui/react-dialog": "npm:^1.1.15" @@ -1948,7 +1906,6 @@ __metadata: react: "npm:^19.1.1" react-dom: "npm:^19.1.1" react-qr-code: "npm:^2.0.18" - snap-utils: "workspace:^" tailwind-merge: "npm:^3.3.1" tailwindcss: "npm:3.4.17" typescript: "npm:~5.8.3" @@ -1999,13 +1956,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/retry@npm:^0.3.0": - version: 0.3.1 - resolution: "@humanwhocodes/retry@npm:0.3.1" - checksum: 10/eb457f699529de7f07649679ec9e0353055eebe443c2efe71c6dd950258892475a038e13c6a8c5e13ed1fb538cdd0a8794faa96b24b6ffc4c87fb1fc9f70ad7f - languageName: node - linkType: hard - "@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": version: 0.4.3 resolution: "@humanwhocodes/retry@npm:0.4.3" @@ -2156,7 +2106,7 @@ __metadata: languageName: node linkType: hard -"@jest/globals@npm:29.7.0, @jest/globals@npm:^29.5.0, @jest/globals@npm:^29.7.0": +"@jest/globals@npm:^29.5.0, @jest/globals@npm:^29.7.0": version: 29.7.0 resolution: "@jest/globals@npm:29.7.0" dependencies: @@ -2286,17 +2236,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.12 - resolution: "@jridgewell/gen-mapping@npm:0.3.12" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10/151667531566417a940d4dd0a319724979f7a90b9deb9f1617344e1183887d78c835bc1a9209c1ee10fc8a669cdd7ac8120a43a2b6bc8d0d5dd18a173059ff4b - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.2": +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.13 resolution: "@jridgewell/gen-mapping@npm:0.3.13" dependencies: @@ -2324,29 +2264,29 @@ __metadata: linkType: hard "@jridgewell/source-map@npm:^0.3.3": - version: 0.3.10 - resolution: "@jridgewell/source-map@npm:0.3.10" + version: 0.3.11 + resolution: "@jridgewell/source-map@npm:0.3.11" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - checksum: 10/3b1f8a348e078994c09ce28dbc8be660318eecd5903a4220aec69b735f69a0cab24e70be815f1c9d65ab480e6858ce7f2e31447800b7e05244505c5ad477b134 + checksum: 10/847f1177d3d133a0966ef61ca29abea0d79788a0652f90ee1893b3da968c190b7e31c3534cc53701179dd6b14601eef3d78644e727e05b1a08c68d281aedc4ba languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": - version: 1.5.4 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.4" - checksum: 10/f677787f52224c6c971a7a41b7a074243240a6917fa75eceb9f7a442866f374fb0522b505e0496ee10a650c5936727e76d11bf36a6d0ae9e6c3b726c9e284cc7 + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10/5d9d207b462c11e322d71911e55e21a4e2772f71ffe8d6f1221b8eb5ae6774458c1d242f897fb0814e8714ca9a6b498abfa74dfe4f434493342902b1a48b33a5 languageName: node linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": - version: 0.3.29 - resolution: "@jridgewell/trace-mapping@npm:0.3.29" + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10/64e1ce0dc3a9e56b0118eaf1b2f50746fd59a36de37516cc6855b5370d5f367aa8229e1237536d738262e252c70ee229619cb04e3f3b822146ee3eb1b7ab297f + checksum: 10/da0283270e691bdb5543806077548532791608e52386cfbbf3b9e8fb00457859d1bd01d512851161c886eb3a2f3ce6fd9bcf25db8edf3bddedd275bd4a88d606 languageName: node linkType: hard @@ -2372,7 +2312,7 @@ __metadata: languageName: node linkType: hard -"@metamask/auto-changelog@npm:3.4.4": +"@metamask/auto-changelog@npm:^3.4.4": version: 3.4.4 resolution: "@metamask/auto-changelog@npm:3.4.4" dependencies: @@ -2398,23 +2338,23 @@ __metadata: linkType: hard "@metamask/base-controller@npm:^8.0.0, @metamask/base-controller@npm:^8.0.1": - version: 8.0.1 - resolution: "@metamask/base-controller@npm:8.0.1" + version: 8.4.0 + resolution: "@metamask/base-controller@npm:8.4.0" dependencies: - "@metamask/utils": "npm:^11.2.0" + "@metamask/messenger": "npm:^0.3.0" + "@metamask/utils": "npm:^11.8.0" immer: "npm:^9.0.6" - checksum: 10/5ef02099ce2e2246c534a7742b45704417beebf2c21db70241d09c3ddbb549ff3375284ece00edf4051029facff181e5e05f135e97b943ec6c514eecce4fa37a + checksum: 10/1be56bb5c86be8332c2d00e890e7fb4305d4fd1504ed4be7cad8bfa4cce76dc80e78f6706bbad79a45700ef4aa53d3fe0e219e36798244c1f7dfc6ab0a1393f7 languageName: node linkType: hard "@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.5.0": - version: 11.10.0 - resolution: "@metamask/controller-utils@npm:11.10.0" + version: 11.14.0 + resolution: "@metamask/controller-utils@npm:11.14.0" dependencies: - "@ethereumjs/util": "npm:^9.1.0" "@metamask/eth-query": "npm:^4.0.0" "@metamask/ethjs-unit": "npm:^0.3.0" - "@metamask/utils": "npm:^11.2.0" + "@metamask/utils": "npm:^11.8.0" "@spruceid/siwe-parser": "npm:2.1.0" "@types/bn.js": "npm:^5.1.5" bignumber.js: "npm:^9.1.2" @@ -2422,13 +2362,14 @@ __metadata: cockatiel: "npm:^3.1.2" eth-ens-namehash: "npm:^2.0.8" fast-deep-equal: "npm:^3.1.3" + lodash: "npm:^4.17.21" peerDependencies: "@babel/runtime": ^7.0.0 - checksum: 10/e563d1705ddba1b4cf2903827bd9a47d95700b150e17d3c5b57dcdd9b51d3f8e2bee9daaa6d2d5718beba3e28498be06d308daba2c294adf0716bb34894d0c96 + checksum: 10/68a30d60a0f94316635dbe6b7f4edb0adc62873b7834a72a1342b2f61ff85fdd1d994a4168af6b15aa23a8385627df7becb14a7aa033b875d96a97b9c07120c4 languageName: node linkType: hard -"@metamask/eslint-config-browser@npm:12.1.0": +"@metamask/eslint-config-browser@npm:^12.1.0": version: 12.1.0 resolution: "@metamask/eslint-config-browser@npm:12.1.0" peerDependencies: @@ -2438,7 +2379,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eslint-config-jest@npm:12.1.0": +"@metamask/eslint-config-jest@npm:^12.1.0": version: 12.1.0 resolution: "@metamask/eslint-config-jest@npm:12.1.0" peerDependencies: @@ -2449,7 +2390,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eslint-config-nodejs@npm:12.1.0": +"@metamask/eslint-config-nodejs@npm:^12.1.0": version: 12.1.0 resolution: "@metamask/eslint-config-nodejs@npm:12.1.0" peerDependencies: @@ -2460,7 +2401,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eslint-config-typescript@npm:12.1.0": +"@metamask/eslint-config-typescript@npm:^12.1.0": version: 12.1.0 resolution: "@metamask/eslint-config-typescript@npm:12.1.0" peerDependencies: @@ -2473,7 +2414,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eslint-config@npm:12.2.0": +"@metamask/eslint-config@npm:^12.2.0": version: 12.2.0 resolution: "@metamask/eslint-config@npm:12.2.0" peerDependencies: @@ -2489,21 +2430,21 @@ __metadata: linkType: hard "@metamask/eth-block-tracker@npm:^12.0.0": - version: 12.0.1 - resolution: "@metamask/eth-block-tracker@npm:12.0.1" + version: 12.1.0 + resolution: "@metamask/eth-block-tracker@npm:12.1.0" dependencies: - "@metamask/eth-json-rpc-provider": "npm:^4.1.5" + "@metamask/eth-json-rpc-provider": "npm:^5.0.0" "@metamask/safe-event-emitter": "npm:^3.1.1" "@metamask/utils": "npm:^11.0.1" json-rpc-random-id: "npm:^1.0.1" pify: "npm:^5.0.0" - checksum: 10/732dc58819bfb3593e2bde88f0cde5049db70d11ffffbe4ec18353edf2621328741f6ebb2ec5e6f6db26411c15b827941f88ca6eb739b2591624f85cfa5f687b + checksum: 10/8d46913e1ca3fb02cc0a6ad821a8d8a46311ecafe1e947e7c0f6f849d5b8b500b64471dcdb50a2fecce9924cbedcae2fcd86850041526af713812c154ac8e0be languageName: node linkType: hard "@metamask/eth-json-rpc-middleware@npm:^17.0.0": - version: 17.0.1 - resolution: "@metamask/eth-json-rpc-middleware@npm:17.0.1" + version: 17.1.0 + resolution: "@metamask/eth-json-rpc-middleware@npm:17.1.0" dependencies: "@metamask/eth-block-tracker": "npm:^12.0.0" "@metamask/eth-json-rpc-provider": "npm:^4.1.7" @@ -2517,11 +2458,11 @@ __metadata: klona: "npm:^2.0.6" pify: "npm:^5.0.0" safe-stable-stringify: "npm:^2.4.3" - checksum: 10/6a0709479f7187183f99bd76b2724cb72b4155ded506d939b7625ae17f63bff68bee9828e0d76af06e4d4009eecc87b63059e8796947442e96844a42af161e2f + checksum: 10/4a2d66a7b38b4a3eb5cbe290815681b803829b5e367a484e2ac9b78fdea70a1c7dce4a8f924140d745a05f945b4dfdd53c883fd2661bc1c22dc563b4f0aafd38 languageName: node linkType: hard -"@metamask/eth-json-rpc-provider@npm:^4.1.5, @metamask/eth-json-rpc-provider@npm:^4.1.7": +"@metamask/eth-json-rpc-provider@npm:^4.1.7": version: 4.1.8 resolution: "@metamask/eth-json-rpc-provider@npm:4.1.8" dependencies: @@ -2534,6 +2475,19 @@ __metadata: languageName: node linkType: hard +"@metamask/eth-json-rpc-provider@npm:^5.0.0": + version: 5.0.0 + resolution: "@metamask/eth-json-rpc-provider@npm:5.0.0" + dependencies: + "@metamask/json-rpc-engine": "npm:^10.1.0" + "@metamask/rpc-errors": "npm:^7.0.2" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^11.8.0" + uuid: "npm:^8.3.2" + checksum: 10/b09a4c06bf570c09b045583733ba2cf5047937e84d42b4c13f8b6a1e39acae083f032aed16c17b37dd4b86cab16f6e52b0ba788d4f3a63c4301a614d69cad937 + languageName: node + linkType: hard + "@metamask/eth-query@npm:^4.0.0": version: 4.0.0 resolution: "@metamask/eth-query@npm:4.0.0" @@ -2571,14 +2525,14 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-engine@npm:^10.0.2, @metamask/json-rpc-engine@npm:^10.0.3": - version: 10.0.3 - resolution: "@metamask/json-rpc-engine@npm:10.0.3" +"@metamask/json-rpc-engine@npm:^10.0.2, @metamask/json-rpc-engine@npm:^10.0.3, @metamask/json-rpc-engine@npm:^10.1.0": + version: 10.1.0 + resolution: "@metamask/json-rpc-engine@npm:10.1.0" dependencies: "@metamask/rpc-errors": "npm:^7.0.2" "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^11.1.0" - checksum: 10/0558f511aada9bfb13d3b55f6a834543431cc6148a681d3a2885f6171fefbcf092ea4aabc7bbb547de6fdf382cdaf6a73ca5175c63c2d1b6560f763b4b37162e + "@metamask/utils": "npm:^11.8.0" + checksum: 10/af41cd52074286e1d82917cc41b65954f79d96158c70c7426f89c572f9178b31c674658b6079f13df22a47d9d7743ddcfa8180df6e6cbabc30d848a172186d32 languageName: node linkType: hard @@ -2593,6 +2547,17 @@ __metadata: languageName: node linkType: hard +"@metamask/json-rpc-engine@npm:^9.0.1": + version: 9.0.3 + resolution: "@metamask/json-rpc-engine@npm:9.0.3" + dependencies: + "@metamask/rpc-errors": "npm:^6.3.1" + "@metamask/safe-event-emitter": "npm:^3.0.0" + "@metamask/utils": "npm:^9.1.0" + checksum: 10/23a3cafb5869f6d5867105e3570ac4e214a72dda0b4b428cde6bae8856ec838c822b174f8cea054108122531d662cf93a65e92e1ee07da0485d5d0c0e5a1fca6 + languageName: node + linkType: hard + "@metamask/json-rpc-middleware-stream@npm:^7.0.1": version: 7.0.2 resolution: "@metamask/json-rpc-middleware-stream@npm:7.0.2" @@ -2605,7 +2570,7 @@ __metadata: languageName: node linkType: hard -"@metamask/json-rpc-middleware-stream@npm:^8.0.6, @metamask/json-rpc-middleware-stream@npm:^8.0.7": +"@metamask/json-rpc-middleware-stream@npm:^8.0.1, @metamask/json-rpc-middleware-stream@npm:^8.0.6, @metamask/json-rpc-middleware-stream@npm:^8.0.7": version: 8.0.7 resolution: "@metamask/json-rpc-middleware-stream@npm:8.0.7" dependencies: @@ -2630,6 +2595,26 @@ __metadata: languageName: node linkType: hard +"@metamask/key-tree@npm:^9.1.2": + version: 9.1.2 + resolution: "@metamask/key-tree@npm:9.1.2" + dependencies: + "@metamask/scure-bip39": "npm:^2.1.1" + "@metamask/utils": "npm:^9.0.0" + "@noble/curves": "npm:^1.2.0" + "@noble/hashes": "npm:^1.3.2" + "@scure/base": "npm:^1.0.0" + checksum: 10/9b178a4156b2f36bf630564dd0530c41c6356492971d2bcc8f979c79c81144945823a5b770e4097e12b89b42133b81f00c95a7b8fe9931ea1dd928989ee3c406 + languageName: node + linkType: hard + +"@metamask/messenger@npm:^0.3.0": + version: 0.3.0 + resolution: "@metamask/messenger@npm:0.3.0" + checksum: 10/84e9f4193646d749c7260a4958b13974b3c8738cc2e414116279ed31734e1edba687ff56ddbfdb75033bce30aaa9eeb7c391bccb87a66dbc99a902882271f673 + languageName: node + linkType: hard + "@metamask/number-to-bn@npm:^1.7.1": version: 1.7.1 resolution: "@metamask/number-to-bn@npm:1.7.1" @@ -2694,7 +2679,7 @@ __metadata: languageName: node linkType: hard -"@metamask/providers@npm:16.1.0": +"@metamask/providers@npm:^16.0.0": version: 16.1.0 resolution: "@metamask/providers@npm:16.1.0" dependencies: @@ -2714,9 +2699,30 @@ __metadata: languageName: node linkType: hard +"@metamask/providers@npm:^17.1.2": + version: 17.2.1 + resolution: "@metamask/providers@npm:17.2.1" + dependencies: + "@metamask/json-rpc-engine": "npm:^9.0.1" + "@metamask/json-rpc-middleware-stream": "npm:^8.0.1" + "@metamask/object-multiplex": "npm:^2.0.0" + "@metamask/rpc-errors": "npm:^6.3.1" + "@metamask/safe-event-emitter": "npm:^3.1.1" + "@metamask/utils": "npm:^9.0.0" + detect-browser: "npm:^5.2.0" + extension-port-stream: "npm:^4.1.0" + fast-deep-equal: "npm:^3.1.3" + is-stream: "npm:^2.0.0" + readable-stream: "npm:^3.6.2" + peerDependencies: + webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0 + checksum: 10/ff9cbcdd4cfa410c52ae0d9d39ad9285fb21f583bcb36a8a39d1862681fe17483008c15ab0ce87797ea94cad82a2f2e58b29b1db1f02df151f9cf3b05013e8a4 + languageName: node + linkType: hard + "@metamask/providers@npm:^22.1.0": - version: 22.1.0 - resolution: "@metamask/providers@npm:22.1.0" + version: 22.1.1 + resolution: "@metamask/providers@npm:22.1.1" dependencies: "@metamask/json-rpc-engine": "npm:^10.0.2" "@metamask/json-rpc-middleware-stream": "npm:^8.0.6" @@ -2731,11 +2737,11 @@ __metadata: readable-stream: "npm:^3.6.2" peerDependencies: webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0 - checksum: 10/d6dc969296e3d478a904228f27adae3b6dcbfdbf49eb6d571c9d73d7506df3c6e3bf3c3464f1e69e4c0acb6f6072d12d1c8182348e626ca1572f4f22f9c585e6 + checksum: 10/50194c608fb308cee268c6eefb8c8d439a9d07aa41d07cb5ddcd7e706819aea7e746150f32688fe06d20309b49346440855b5d56aacf286b343da6fcb217cc12 languageName: node linkType: hard -"@metamask/rpc-errors@npm:^6.2.1": +"@metamask/rpc-errors@npm:^6.2.1, @metamask/rpc-errors@npm:^6.3.1": version: 6.4.0 resolution: "@metamask/rpc-errors@npm:6.4.0" dependencies: @@ -2745,7 +2751,7 @@ __metadata: languageName: node linkType: hard -"@metamask/rpc-errors@npm:^7.0.2, @metamask/rpc-errors@npm:^7.0.3": +"@metamask/rpc-errors@npm:^7.0.2": version: 7.0.3 resolution: "@metamask/rpc-errors@npm:7.0.3" dependencies: @@ -2773,13 +2779,13 @@ __metadata: linkType: hard "@metamask/slip44@npm:^4.1.0, @metamask/slip44@npm:^4.2.0": - version: 4.2.0 - resolution: "@metamask/slip44@npm:4.2.0" - checksum: 10/262c671647776afd66fff4d70206400ecfe576c40a38b32e2d21744f2f65dc117af194a9e2f611e389851a9ccf7b2f2f939521f555c5fdb8c4bc70508f5b99e8 + version: 4.3.0 + resolution: "@metamask/slip44@npm:4.3.0" + checksum: 10/508983a48911f2be8d9de117d390ecfb5b949a6032f5d6c5cc63f7f23302b87468be6ff08dee4881d39e8f5f66b5545eab15e6fc0511acea10fd4c99852a8212 languageName: node linkType: hard -"@metamask/snaps-cli@npm:6.7.0": +"@metamask/snaps-cli@npm:^6.2.1": version: 6.7.0 resolution: "@metamask/snaps-cli@npm:6.7.0" dependencies: @@ -2899,7 +2905,7 @@ __metadata: languageName: node linkType: hard -"@metamask/snaps-jest@npm:8.16.0": +"@metamask/snaps-jest@npm:^8.2.0": version: 8.16.0 resolution: "@metamask/snaps-jest@npm:8.16.0" dependencies: @@ -2948,16 +2954,16 @@ __metadata: languageName: node linkType: hard -"@metamask/snaps-sdk@npm:9.2.0": - version: 9.2.0 - resolution: "@metamask/snaps-sdk@npm:9.2.0" +"@metamask/snaps-sdk@npm:6.9.0": + version: 6.9.0 + resolution: "@metamask/snaps-sdk@npm:6.9.0" dependencies: - "@metamask/key-tree": "npm:^10.1.1" - "@metamask/providers": "npm:^22.1.0" - "@metamask/rpc-errors": "npm:^7.0.3" - "@metamask/superstruct": "npm:^3.2.1" - "@metamask/utils": "npm:^11.4.2" - checksum: 10/cb85e2d526533ddc3704cbb5ecb600e6ca111029b3df196a57166e090ee6ac1b995b0bd635798a0fc3210ece54696a8d53397024a5de475bdbb8097fb84be047 + "@metamask/key-tree": "npm:^9.1.2" + "@metamask/providers": "npm:^17.1.2" + "@metamask/rpc-errors": "npm:^6.3.1" + "@metamask/superstruct": "npm:^3.1.0" + "@metamask/utils": "npm:^9.2.1" + checksum: 10/ea2c34c4451f671acc6c3c0ad0d46e770e8b7d0741c1d78a30bc36b883f09a10e9a428b8b564ecd0171da95fdf78bb8ac0de261423a1b35de5d22852300a24ee languageName: node linkType: hard @@ -3098,21 +3104,22 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.2.0, @metamask/utils@npm:^11.4.0, @metamask/utils@npm:^11.4.2": - version: 11.4.2 - resolution: "@metamask/utils@npm:11.4.2" +"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0, @metamask/utils@npm:^11.4.0, @metamask/utils@npm:^11.4.2, @metamask/utils@npm:^11.8.0": + version: 11.8.1 + resolution: "@metamask/utils@npm:11.8.1" dependencies: "@ethereumjs/tx": "npm:^4.2.0" "@metamask/superstruct": "npm:^3.1.0" "@noble/hashes": "npm:^1.3.1" "@scure/base": "npm:^1.1.3" "@types/debug": "npm:^4.1.7" + "@types/lodash": "npm:^4.17.20" debug: "npm:^4.3.4" - lodash.memoize: "npm:^4.1.2" + lodash: "npm:^4.17.21" pony-cause: "npm:^2.1.10" semver: "npm:^7.5.4" uuid: "npm:^9.0.1" - checksum: 10/63415da3479f7022bc98e63d0f68a53ef31b2ef3d459eb3f81d62140f510ebba937c7034dd63cde6b2d5faf74250081903cc8009a174a9984d2fec1d0be04b8d + checksum: 10/efd3aab7f86b4a74d396cf1d5fc76e748ff78906802fdc15ec9ce2d1a9bd6b035e8e036ea93eb6b9ea33782c70adb9000772eb7a5e0164e8e9e2ebb077dca3ab languageName: node linkType: hard @@ -3133,7 +3140,7 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^9.0.0": +"@metamask/utils@npm:^9.0.0, @metamask/utils@npm:^9.1.0, @metamask/utils@npm:^9.2.1": version: 9.3.0 resolution: "@metamask/utils@npm:9.3.0" dependencies: @@ -3160,11 +3167,11 @@ __metadata: linkType: hard "@noble/curves@npm:^1.2.0, @noble/curves@npm:^1.8.1": - version: 1.9.2 - resolution: "@noble/curves@npm:1.9.2" + version: 1.9.7 + resolution: "@noble/curves@npm:1.9.7" dependencies: "@noble/hashes": "npm:1.8.0" - checksum: 10/f60f00ad86296054566b67be08fd659999bb64b692bfbf11dbe3be1f422ad4d826bf5ebb2015ce2e246538eab2b677707e0a46ffa8323a6fae7a9a30ec1fe318 + checksum: 10/3cfe2735ea94972988ca9e217e0ebb2044372a7160b2079bf885da789492a6291fc8bf76ca3d8bf8dee477847ee2d6fac267d1e6c4f555054059f5e8c4865d44 languageName: node linkType: hard @@ -3245,10 +3252,10 @@ __metadata: languageName: node linkType: hard -"@pkgr/core@npm:^0.2.4": - version: 0.2.7 - resolution: "@pkgr/core@npm:0.2.7" - checksum: 10/b16959878940f3d3016b79a4b2c23fd518aaec6b47295baa3154fbcf6574fee644c51023bb69069fa3ea9cdcaca40432818f54695f11acc0ae326cf56676e4d1 +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: 10/bb2fb86977d63f836f8f5b09015d74e6af6488f7a411dcd2bfdca79d76b5a681a9112f41c45bdf88a9069f049718efc6f3900d7f1de66a2ec966068308ae517f languageName: node linkType: hard @@ -3628,163 +3635,163 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-beta.35": - version: 1.0.0-beta.35 - resolution: "@rolldown/pluginutils@npm:1.0.0-beta.35" - checksum: 10/f6e28e437df02d1a184ce49726ffb53dfc24e3c3c67602c41352ddcbbeb51b292f7f973b62b0abd807af38b9913fa4d48f6892c698e1c6210642d0a33ec1a102 +"@rolldown/pluginutils@npm:1.0.0-beta.38": + version: 1.0.0-beta.38 + resolution: "@rolldown/pluginutils@npm:1.0.0-beta.38" + checksum: 10/c6876551c1633b59ce17d91fe26c4572f4a9cb62f8df96ff99a75f4b8606ded7fa354edd0d2ba36aac8e5c5b041175dae4d7d1d67fb3cdb7164fc2da8abb3a73 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.52.2" +"@rollup/rollup-android-arm-eabi@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.52.3" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-android-arm64@npm:4.52.2" +"@rollup/rollup-android-arm64@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-android-arm64@npm:4.52.3" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-darwin-arm64@npm:4.52.2" +"@rollup/rollup-darwin-arm64@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-darwin-arm64@npm:4.52.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-darwin-x64@npm:4.52.2" +"@rollup/rollup-darwin-x64@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-darwin-x64@npm:4.52.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.52.2" +"@rollup/rollup-freebsd-arm64@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.52.3" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-freebsd-x64@npm:4.52.2" +"@rollup/rollup-freebsd-x64@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-freebsd-x64@npm:4.52.3" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.52.2" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.52.3" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.52.2" +"@rollup/rollup-linux-arm-musleabihf@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.52.3" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.52.2" +"@rollup/rollup-linux-arm64-gnu@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.52.3" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.52.2" +"@rollup/rollup-linux-arm64-musl@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.52.3" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loong64-gnu@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.52.2" +"@rollup/rollup-linux-loong64-gnu@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.52.3" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-gnu@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.52.2" +"@rollup/rollup-linux-ppc64-gnu@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.52.3" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.52.2" +"@rollup/rollup-linux-riscv64-gnu@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.52.3" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.52.2" +"@rollup/rollup-linux-riscv64-musl@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.52.3" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.52.2" +"@rollup/rollup-linux-s390x-gnu@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.52.3" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.52.2" +"@rollup/rollup-linux-x64-gnu@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.52.3" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.52.2" +"@rollup/rollup-linux-x64-musl@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.52.3" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-openharmony-arm64@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-openharmony-arm64@npm:4.52.2" +"@rollup/rollup-openharmony-arm64@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.52.3" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.52.2" +"@rollup/rollup-win32-arm64-msvc@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.52.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.52.2" +"@rollup/rollup-win32-ia32-msvc@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.52.3" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-gnu@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-win32-x64-gnu@npm:4.52.2" +"@rollup/rollup-win32-x64-gnu@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.52.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.52.2": - version: 4.52.2 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.52.2" +"@rollup/rollup-win32-x64-msvc@npm:4.52.3": + version: 4.52.3 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.52.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -4015,11 +4022,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.7 - resolution: "@types/babel__traverse@npm:7.20.7" + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 10/d005b58e1c26bdafc1ce564f60db0ee938393c7fc586b1197bdb71a02f7f33f72bc10ae4165776b6cafc77c4b6f2e1a164dd20bc36518c471b1131b153b4baa6 + "@babel/types": "npm:^7.28.2" + checksum: 10/371c5e1b40399ef17570e630b2943617b84fafde2860a56f0ebc113d8edb1d0534ade0175af89eda1ae35160903c33057ed42457e165d4aa287fedab2c82abcf languageName: node linkType: hard @@ -4077,7 +4084,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.6": +"@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10/25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099 @@ -4094,12 +4101,13 @@ __metadata: linkType: hard "@types/hoist-non-react-statics@npm:*": - version: 3.3.6 - resolution: "@types/hoist-non-react-statics@npm:3.3.6" + version: 3.3.7 + resolution: "@types/hoist-non-react-statics@npm:3.3.7" dependencies: - "@types/react": "npm:*" hoist-non-react-statics: "npm:^3.3.0" - checksum: 10/f03e43bd081876c49584ffa0eb690d69991f258203efca44dcc30efdda49a50653ff06402917d1edc9cb7e2adebbe9e2d1d0e739bc99c1b5372103b1cc534e47 + peerDependencies: + "@types/react": "*" + checksum: 10/13f610572c073970b3f43cc446396974fed786fee6eac2d6fd4b0ca5c985f13e79d4a0de58af4e5b4c68470d808567c3a14108d98edb7d526d4d46c8ec851ed1 languageName: node linkType: hard @@ -4128,16 +4136,6 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:27.5.2": - version: 27.5.2 - resolution: "@types/jest@npm:27.5.2" - dependencies: - jest-matcher-utils: "npm:^27.0.0" - pretty-format: "npm:^27.0.0" - checksum: 10/8608696fbdea81bc9a600d1c5aeb290063357eaa55c0174e7db15087c4f483113b35f8b4c4ae364d2632cfed15a4dd674786254826b946c896de5612c8cb1a26 - languageName: node - linkType: hard - "@types/jest@npm:29.5.12": version: 29.5.12 resolution: "@types/jest@npm:29.5.12" @@ -4148,6 +4146,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^27.5.2": + version: 27.5.2 + resolution: "@types/jest@npm:27.5.2" + dependencies: + jest-matcher-utils: "npm:^27.0.0" + pretty-format: "npm:^27.0.0" + checksum: 10/8608696fbdea81bc9a600d1c5aeb290063357eaa55c0174e7db15087c4f483113b35f8b4c4ae364d2632cfed15a4dd674786254826b946c896de5612c8cb1a26 + languageName: node + linkType: hard + "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -4162,6 +4170,13 @@ __metadata: languageName: node linkType: hard +"@types/lodash@npm:^4.17.20": + version: 4.17.20 + resolution: "@types/lodash@npm:4.17.20" + checksum: 10/8cd8ad3bd78d2e06a93ae8d6c9907981d5673655fec7cb274a4d9a59549aab5bb5b3017361280773b8990ddfccf363e14d1b37c97af8a9fe363de677f9a61524 + languageName: node + linkType: hard + "@types/ms@npm:*": version: 2.1.0 resolution: "@types/ms@npm:2.1.0" @@ -4169,12 +4184,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 24.0.10 - resolution: "@types/node@npm:24.0.10" +"@types/node@npm:*, @types/node@npm:^24.3.0": + version: 24.6.2 + resolution: "@types/node@npm:24.6.2" dependencies: - undici-types: "npm:~7.8.0" - checksum: 10/ff8921c515d72fbc0a11ff282096e2d2e11ac04a2e9c7f765bcec5cb69cd367a88ab5dd556dc162ac98b9212957939b7ae80f12f3fc90db10c82135affd6d120 + undici-types: "npm:~7.13.0" + checksum: 10/8d1e64b37abdafd3da295394235ad5357509ac0b47e6991d36b1eecacd7ad830ada60ca71b7b3598b6c8b519361fb70aab691888c378ff25e69dba5690afcc22 languageName: node linkType: hard @@ -4187,25 +4202,16 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:22.16.0": - version: 22.16.0 - resolution: "@types/node@npm:22.16.0" +"@types/node@npm:^22.14.0": + version: 22.18.8 + resolution: "@types/node@npm:22.18.8" dependencies: undici-types: "npm:~6.21.0" - checksum: 10/26ebbbd24749caa4a692664290c53cdca63ec717ca250cd2babf3d3da796e9d3d0b6b9814d160693261b5e881796bf0f3c1887fef355b19e9a78fe27cd5e2ce2 + checksum: 10/dc8e883680993bebf45ac641af6648fd88a8d6ec0e375ff737221eef6c93b6a4d20311dfc070bb595095adbf9a2a411a9b3d9230a763eb744bb1d8ca831c331c languageName: node linkType: hard -"@types/node@npm:^24.3.0": - version: 24.5.2 - resolution: "@types/node@npm:24.5.2" - dependencies: - undici-types: "npm:~7.12.0" - checksum: 10/a497aea88a12131b03382d933690b71c131ee890232596b8d5b73f0a20c90874001800b2bfc267bd37df8285bef911729b4773426be7d2dc13ef4c760904e47d - languageName: node - linkType: hard - -"@types/path-browserify@npm:1.0.3": +"@types/path-browserify@npm:^1": version: 1.0.3 resolution: "@types/path-browserify@npm:1.0.3" checksum: 10/f6e77f2e0b86dd0279562da23df16bd089d95fc51bc2aace413fbfb18c2e8dcbf7c5763f951436328c865d0220829c5382fdf7c87d6252c1aa6372588260f6aa @@ -4235,7 +4241,7 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:18.3.7": +"@types/react-dom@npm:^18.0.6": version: 18.3.7 resolution: "@types/react-dom@npm:18.3.7" peerDependencies: @@ -4245,20 +4251,20 @@ __metadata: linkType: hard "@types/react-dom@npm:^19.1.7": - version: 19.1.9 - resolution: "@types/react-dom@npm:19.1.9" + version: 19.2.0 + resolution: "@types/react-dom@npm:19.2.0" peerDependencies: - "@types/react": ^19.0.0 - checksum: 10/207acb79f6c3c9704938138960e21429efdf2db2184f17c166e8ec3f3180dfe6445b282c5302f559a71b2d09ab2fafef7735f3d24fd01cda4e5c7bf0cea1d5b9 + "@types/react": ^19.2.0 + checksum: 10/e1e2e71214af67e1aa433a25b5f193d8bc98bfc16e108783c2c45c520623737af3c91ee929124c1f7adf2c3988bbd493cdc4ff64af69731245a3a758fde82291 languageName: node linkType: hard -"@types/react@npm:*": - version: 19.1.8 - resolution: "@types/react@npm:19.1.8" +"@types/react@npm:*, @types/react@npm:^19.1.10": + version: 19.2.0 + resolution: "@types/react@npm:19.2.0" dependencies: csstype: "npm:^3.0.2" - checksum: 10/a3e6fe0f60f22828ef887f30993aa147b71532d7b1219dd00d246277eb7a9ca01ec533096237fa21ca1bccb3653373b4e8e59e5ae59f9c793058384bbc1f4d5c + checksum: 10/c00a8552d54282caeb608d09664a250e6bd00b1f51e32bb73a0569d844ddbf58d25ffadffec85cc5df08e6c00e6c232a06a8efcfa5edd0bea2ce234519707b34 languageName: node linkType: hard @@ -4273,22 +4279,13 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.3.23": - version: 18.3.23 - resolution: "@types/react@npm:18.3.23" +"@types/react@npm:^18.0.15": + version: 18.3.25 + resolution: "@types/react@npm:18.3.25" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/4b965dffe34a1f8aac8e2d7e976f113373f38134f9e37239f7e75d7ac6b3c2e1333a8df21febf1fe7749640f8de5708f7668cdfc70bffebda1cc4d3346724fd5 - languageName: node - linkType: hard - -"@types/react@npm:^19.1.10": - version: 19.1.13 - resolution: "@types/react@npm:19.1.13" - dependencies: - csstype: "npm:^3.0.2" - checksum: 10/a4e12df335ded76e931cc2ba2a4c8a61872ed840081eca83612fbdadc4afbf0cbd0ae31fdedc7fae7f0e02c90dac98dda517dfa73bec653dd4b1de2755431a62 + checksum: 10/1b806cc90207558bd96384f2a74e8a457c6211bd71b22d74ed7efb745e4e1b4fe7aea59eb906b8cf96571f9e0ab4fdb89e00395a082a361cfd7a8baf50bcb9c1 languageName: node linkType: hard @@ -4300,9 +4297,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12": - version: 7.7.0 - resolution: "@types/semver@npm:7.7.0" - checksum: 10/ee4514c6c852b1c38f951239db02f9edeea39f5310fad9396a00b51efa2a2d96b3dfca1ae84c88181ea5b7157c57d32d7ef94edacee36fbf975546396b85ba5b + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 10/8f09e7e6ca3ded67d78ba7a8f7535c8d9cf8ced83c52e7f3ac3c281fe8c689c3fe475d199d94390dc04fc681d51f2358b430bb7b2e21c62de24f2bee2c719068 languageName: node linkType: hard @@ -4313,7 +4310,7 @@ __metadata: languageName: node linkType: hard -"@types/styled-components@npm:5.1.34": +"@types/styled-components@npm:^5.1.25": version: 5.1.34 resolution: "@types/styled-components@npm:5.1.34" dependencies: @@ -4340,30 +4337,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/type-utils": "npm:5.62.0" - "@typescript-eslint/utils": "npm:5.62.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - natural-compare-lite: "npm:^1.4.0" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/9cc8319c6fd8a21938f5b69476974a7e778c283a55ef9fad183c850995b9adcb0087d57cea7b2ac6b9449570eee983aad39491d14cdd2e52d6b4b0485e7b2482 - languageName: node - linkType: hard - "@typescript-eslint/eslint-plugin@npm:7.13.0": version: 7.13.0 resolution: "@typescript-eslint/eslint-plugin@npm:7.13.0" @@ -4387,41 +4360,48 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.44.1" +"@typescript-eslint/eslint-plugin@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.45.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.44.1" - "@typescript-eslint/type-utils": "npm:8.44.1" - "@typescript-eslint/utils": "npm:8.44.1" - "@typescript-eslint/visitor-keys": "npm:8.44.1" + "@typescript-eslint/scope-manager": "npm:8.45.0" + "@typescript-eslint/type-utils": "npm:8.45.0" + "@typescript-eslint/utils": "npm:8.45.0" + "@typescript-eslint/visitor-keys": "npm:8.45.0" graphemer: "npm:^1.4.0" ignore: "npm:^7.0.0" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^2.1.0" peerDependencies: - "@typescript-eslint/parser": ^8.44.1 + "@typescript-eslint/parser": ^8.45.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10/e0f69d1d24bbf63c3f2937f85b49994eae907656b01bc9d3563f096750add1085c4b15953b82b750b0da2b8444850558a8bf0d5bcfb8f0410dfd628f4245dc11 + checksum: 10/6d31dbd3354028b4a010af0ea2614a171b11616e6f20d36d74529b8888681ae8d15e1269122b8a8d5fae117bdd66dac4a38cfc99dc2a0ee33bd22c10075f63e4 languageName: node linkType: hard -"@typescript-eslint/parser@npm:5.62.0": +"@typescript-eslint/eslint-plugin@npm:^5.42.1": version: 5.62.0 - resolution: "@typescript-eslint/parser@npm:5.62.0" + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: + "@eslint-community/regexpp": "npm:^4.4.0" "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" + "@typescript-eslint/type-utils": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + natural-compare-lite: "npm:^1.4.0" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" peerDependencies: + "@typescript-eslint/parser": ^5.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/b6ca629d8f4e6283ff124501731cc886703eb4ce2c7d38b3e4110322ea21452b9d9392faf25be6bd72f54b89de7ffc72a40d9b159083ac54345a3d04b4fa5394 + checksum: 10/9cc8319c6fd8a21938f5b69476974a7e778c283a55ef9fad183c850995b9adcb0087d57cea7b2ac6b9449570eee983aad39491d14cdd2e52d6b4b0485e7b2482 languageName: node linkType: hard @@ -4443,32 +4423,49 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/parser@npm:8.44.1" +"@typescript-eslint/parser@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/parser@npm:8.45.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.44.1" - "@typescript-eslint/types": "npm:8.44.1" - "@typescript-eslint/typescript-estree": "npm:8.44.1" - "@typescript-eslint/visitor-keys": "npm:8.44.1" + "@typescript-eslint/scope-manager": "npm:8.45.0" + "@typescript-eslint/types": "npm:8.45.0" + "@typescript-eslint/typescript-estree": "npm:8.45.0" + "@typescript-eslint/visitor-keys": "npm:8.45.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10/ff5048c36d9fde27a03f64f3c4ad4739370fde1d744fa7bd1e08280601bd9adfe64c740789fd2adede54dd212a005c59bf1c06c68d05f57b7028332838ed28f8 + checksum: 10/4f8b7c73ae3b53c2adc4e981ac2ca90839a118947635481b45d29423d39b7b73cde2b185ad1084c9e19c3239444bf1be81f40b861176eec4540cb46848731991 languageName: node linkType: hard -"@typescript-eslint/project-service@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/project-service@npm:8.44.1" +"@typescript-eslint/parser@npm:^5.42.1": + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.44.1" - "@typescript-eslint/types": "npm:^8.44.1" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/b6ca629d8f4e6283ff124501731cc886703eb4ce2c7d38b3e4110322ea21452b9d9392faf25be6bd72f54b89de7ffc72a40d9b159083ac54345a3d04b4fa5394 + languageName: node + linkType: hard + +"@typescript-eslint/project-service@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/project-service@npm:8.45.0" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.45.0" + "@typescript-eslint/types": "npm:^8.45.0" debug: "npm:^4.3.4" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10/4b74d9d1c113b2637b6d65c790bfd2fa15ab1061fe77e68519c3b1939f4b0ee9e15d621ffc946ae2ef457289e830ddea879553868d5c7ff1af4904d7842792e0 + checksum: 10/919c8260dae79eaec79de84a5ae66fbb09c2ab7aca8c3b7785cb011582a2864c8091e64c84013b05bce812e522fbc4a5ae1c68f86404e078fc84da0fe80247ce languageName: node linkType: hard @@ -4492,22 +4489,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/scope-manager@npm:8.44.1" +"@typescript-eslint/scope-manager@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/scope-manager@npm:8.45.0" dependencies: - "@typescript-eslint/types": "npm:8.44.1" - "@typescript-eslint/visitor-keys": "npm:8.44.1" - checksum: 10/f731becce1f79b3add939417e31c7ae38c9150d73de5dec4141376cc64e1bb69f8d6b9f2072f8f442995a1e30eab57fd73c1a4b87220e19abb0f210e2c123096 + "@typescript-eslint/types": "npm:8.45.0" + "@typescript-eslint/visitor-keys": "npm:8.45.0" + checksum: 10/e45d63a0109eca00f6b431d87e73eacfa03b1795905f123e9144bcacb5abb83888167d1849317c6f90ba1f3553196b2eab13e5e7cdd1050d7a84eaadb65ba801 languageName: node linkType: hard -"@typescript-eslint/tsconfig-utils@npm:8.44.1, @typescript-eslint/tsconfig-utils@npm:^8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.44.1" +"@typescript-eslint/tsconfig-utils@npm:8.45.0, @typescript-eslint/tsconfig-utils@npm:^8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.45.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10/942d4bb9ec3d0f1f6c7fe0dc0fef2ae83a12b43ff3537fbd74007d0c9b80f166db2e5fa2f422f0b10ade348e330204dc70fc50e235ee66dc13ba488ac1490778 + checksum: 10/91696bbc34758749d3647236986bf418bacdc0de0e27c2d39cd7c2408c404c35ed18c47c2a55aea0bb9525cc7eb656586359c4e651144603f3438ce93fe80081 languageName: node linkType: hard @@ -4545,19 +4542,19 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/type-utils@npm:8.44.1" +"@typescript-eslint/type-utils@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/type-utils@npm:8.45.0" dependencies: - "@typescript-eslint/types": "npm:8.44.1" - "@typescript-eslint/typescript-estree": "npm:8.44.1" - "@typescript-eslint/utils": "npm:8.44.1" + "@typescript-eslint/types": "npm:8.45.0" + "@typescript-eslint/typescript-estree": "npm:8.45.0" + "@typescript-eslint/utils": "npm:8.45.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^2.1.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10/696747b2a048c281d8cfe74b3f61b7af2e7fa371e9afa58de6d6b49ad7cfa2577d52ddd66fe8b243d2d039b489b6db07bf18a746b14004456c8405842276aa92 + checksum: 10/81017b3f4780a65a4e4268ab208f1cb8891c1ced9ade23d8eb4575b18aeb99fe59a0d0ddbb4eea9c086567a1b4515d3466e850d4c81ec0d2d88658c43877a6cf languageName: node linkType: hard @@ -4575,10 +4572,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.44.1, @typescript-eslint/types@npm:^8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/types@npm:8.44.1" - checksum: 10/acebff929b2c64254c430fff54d8d135c9f47bcc20062fd3e52f64952b0ef973db9582812025f5314940889ae4c4a8798726a477b94fbda31881109687567528 +"@typescript-eslint/types@npm:8.45.0, @typescript-eslint/types@npm:^8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/types@npm:8.45.0" + checksum: 10/889ded2b9bf376c876611b2a37f89051fdc8ec501314a4b97832caefa4305bffc4b752548941ce2e7f9659a81336d096d439d4c2ed236c99fefdf60b715593dd languageName: node linkType: hard @@ -4619,14 +4616,14 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.44.1" +"@typescript-eslint/typescript-estree@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.45.0" dependencies: - "@typescript-eslint/project-service": "npm:8.44.1" - "@typescript-eslint/tsconfig-utils": "npm:8.44.1" - "@typescript-eslint/types": "npm:8.44.1" - "@typescript-eslint/visitor-keys": "npm:8.44.1" + "@typescript-eslint/project-service": "npm:8.45.0" + "@typescript-eslint/tsconfig-utils": "npm:8.45.0" + "@typescript-eslint/types": "npm:8.45.0" + "@typescript-eslint/visitor-keys": "npm:8.45.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -4635,7 +4632,7 @@ __metadata: ts-api-utils: "npm:^2.1.0" peerDependencies: typescript: ">=4.8.4 <6.0.0" - checksum: 10/b7b4d177e9339c978a090f1ec23c3f58316845b1cfc4f80a59f481d748b19078ab2cf4fe2d3aa063ad3dc556ea678289e2a9f61e12d7beaeb2bb681599b7481b + checksum: 10/2fb4e63ad6128afbada8eabaabfe7d5a8f1a1f387bb13d7d3209103493ba974b518bf47b17e9a853beba10ec81efd5582ebf628c2eb77a924cf67d4d85466e5e languageName: node linkType: hard @@ -4671,18 +4668,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/utils@npm:8.44.1" +"@typescript-eslint/utils@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/utils@npm:8.45.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.44.1" - "@typescript-eslint/types": "npm:8.44.1" - "@typescript-eslint/typescript-estree": "npm:8.44.1" + "@typescript-eslint/scope-manager": "npm:8.45.0" + "@typescript-eslint/types": "npm:8.45.0" + "@typescript-eslint/typescript-estree": "npm:8.45.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10/d7757d400a14bd69272da5e32dc61893ec958a9776b2436e2980d7e638164c88edb4b56c5faff6cf8ea61b1fd8a3f6c78ad4f7fc5c4e7d217d960e08039f7c40 + checksum: 10/9e675a0da4434bd434901f9ba3e1e91d4d7ad542d7fcf8c23534a67f2f9039a569da20929e67a6562e3a263be226ad424cd0c1ac80f7828f4285f7f34e361926 languageName: node linkType: hard @@ -4706,13 +4703,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.44.1": - version: 8.44.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.44.1" +"@typescript-eslint/visitor-keys@npm:8.45.0": + version: 8.45.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.45.0" dependencies: - "@typescript-eslint/types": "npm:8.44.1" + "@typescript-eslint/types": "npm:8.45.0" eslint-visitor-keys: "npm:^4.2.1" - checksum: 10/040f57906265d9ba5ec2230e728eea87bf6af9e0d345017de9e5b05211469457d838435f8b776354b403dad7b2c4527b68863c4ab6750f2668731dd2a3b8f9e8 + checksum: 10/8ae7e19c69c1f67fa8f952c18a09ad42a8cba492545d6e1dca6750e760893773f69ec6b1a96d0997e833c82aecc5ff7fb9546c5abd6c4427d91206670cf8ff37 languageName: node linkType: hard @@ -4724,18 +4721,18 @@ __metadata: linkType: hard "@vitejs/plugin-react@npm:^5.0.0": - version: 5.0.3 - resolution: "@vitejs/plugin-react@npm:5.0.3" + version: 5.0.4 + resolution: "@vitejs/plugin-react@npm:5.0.4" dependencies: "@babel/core": "npm:^7.28.4" "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" - "@rolldown/pluginutils": "npm:1.0.0-beta.35" + "@rolldown/pluginutils": "npm:1.0.0-beta.38" "@types/babel__core": "npm:^7.20.5" react-refresh: "npm:^0.17.0" peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - checksum: 10/152e159f1121e8c403eba6d77a16fe67e316e432826ffbb81a72753f093597cb3eb65d9e46049fddac9099701974bce817d6908c5228a5f9c32c54f0baf13c66 + checksum: 10/8985e18a629440b3f9622a032129d25b67a9e81ccfeff03b485a6ba6634b5251bc5af22eb9a8954b0307f6e460bcd3cfea0c68031ba823f6fb56be9636c7df6b languageName: node linkType: hard @@ -4949,6 +4946,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-phases@npm:^1.0.3": + version: 1.0.4 + resolution: "acorn-import-phases@npm:1.0.4" + peerDependencies: + acorn: ^8.14.0 + checksum: 10/471050ac7d9b61909c837b426de9eeef2958997f6277ad7dea88d5894fd9b3245d8ed4a225c2ca44f814dbb20688009db7a80e525e8196fc9e98c5285b66161d + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -4994,7 +5000,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.15.0, acorn@npm:^8.9.0": +"acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.9.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -5004,9 +5010,9 @@ __metadata: linkType: hard "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.3 - resolution: "agent-base@npm:7.1.3" - checksum: 10/3db6d8d4651f2aa1a9e4af35b96ab11a7607af57a24f3bc721a387eaa3b5f674e901f0a648b0caefd48f3fd117c7761b79a3b55854e2aebaa96c3f32cf76af84 + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10/79bef167247789f955aaba113bae74bf64aa1e1acca4b1d6bb444bdf91d82c3e07e9451ef6a6e2e35e8f71a6f97ce33e3d855a5328eb9fad1bc3cc4cfd031ed8 languageName: node linkType: hard @@ -5085,9 +5091,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 10/495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10/9b17ce2c6daecc75bcd5966b9ad672c23b184dc3ed9bf3c98a0702f0d2f736c15c10d461913568f2cf527a5e64291c7473358885dd493305c84a1cfed66ba94f languageName: node linkType: hard @@ -5108,9 +5114,9 @@ __metadata: linkType: hard "ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10/70fdf883b704d17a5dfc9cde206e698c16bcd74e7f196ab821511651aee4f9f76c9514bdfa6ca3a27b5e49138b89cb222a28caf3afe4567570139577f991df32 + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: 10/c49dad7639f3e48859bd51824c93b9eb0db628afc243c51c3dd2410c4a15ede1a83881c6c7341aa2b159c4f90c11befb38f2ba848c07c66c9f9de4bcd7cb9f30 languageName: node linkType: hard @@ -5248,7 +5254,17 @@ __metadata: languageName: node linkType: hard -"assert@npm:2.1.0, assert@npm:^2.0.0": +"assert@npm:^1.4.0": + version: 1.5.1 + resolution: "assert@npm:1.5.1" + dependencies: + object.assign: "npm:^4.1.4" + util: "npm:^0.10.4" + checksum: 10/207d0eceb6c64ef458f1511c8ce441f83111c46a6ba290c1701eebf4273a8a20bdcb4d0846b5a98d9c70536f5f389e3bc9be75a98a27c8c93b5d5686e6bf3aa3 + languageName: node + linkType: hard + +"assert@npm:^2.0.0, assert@npm:^2.1.0": version: 2.1.0 resolution: "assert@npm:2.1.0" dependencies: @@ -5261,16 +5277,6 @@ __metadata: languageName: node linkType: hard -"assert@npm:^1.4.0": - version: 1.5.1 - resolution: "assert@npm:1.5.1" - dependencies: - object.assign: "npm:^4.1.4" - util: "npm:^0.10.4" - checksum: 10/207d0eceb6c64ef458f1511c8ce441f83111c46a6ba290c1701eebf4273a8a20bdcb4d0846b5a98d9c70536f5f389e3bc9be75a98a27c8c93b5d5686e6bf3aa3 - languageName: node - linkType: hard - "async-function@npm:^1.0.0": version: 1.0.0 resolution: "async-function@npm:1.0.0" @@ -5278,6 +5284,13 @@ __metadata: languageName: node linkType: hard +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10/3d49e7acbeee9e84537f4cb0e0f91893df8eba976759875ae8ee9e3d3c82f6ecdebdb347c2fad9926b92596d93cdfc78ecc988bcdf407e40433e8e8e6fe5d78e + languageName: node + linkType: hard + "async-mutex@npm:^0.5.0": version: 0.5.0 resolution: "async-mutex@npm:0.5.0" @@ -5287,13 +5300,6 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3": - version: 3.2.6 - resolution: "async@npm:3.2.6" - checksum: 10/cb6e0561a3c01c4b56a799cc8bab6ea5fef45f069ab32500b6e19508db270ef2dffa55e5aed5865c5526e9907b1f8be61b27530823b411ffafb5e1538c86c368 - languageName: node - linkType: hard - "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -5328,6 +5334,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:1.7.2": + version: 1.7.2 + resolution: "axios@npm:1.7.2" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10/6ae80dda9736bb4762ce717f1a26ff997d94672d3a5799ad9941c24d4fb019c1dff45be8272f08d1975d7950bac281f3ba24aff5ecd49ef5a04d872ec428782f + languageName: node + linkType: hard + "axios@npm:1.7.7": version: 1.7.7 resolution: "axios@npm:1.7.7" @@ -5340,9 +5357,14 @@ __metadata: linkType: hard "b4a@npm:^1.6.4": - version: 1.6.7 - resolution: "b4a@npm:1.6.7" - checksum: 10/1ac056e3bce378d4d3e570e57319360a9d3125ab6916a1921b95bea33d9ee646698ebc75467561fd6fcc80ff697612124c89bb9b95e80db94c6dc23fcb977705 + version: 1.7.3 + resolution: "b4a@npm:1.7.3" + peerDependencies: + react-native-b4a: "*" + peerDependenciesMeta: + react-native-b4a: + optional: true + checksum: 10/048ddd0eeec6a75e6f8dee07d52354e759032f0ef678b556e05bf5a137d7a4102002cadb953b3fb37a635995a1013875d715d115dbafaf12bcad6528d2166054 languageName: node linkType: hard @@ -5425,8 +5447,8 @@ __metadata: linkType: hard "babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" dependencies: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-bigint": "npm:^7.8.3" @@ -5444,8 +5466,8 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/46331111ae72b7121172fd9e6a4a7830f651ad44bf26dbbf77b3c8a60a18009411a3eacb5e72274004290c110371230272109957d5224d155436b4794ead2f1b + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 10/3608fa671cfa46364ea6ec704b8fcdd7514b7b70e6ec09b1199e13ae73ed346c51d5ce2cb6d4d5b295f6a3f2cad1fdeec2308aa9e037002dd7c929194cc838ea languageName: node linkType: hard @@ -5477,10 +5499,10 @@ __metadata: languageName: node linkType: hard -"bare-events@npm:^2.2.0": - version: 2.5.4 - resolution: "bare-events@npm:2.5.4" - checksum: 10/135ef380b13f554ca2c6905bdbcfac8edae08fce85b7f953fa01f09a9f5b0da6a25e414111659bc9a6118216f0dd1f732016acd11ce91517f2afb26ebeb4b721 +"bare-events@npm:^2.7.0": + version: 2.7.0 + resolution: "bare-events@npm:2.7.0" + checksum: 10/5287b470f8b9c9c1522da922e615e0238abae10323c0b4bb2c43e4f24d486e15fb4562d7b75d0c882606af6effb483c3117bb6569c911417a4fb7fd94d59d251 languageName: node linkType: hard @@ -5500,12 +5522,12 @@ __metadata: languageName: node linkType: hard -"baseline-browser-mapping@npm:^2.8.3": - version: 2.8.7 - resolution: "baseline-browser-mapping@npm:2.8.7" +"baseline-browser-mapping@npm:^2.8.9": + version: 2.8.10 + resolution: "baseline-browser-mapping@npm:2.8.10" bin: baseline-browser-mapping: dist/cli.js - checksum: 10/b73855387c89c2ee8e7f7947abac4e3c289e7cf6d831ed58e9d90c098e32a40493eb3b9b0f029145a97f2a3c22f53736900e9a20e1aaed908bbfb2301f373df9 + checksum: 10/969bdc7a54b94dd25e544268feb54380cb34dd7a61112d27bb12f8a79099d9c6cb5aa862d784d6e096da400f7a0099249ef64e2b4b3b110ee30870802e1453e9 languageName: node linkType: hard @@ -5524,9 +5546,9 @@ __metadata: linkType: hard "bignumber.js@npm:^9.1.2": - version: 9.3.0 - resolution: "bignumber.js@npm:9.3.0" - checksum: 10/60b79efcf7b56b925fca8eebd10d1f4b70aa2bf6eade7f5af0266f0092226dd2abcd9a3ee315ecb39459750d5a630ce3980b707e5d7bea32c97ffd378e8cc159 + version: 9.3.1 + resolution: "bignumber.js@npm:9.3.1" + checksum: 10/1be0372bf0d6d29d0a49b9e6a9cefbd54dad9918232ad21fcd4ec39030260773abf0c76af960c6b3b98d3115a3a71e61c6a111812d1395040a039cfa178e0245 languageName: node linkType: hard @@ -5626,7 +5648,7 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.2.1": +"bn.js@npm:^5.2.1, bn.js@npm:^5.2.2": version: 5.2.2 resolution: "bn.js@npm:5.2.2" checksum: 10/51ebb2df83b33e5d8581165206e260d5e9c873752954616e5bf3758952b84d7399a9c6d00852815a0aeefb1150a7f34451b62d4287342d457fa432eee869e83e @@ -5747,7 +5769,7 @@ __metadata: languageName: node linkType: hard -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.1": version: 4.1.1 resolution: "browserify-rsa@npm:4.1.1" dependencies: @@ -5759,20 +5781,19 @@ __metadata: linkType: hard "browserify-sign@npm:^4.2.3": - version: 4.2.3 - resolution: "browserify-sign@npm:4.2.3" + version: 4.2.5 + resolution: "browserify-sign@npm:4.2.5" dependencies: - bn.js: "npm:^5.2.1" - browserify-rsa: "npm:^4.1.0" + bn.js: "npm:^5.2.2" + browserify-rsa: "npm:^4.1.1" create-hash: "npm:^1.2.0" create-hmac: "npm:^1.1.7" - elliptic: "npm:^6.5.5" - hash-base: "npm:~3.0" + elliptic: "npm:^6.6.1" inherits: "npm:^2.0.4" - parse-asn1: "npm:^5.1.7" + parse-asn1: "npm:^5.1.9" readable-stream: "npm:^2.3.8" safe-buffer: "npm:^5.2.1" - checksum: 10/403a8061d229ae31266670345b4a7c00051266761d2c9bbeb68b1a9bcb05f68143b16110cf23a171a5d6716396a1f41296282b3e73eeec0a1871c77f0ff4ee6b + checksum: 10/ccfe54ab61b8e01e84c507b60912f9ae8701f4e53accc3d85c3773db13f14c51f17b684167735d28c59aaf5523ee59c66cc831ddc178bc7f598257e590ca1a35 languageName: node linkType: hard @@ -5843,32 +5864,18 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.24.0, browserslist@npm:^4.25.0": - version: 4.25.1 - resolution: "browserslist@npm:4.25.1" +"browserslist@npm:^4.24.0, browserslist@npm:^4.24.4, browserslist@npm:^4.24.5, browserslist@npm:^4.25.3": + version: 4.26.3 + resolution: "browserslist@npm:4.26.3" dependencies: - caniuse-lite: "npm:^1.0.30001726" - electron-to-chromium: "npm:^1.5.173" - node-releases: "npm:^2.0.19" - update-browserslist-db: "npm:^1.1.3" - bin: - browserslist: cli.js - checksum: 10/bfb5511b425886279bbe2ea44d10e340c8aea85866c9d45083c13491d049b6362e254018c0afbf56d41ceeb64f994957ea8ae98dbba74ef1e54ef901c8732987 - languageName: node - linkType: hard - -"browserslist@npm:^4.24.4": - version: 4.26.2 - resolution: "browserslist@npm:4.26.2" - dependencies: - baseline-browser-mapping: "npm:^2.8.3" - caniuse-lite: "npm:^1.0.30001741" - electron-to-chromium: "npm:^1.5.218" + baseline-browser-mapping: "npm:^2.8.9" + caniuse-lite: "npm:^1.0.30001746" + electron-to-chromium: "npm:^1.5.227" node-releases: "npm:^2.0.21" update-browserslist-db: "npm:^1.1.3" bin: browserslist: cli.js - checksum: 10/7f732f1a9c18c510aa146270d704b7b1acab52c9922147d453eecd70c926f21d97c7ac10f5303668d444fa60bd3b8778a63a797be249b0d348af4c3a644fa530 + checksum: 10/49add06fd753a2514d84c75a7de8d9fb3d70be675e53b72981d87f0c0ff40d8a8cd0bd92f77400381704be0bf1c9c5c65aef95d03843d69475ff55188aa12124 languageName: node linkType: hard @@ -5930,7 +5937,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.5.0, buffer@npm:^5.7.1": +"buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -6067,21 +6074,14 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001702, caniuse-lite@npm:^1.0.30001741": - version: 1.0.30001745 - resolution: "caniuse-lite@npm:1.0.30001745" - checksum: 10/1b83fcce50ba1548046610683b12810357156baf7878edc538652290ea2eaff3fbca81f33985180040a06f4964db4233117e39efc4d0a11b21ebab57b78fcfc2 +"caniuse-lite@npm:^1.0.30001702, caniuse-lite@npm:^1.0.30001746": + version: 1.0.30001746 + resolution: "caniuse-lite@npm:1.0.30001746" + checksum: 10/bb9238b08a947baf318c385d43f7ae771c80b265d21821333efc894306e6da60e47656015a1a23e5998133cad9ad022942ec0c2ba04e89e936f4a8343875b84c languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001726": - version: 1.0.30001726 - resolution: "caniuse-lite@npm:1.0.30001726" - checksum: 10/04d4bd6be8e426199aace9b4d26402bbb043358b590136417b8a1b3888c43301256bff007b30276c37c3d56e3e97aa8f547d80ffb9ac3644937b2ba4a3f9b156 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -6148,12 +6148,13 @@ __metadata: linkType: hard "cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.6 - resolution: "cipher-base@npm:1.0.6" + version: 1.0.7 + resolution: "cipher-base@npm:1.0.7" dependencies: inherits: "npm:^2.0.4" safe-buffer: "npm:^5.2.1" - checksum: 10/faf232deff2351448ea23d265eb8723e035ebbb454baca45fb60c1bd71056ede8b153bef1b221e067f13e6b9288ebb83bb6ae2d5dd4cec285411f9fc22ec1f5b + to-buffer: "npm:^1.2.2" + checksum: 10/9501d2241b7968aaae74fc3db1d6a69a804e0b14117a8fd5d811edf351fcd39a1807bfd98e090a799cfe98b183fbf2e01ebb57f1239080850db07b68dcd9ba02 languageName: node linkType: hard @@ -6408,11 +6409,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.43.0": - version: 3.43.0 - resolution: "core-js-compat@npm:3.43.0" + version: 3.45.1 + resolution: "core-js-compat@npm:3.45.1" dependencies: - browserslist: "npm:^4.25.0" - checksum: 10/fa57a75e0e0798889f0a8d4dbc66bd276c799f265442eb0f6baa4113efaf0c4213e457c70f8f0f9d78f98b22c5c16dfd7e68d88e6f2484ae2120888a4bd08b68 + browserslist: "npm:^4.25.3" + checksum: 10/a6eb757ccf5091ee4cf7756c4f2ddefb506b049d89526e8150221e6d9150dc2685c34cbed42f4b15a27a92dd300fd56f75c9502cd57cfe928c1bd7a8ed961a42 languageName: node linkType: hard @@ -6472,18 +6473,6 @@ __metadata: languageName: node linkType: hard -"create-hash@npm:~1.1.3": - version: 1.1.3 - resolution: "create-hash@npm:1.1.3" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - ripemd160: "npm:^2.0.0" - sha.js: "npm:^2.4.0" - checksum: 10/b9f675719321dd3a3c3540bb46afcbdaf7182366ce93da9265318290e928be881e5edeff8c48a5ee9263c342e5e3f705fad5eb48f2e2cddc5fed1eb54077e076 - languageName: node - linkType: hard - "create-hmac@npm:^1.1.7": version: 1.1.7 resolution: "create-hmac@npm:1.1.7" @@ -6515,13 +6504,6 @@ __metadata: languageName: node linkType: hard -"create-require@npm:^1.1.1": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10/a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff - languageName: node - linkType: hard - "cron-parser@npm:^4.5.0": version: 4.9.0 resolution: "cron-parser@npm:4.9.0" @@ -6542,7 +6524,7 @@ __metadata: languageName: node linkType: hard -"crypto-browserify@npm:3.12.1, crypto-browserify@npm:^3.0.0, crypto-browserify@npm:^3.12.0, crypto-browserify@npm:^3.12.1": +"crypto-browserify@npm:^3.0.0, crypto-browserify@npm:^3.12.0, crypto-browserify@npm:^3.12.1": version: 3.12.1 resolution: "crypto-browserify@npm:3.12.1" dependencies: @@ -6633,14 +6615,14 @@ __metadata: linkType: hard "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0, debug@npm:^4.4.1": - version: 4.4.1 - resolution: "debug@npm:4.4.1" + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10/8e2709b2144f03c7950f8804d01ccb3786373df01e406a0f66928e47001cf2d336cbed9ee137261d4f90d68d8679468c755e3548ed83ddacdc82b194d2468afe + checksum: 10/9ada3434ea2993800bd9a1e320bd4aa7af69659fb51cca685d390949434bc0a8873c21ed7c9b852af6f2455a55c6d050aa3937d52b3c69f796dab666f762acad languageName: node linkType: hard @@ -6663,14 +6645,14 @@ __metadata: linkType: hard "dedent@npm:^1.0.0": - version: 1.6.0 - resolution: "dedent@npm:1.6.0" + version: 1.7.0 + resolution: "dedent@npm:1.7.0" peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: 10/f100cb11001309f2185c4334c6f29e5323c1e73b7b75e3b1893bc71ef53cd13fb80534efc8fa7163a891ede633e310a9c600ba38c363cc9d14a72f238fe47078 + checksum: 10/c902f3e7e828923bd642c12c1d8996616ff5588f8279a2951790bd7c7e479fa4dd7f016b55ce2c9ea1aa2895fc503e7d6c0cde6ebc95ca683ac0230f7c911fd7 languageName: node linkType: hard @@ -6779,9 +6761,9 @@ __metadata: linkType: hard "detect-indent@npm:^7.0.1": - version: 7.0.1 - resolution: "detect-indent@npm:7.0.1" - checksum: 10/cbf3f0b1c3c881934ca94428e1179b26ab2a587e0d719031d37a67fb506d49d067de54ff057cb1e772e75975fed5155c01cd4518306fee60988b1486e3fc7768 + version: 7.0.2 + resolution: "detect-indent@npm:7.0.2" + checksum: 10/ef215d1b55a14f677ce03e840973b25362b6f8cd3f566bc82831fa1abb2be6a95423729bc573dc2334b1371ad7be18d9ec67e1a9611b71a04cb6d63f0d8e54cc languageName: node linkType: hard @@ -6892,13 +6874,6 @@ __metadata: languageName: node linkType: hard -"domain-browser@npm:4.22.0": - version: 4.22.0 - resolution: "domain-browser@npm:4.22.0" - checksum: 10/3ffbaf0cae8da717698d472ca85ab52f96c538fe1fe85e5eb3351d4e7af52423ce096b8a0c51bb318e1c9ccf9c2e94b3b0f68e5923ad0aa0c623a32b641ed11c - languageName: node - linkType: hard - "domain-browser@npm:^1.2.0": version: 1.2.0 resolution: "domain-browser@npm:1.2.0" @@ -6964,32 +6939,14 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.10": - version: 3.1.10 - resolution: "ejs@npm:3.1.10" - dependencies: - jake: "npm:^10.8.5" - bin: - ejs: bin/cli.js - checksum: 10/a9cb7d7cd13b7b1cd0be5c4788e44dd10d92f7285d2f65b942f33e127230c054f99a42db4d99f766d8dbc6c57e94799593ee66a14efd7c8dd70c4812bf6aa384 +"electron-to-chromium@npm:^1.5.227": + version: 1.5.229 + resolution: "electron-to-chromium@npm:1.5.229" + checksum: 10/871665ffee2fcf48fd5027652a681909f7657895daa0ebb1c0c6aff829457dffa0c16aaca98bd892b77a213d17da896deeb6c919492e308c9eb6d0e46b3c1ea7 languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.173": - version: 1.5.179 - resolution: "electron-to-chromium@npm:1.5.179" - checksum: 10/4d0463947288c66e0a6f733aae001508de798692eb7f92fc05c16a4b86771a79f3c6c8ec5e76fbdf219276cc4ae72ef1e1ccb609c8121bac26a5f7c260d03191 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.218": - version: 1.5.224 - resolution: "electron-to-chromium@npm:1.5.224" - checksum: 10/49922712f709e191e7f57af980907e3bd5392a216f51b53818de9f1aea80abc115f1bf3e0e3e4589ab9a05b7efca4c5b65556e2cb41081b49bfeb68314119c6f - languageName: node - linkType: hard - -"elliptic@npm:^6.5.3, elliptic@npm:^6.5.5": +"elliptic@npm:^6.5.3, elliptic@npm:^6.6.1": version: 6.6.1 resolution: "elliptic@npm:6.6.1" dependencies: @@ -7041,13 +6998,13 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.1": - version: 5.18.2 - resolution: "enhanced-resolve@npm:5.18.2" +"enhanced-resolve@npm:^5.17.3": + version: 5.18.3 + resolution: "enhanced-resolve@npm:5.18.3" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 10/d1b517c908b69d1afbf87b476bbe7dd8d1daf11070127b9ec4f8553f0c6020d30f79103c938776645d569e954e4e04c326f408d2ea3820ade71e72798fb7d36f + checksum: 10/a4d0a1eacba3079f617b68c8f7e17583c3cbc572055c2edca41c0fa0230a49f6e9b2c6ffd4128cc5f84e15ea6cc313ae2b01e1057fcd252fabef70220a5d9f6a languageName: node linkType: hard @@ -7066,11 +7023,11 @@ __metadata: linkType: hard "error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" + version: 1.3.4 + resolution: "error-ex@npm:1.3.4" dependencies: is-arrayish: "npm:^0.2.1" - checksum: 10/d547740aa29c34e753fb6fed2c5de81802438529c12b3673bd37b6bb1fe49b9b7abdc3c11e6062fe625d8a296b3cf769a80f878865e25e685f787763eede3ffb + checksum: 10/ae3939fd4a55b1404e877df2080c6b59acc516d5b7f08a181040f78f38b4e2399633bfed2d9a21b91c803713fff7295ac70bebd8f3657ef352a95c2cd9aa2e4b languageName: node linkType: hard @@ -7315,14 +7272,14 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:8.10.0": - version: 8.10.0 - resolution: "eslint-config-prettier@npm:8.10.0" +"eslint-config-prettier@npm:^8.5.0": + version: 8.10.2 + resolution: "eslint-config-prettier@npm:8.10.2" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 10/0a51ab1417cbf80fabcf7a406960a142663539c8140fdb0a187b78f3d708b9d137a62a4bc4e689150e290b667750ddabd1740a516623b0cb4adb6cc1962cfe2c + checksum: 10/9818f26eebf32c5698bcc68d9b05e985ccaa6862488a32305681f9f025248c4b9192e587969594b3e79a814f965f808f513f63921dbb14639501fa61d6e6560d languageName: node linkType: hard @@ -7361,7 +7318,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:2.26.0": +"eslint-plugin-import@npm:~2.26.0": version: 2.26.0 resolution: "eslint-plugin-import@npm:2.26.0" dependencies: @@ -7384,7 +7341,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:27.9.0": +"eslint-plugin-jest@npm:^27.1.5": version: 27.9.0 resolution: "eslint-plugin-jest@npm:27.9.0" dependencies: @@ -7402,7 +7359,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:41.1.2": +"eslint-plugin-jsdoc@npm:^41.1.2": version: 41.1.2 resolution: "eslint-plugin-jsdoc@npm:41.1.2" dependencies: @@ -7420,7 +7377,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-n@npm:15.7.0": +"eslint-plugin-n@npm:^15.7.0": version: 15.7.0 resolution: "eslint-plugin-n@npm:15.7.0" dependencies: @@ -7438,9 +7395,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" +"eslint-plugin-prettier@npm:^4.2.1": + version: 4.2.5 + resolution: "eslint-plugin-prettier@npm:4.2.5" dependencies: prettier-linter-helpers: "npm:^1.0.0" peerDependencies: @@ -7449,11 +7406,11 @@ __metadata: peerDependenciesMeta: eslint-config-prettier: optional: true - checksum: 10/d387f85dd1bfcb6bc6b794845fee6afb9ebb2375653de6bcde6e615892fb97f85121a7c012a4651b181fc09953bdf54c9bc70cab7ad297019d89ae87dd007e28 + checksum: 10/8e5838bff6c5753c370069a1b71cb0057929d467b7b5ba0efe066365de1e944a27d1d44cb0c2e8c3beb2c806c1b98e98fc320f96dd59f11741c4309856383868 languageName: node linkType: hard -"eslint-plugin-promise@npm:6.6.0": +"eslint-plugin-promise@npm:^6.1.1": version: 6.6.0 resolution: "eslint-plugin-promise@npm:6.6.0" peerDependencies: @@ -7472,11 +7429,11 @@ __metadata: linkType: hard "eslint-plugin-react-refresh@npm:^0.4.20": - version: 0.4.22 - resolution: "eslint-plugin-react-refresh@npm:0.4.22" + version: 0.4.23 + resolution: "eslint-plugin-react-refresh@npm:0.4.23" peerDependencies: eslint: ">=8.40" - checksum: 10/73e488bb0200a039c293efbe9707ff8e99de47f5bad4c7970a8b93e1900aa4435dc39a053d6603b4b592151bc6ad8047dbb3741b13e0b339d6432ff0f9b05be6 + checksum: 10/5a204bd5d45919ba45f832f1b3175892875961298f8f4fc88d29f3aa610457199fca0e785c60e336d1ccc49bc9520061906a8f4e36ff7ee1b8a0b7b37fd88d68 languageName: node linkType: hard @@ -7500,7 +7457,7 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.0.1, eslint-scope@npm:^8.4.0": +"eslint-scope@npm:^8.4.0": version: 8.4.0 resolution: "eslint-scope@npm:8.4.0" dependencies: @@ -7551,14 +7508,14 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.0.0, eslint-visitor-keys@npm:^4.2.1": +"eslint-visitor-keys@npm:^4.2.1": version: 4.2.1 resolution: "eslint-visitor-keys@npm:4.2.1" checksum: 10/3ee00fc6a7002d4b0ffd9dc99e13a6a7882c557329e6c25ab254220d71e5c9c4f89dca4695352949ea678eb1f3ba912a18ef8aac0a7fe094196fd92f441bfce2 languageName: node linkType: hard -"eslint@npm:8.57.1": +"eslint@npm:^8.45.0, eslint@npm:^8.56.0": version: 8.57.1 resolution: "eslint@npm:8.57.1" dependencies: @@ -7586,56 +7543,12 @@ __metadata: find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: 10/5504fa24879afdd9f9929b2fbfc2ee9b9441a3d464efd9790fbda5f05738858530182029f13323add68d19fec749d3ab4a70320ded091ca4432b1e9cc4ed104c - languageName: node - linkType: hard - -"eslint@npm:9.4.0": - version: 9.4.0 - resolution: "eslint@npm:9.4.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/config-array": "npm:^0.15.1" - "@eslint/eslintrc": "npm:^3.1.0" - "@eslint/js": "npm:9.4.0" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.3.0" - "@nodelib/fs.walk": "npm:^1.2.8" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.0.1" - eslint-visitor-keys: "npm:^4.0.0" - espree: "npm:^10.0.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^8.0.0" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" + graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" @@ -7646,7 +7559,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 10/e2eaae18eb79d543a1ca5420495ea9bf1278f9e25bfa6309ec4e4dae981cba4d731a9b857f5e2f8b5e467adaaf871a635a7eb143a749e7cdcdff4716821628d2 + checksum: 10/5504fa24879afdd9f9929b2fbfc2ee9b9441a3d464efd9790fbda5f05738858530182029f13323add68d19fec749d3ab4a70320ded091ca4432b1e9cc4ed104c languageName: node linkType: hard @@ -7788,7 +7701,7 @@ __metadata: languageName: node linkType: hard -"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2, ethereum-cryptography@npm:^2.2.1": +"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2": version: 2.2.1 resolution: "ethereum-cryptography@npm:2.2.1" dependencies: @@ -7807,6 +7720,15 @@ __metadata: languageName: node linkType: hard +"events-universal@npm:^1.0.0": + version: 1.0.1 + resolution: "events-universal@npm:1.0.1" + dependencies: + bare-events: "npm:^2.7.0" + checksum: 10/71b2e6079b4dc030c613ef73d99f1acb369dd3ddb6034f49fd98b3e2c6632cde9f61c15fb1351004339d7c79672252a4694ecc46a6124dc794b558be50a83867 + languageName: node + linkType: hard + "events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" @@ -7981,9 +7903,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.6 - resolution: "fast-uri@npm:3.0.6" - checksum: 10/43c87cd03926b072a241590e49eca0e2dfe1d347ddffd4b15307613b42b8eacce00a315cf3c7374736b5f343f27e27ec88726260eb03a758336d507d6fbaba0a + version: 3.1.0 + resolution: "fast-uri@npm:3.1.0" + checksum: 10/818b2c96dc913bcf8511d844c3d2420e2c70b325c0653633f51821e4e29013c2015387944435cd0ef5322c36c9beecc31e44f71b257aeb8e0b333c1d62bb17c2 languageName: node linkType: hard @@ -8023,18 +7945,6 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.4": - version: 6.4.6 - resolution: "fdir@npm:6.4.6" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10/c186ba387e7b75ccf874a098d9bc5fe0af0e9c52fc56f8eac8e80aa4edb65532684bf2bf769894ff90f53bf221d6136692052d31f07a9952807acae6cbe7ee50 - languageName: node - linkType: hard - "fdir@npm:^6.5.0": version: 6.5.0 resolution: "fdir@npm:6.5.0" @@ -8065,15 +7975,6 @@ __metadata: languageName: node linkType: hard -"filelist@npm:^1.0.4": - version: 1.0.4 - resolution: "filelist@npm:1.0.4" - dependencies: - minimatch: "npm:^5.0.1" - checksum: 10/4b436fa944b1508b95cffdfc8176ae6947b92825483639ef1b9a89b27d82f3f8aa22b21eed471993f92709b431670d4e015b39c087d435a61e1bb04564cf51de - languageName: node - linkType: hard - "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -8155,12 +8056,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.15.6": - version: 1.15.9 - resolution: "follow-redirects@npm:1.15.9" + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" peerDependenciesMeta: debug: optional: true - checksum: 10/e3ab42d1097e90d28b913903841e6779eb969b62a64706a3eb983e894a5db000fbd89296f45f08885a0e54cd558ef62e81be1165da9be25a6c44920da10f424c + checksum: 10/07372fd74b98c78cf4d417d68d41fdaa0be4dcacafffb9e67b1e3cf090bc4771515e65020651528faab238f10f9b9c0d9707d6c1574a6c0387c5de1042cde9ba languageName: node linkType: hard @@ -8207,15 +8108,15 @@ __metadata: linkType: hard "form-data@npm:^4.0.0": - version: 4.0.3 - resolution: "form-data@npm:4.0.3" + version: 4.0.4 + resolution: "form-data@npm:4.0.4" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" es-set-tostringtag: "npm:^2.1.0" hasown: "npm:^2.0.2" mime-types: "npm:^2.1.12" - checksum: 10/22f6e55e6f32a5797a500ed7ca5aa9d690c4de6e1b3308f25f0d83a27d08d91a265ab59a190db2305b15144f8f07df08e8117bad6a93fc93de1baa838bfcc0b5 + checksum: 10/a4b62e21932f48702bc468cc26fb276d186e6b07b557e3dd7cc455872bdbb82db7db066844a64ad3cf40eaf3a753c830538183570462d3649fdfd705601cbcfb languageName: node linkType: hard @@ -8261,9 +8162,9 @@ __metadata: linkType: hard "fs-monkey@npm:^1.0.4": - version: 1.0.6 - resolution: "fs-monkey@npm:1.0.6" - checksum: 10/a0502a23aa0b467f671cd5c7f989ff48611cce1f23deb8f6924862b49234ff37de6828f739a4f2c1acf8f20e80cb426bf6a9d135c401f3df1e7089b7de04c815 + version: 1.1.0 + resolution: "fs-monkey@npm:1.1.0" + checksum: 10/1c6da5d07f6c91e31fd9bcd68909666e18fa243c7af6697e9d2ded16d4ee87cc9c2b67889b19f98211006c228d1915e1beb0678b4080778fb52539ef3e4eab6c languageName: node linkType: hard @@ -8340,6 +8241,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10/eb7e7eb896c5433f3d40982b2ccacdb3dd990dd3499f14040e002b5d54572476513be8a2e6f9609f6e41ab29f2c4469307611ddbfc37ff4e46b765c326663805 + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -8362,20 +8270,23 @@ __metadata: linkType: hard "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": - version: 1.3.0 - resolution: "get-intrinsic@npm:1.3.0" + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" call-bind-apply-helpers: "npm:^1.0.2" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.1.1" function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" math-intrinsics: "npm:^1.1.0" - checksum: 10/6e9dd920ff054147b6f44cb98104330e87caafae051b6d37b13384a45ba15e71af33c3baeac7cb630a0aaa23142718dcf25b45cfdd86c184c5dcb4e56d953a10 + checksum: 10/bb579dda84caa4a3a41611bdd483dade7f00f246f2a7992eb143c5861155290df3fdb48a8406efa3dfb0b434e2c8fafa4eebd469e409d0439247f85fc3fa2cc1 languageName: node linkType: hard @@ -8400,7 +8311,7 @@ __metadata: languageName: node linkType: hard -"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": +"get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" dependencies: @@ -8567,6 +8478,24 @@ __metadata: languageName: node linkType: hard +"handlebars@npm:^4.7.8": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: "npm:^1.2.5" + neo-async: "npm:^2.6.2" + source-map: "npm:^0.6.1" + uglify-js: "npm:^3.1.4" + wordwrap: "npm:^1.0.0" + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 10/bd528f4dd150adf67f3f857118ef0fa43ff79a153b1d943fa0a770f2599e38b25a7a0dbac1a3611a4ec86970fd2325a81310fb788b5c892308c9f8743bd02e11 + languageName: node + linkType: hard + "has-bigints@npm:^1.0.2": version: 1.1.0 resolution: "has-bigints@npm:1.1.0" @@ -8622,27 +8551,19 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^2.0.0": - version: 2.0.2 - resolution: "hash-base@npm:2.0.2" - dependencies: - inherits: "npm:^2.0.1" - checksum: 10/e39f3f2bb91679ed350bd2eb81035acb1e1e6e9bb86d9f1197fcfdc3cf39a2c56bf82a1870f000fae651477883b4c107fd6ac0c640a18ab06298b87c39939396 - languageName: node - linkType: hard - -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" +"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": + version: 3.1.2 + resolution: "hash-base@npm:3.1.2" dependencies: inherits: "npm:^2.0.4" - readable-stream: "npm:^3.6.0" - safe-buffer: "npm:^5.2.0" - checksum: 10/26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc + readable-stream: "npm:^2.3.8" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.1" + checksum: 10/f2100420521ec77736ebd9279f2c0b3ab2820136a2fa408ea36f3201d3f6984cda166806e6a0287f92adf179430bedfbdd74348ac351e24a3eff9f01a8c406b0 languageName: node linkType: hard -"hash-base@npm:~3.0, hash-base@npm:~3.0.4": +"hash-base@npm:~3.0.4": version: 3.0.5 resolution: "hash-base@npm:3.0.5" dependencies: @@ -8765,7 +8686,16 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": +"iconv-lite@npm:0.7.0": + version: 0.7.0 + resolution: "iconv-lite@npm:0.7.0" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10/5bfc897fedfb7e29991ae5ef1c061ed4f864005f8c6d61ef34aba6a3885c04bd207b278c0642b041383aeac2d11645b4319d0ca7b863b0be4be0cde1c9238ca7 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -8911,13 +8841,10 @@ __metadata: languageName: node linkType: hard -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 10/1ed81e06721af012306329b31f532b5e24e00cb537be18ddc905a84f19fe8f83a09a1699862bf3a1ec4b9dea93c55a3fa5faf8b5ea380431469df540f38b092c +"ip-address@npm:^10.0.1": + version: 10.0.1 + resolution: "ip-address@npm:10.0.1" + checksum: 10/09731acda32cd8e14c46830c137e7e5940f47b36d63ffb87c737331270287d631cf25aa95570907a67d3f919fdb25f4470c404eda21e62f22e0a55927f4dd0fb languageName: node linkType: hard @@ -9072,14 +8999,15 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": - version: 1.1.0 - resolution: "is-generator-function@npm:1.1.0" + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" dependencies: - call-bound: "npm:^1.0.3" - get-proto: "npm:^1.0.0" + call-bound: "npm:^1.0.4" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" has-tostringtag: "npm:^1.0.2" safe-regex-test: "npm:^1.1.0" - checksum: 10/5906ff51a856a5fbc6b90a90fce32040b0a6870da905f98818f1350f9acadfc9884f7c3dec833fce04b83dd883937b86a190b6593ede82e8b1af8b6c4ecf7cbd + checksum: 10/cc50fa01034356bdfda26983c5457103240f201f4663c0de1257802714e40d36bcff7aee21091d37bbba4be962fa5c6475ce7ddbc0abfa86d6bef466e41e50a5 languageName: node linkType: hard @@ -9310,13 +9238,6 @@ __metadata: languageName: node linkType: hard -"isomorphic-timers-promises@npm:^1.0.1": - version: 1.0.1 - resolution: "isomorphic-timers-promises@npm:1.0.1" - checksum: 10/2dabe397039081dbf30039f295333a7f9888b072dd0afa3aa7d8ba8f812a6db5efcbda0861a4be43ecfec207d56314ecf27150187b8d0f924a93103fa93eac73 - languageName: node - linkType: hard - "isomorphic-ws@npm:5.0.0": version: 5.0.0 resolution: "isomorphic-ws@npm:5.0.0" @@ -9382,12 +9303,12 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" + version: 3.2.0 + resolution: "istanbul-reports@npm:3.2.0" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 10/f1faaa4684efaf57d64087776018d7426312a59aa6eeb4e0e3a777347d23cd286ad18f427e98f0e3dee666103d7404c9d7abc5f240406a912fa16bd6695437fa + checksum: 10/6773a1d5c7d47eeec75b317144fe2a3b1da84a44b6282bebdc856e09667865e58c9b025b75b3d87f5bc62939126cbba4c871ee84254537d934ba5da5d4c4ec4e languageName: node linkType: hard @@ -9404,20 +9325,6 @@ __metadata: languageName: node linkType: hard -"jake@npm:^10.8.5": - version: 10.9.2 - resolution: "jake@npm:10.9.2" - dependencies: - async: "npm:^3.2.3" - chalk: "npm:^4.0.2" - filelist: "npm:^1.0.4" - minimatch: "npm:^3.1.2" - bin: - jake: bin/cli.js - checksum: 10/3be324708f99f031e0aec49ef8fd872eb4583cbe8a29a0c875f554f6ac638ee4ea5aa759bb63723fd54f77ca6d7db851eaa78353301734ed3700db9cb109a0cd - languageName: node - linkType: hard - "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -9880,7 +9787,7 @@ __metadata: languageName: node linkType: hard -"jest@npm:29.7.0": +"jest@npm:29.7.0, jest@npm:^29.5.0": version: 29.7.0 resolution: "jest@npm:29.7.0" dependencies: @@ -9952,13 +9859,6 @@ __metadata: languageName: node linkType: hard -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 10/bebe7ae829bbd586ce8cbe83501dd8cb8c282c8902a8aeeed0a073a89dc37e8103b1244f3c6acd60278bcbfe12d93a3f83c9ac396868a3b3bbc3c5e5e3b648ef - languageName: node - linkType: hard - "jsdoc-type-pratt-parser@npm:~4.0.0": version: 4.0.0 resolution: "jsdoc-type-pratt-parser@npm:4.0.0" @@ -9966,7 +9866,7 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2": +"jsesc@npm:^3.0.2, jsesc@npm:~3.1.0": version: 3.1.0 resolution: "jsesc@npm:3.1.0" bin: @@ -9975,15 +9875,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:~3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" - bin: - jsesc: bin/jsesc - checksum: 10/8e5a7de6b70a8bd71f9cb0b5a7ade6a73ae6ab55e697c74cc997cede97417a3a65ed86c36f7dd6125fe49766e8386c845023d9e213916ca92c9dfdd56e2babf3 - languageName: node - linkType: hard - "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -10047,15 +9938,15 @@ __metadata: linkType: hard "jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" + version: 6.2.0 + resolution: "jsonfile@npm:6.2.0" dependencies: graceful-fs: "npm:^4.1.6" universalify: "npm:^2.0.0" dependenciesMeta: graceful-fs: optional: true - checksum: 10/03014769e7dc77d4cf05fa0b534907270b60890085dd5e4d60a382ff09328580651da0b8b4cdf44d91e4c8ae64d91791d965f05707beff000ed494a38b6fec85 + checksum: 10/513aac94a6eff070767cafc8eb4424b35d523eec0fcd8019fe5b975f4de5b10a54640c8d5961491ddd8e6f562588cf62435c5ddaf83aaf0986cd2ee789e0d7b9 languageName: node linkType: hard @@ -10190,7 +10081,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.20": +"lodash@npm:4.17.21, lodash@npm:^4.17.20, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -10207,6 +10098,13 @@ __metadata: languageName: node linkType: hard +"long@npm:5.2.3": + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 10/9167ec6947a825b827c30da169a7384eec6c0c9ec2f0b9c74da2e93d81159bbe39fb09c3f13dae9721d4b807ccfa09797a7dd1012f5d478e3e33ca3c78b608e6 + languageName: node + linkType: hard + "loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -10244,9 +10142,9 @@ __metadata: linkType: hard "luxon@npm:^3.2.1, luxon@npm:^3.5.0": - version: 3.6.1 - resolution: "luxon@npm:3.6.1" - checksum: 10/35aad425607708c87af110a52c949190bc35b987770079ec8007ef2365cd29639413db3360d2883777aa01cb3ca5bdb37f42ee3e8e5a0dd277fe22e90cc8a786 + version: 3.7.2 + resolution: "luxon@npm:3.7.2" + checksum: 10/b24cd205ed306ce7415991687897dcc4027921ae413c9116590bc33a95f93b86ce52cf74ba72b4f5c5ab1c10090517f54ac8edfb127c049e0bf55b90dc2260be languageName: node linkType: hard @@ -10474,15 +10372,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/126b36485b821daf96d33b5c821dac600cc1ab36c87e7a532594f9b1652b1fa89a1eebcaad4dff17c764dce1a7ac1531327f190fed5f97d8f6e5f889c116c429 - languageName: node - linkType: hard - "minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" @@ -10492,7 +10381,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.6": +"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f @@ -10566,12 +10455,12 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.2 - resolution: "minizlib@npm:3.0.2" +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" dependencies: minipass: "npm:^7.1.2" - checksum: 10/c075bed1594f68dcc8c35122333520112daefd4d070e5d0a228bd4cf5580e9eed3981b96c0ae1d62488e204e80fd27b2b9d0068ca9a5ef3993e9565faf63ca41 + checksum: 10/f47365cc2cb7f078cbe7e046eb52655e2e7e97f8c0a9a674f4da60d94fb0624edfcec9b5db32e8ba5a99a5f036f595680ae6fe02a262beaa73026e505cc52f99 languageName: node linkType: hard @@ -10582,15 +10471,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 10/16fd79c28645759505914561e249b9a1f5fe3362279ad95487a4501e4467abeb714fd35b95307326b8fd03f3c7719065ef11a6f97b7285d7888306d1bd2232ba - languageName: node - linkType: hard - "module-deps@npm:^6.2.3": version: 6.2.3 resolution: "module-deps@npm:6.2.3" @@ -10693,8 +10573,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 11.2.0 - resolution: "node-gyp@npm:11.2.0" + version: 11.4.2 + resolution: "node-gyp@npm:11.4.2" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -10708,7 +10588,7 @@ __metadata: which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/806fd8e3adc9157e17bf0d4a2c899cf6b98a0bbe9f453f630094ce791866271f6cddcaf2133e6513715d934fcba2014d287c7053d5d7934937b3a34d5a3d84ad + checksum: 10/de0fdd1a23d27976974f2480b1c5a2954180050f4d7d682b2fcd36a7c996100981fc37ba0c893d02471ccf1730240f73c3073a6a9397c5eb3bb7578ca82808ed languageName: node linkType: hard @@ -10719,13 +10599,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 10/c2b33b4f0c40445aee56141f13ca692fa6805db88510e5bbb3baadb2da13e1293b738e638e15e4a8eb668bb9e97debb08e7a35409b477b5cc18f171d35a83045 - languageName: node - linkType: hard - "node-releases@npm:^2.0.21": version: 2.0.21 resolution: "node-releases@npm:2.0.21" @@ -10733,41 +10606,6 @@ __metadata: languageName: node linkType: hard -"node-stdlib-browser@npm:1.3.1": - version: 1.3.1 - resolution: "node-stdlib-browser@npm:1.3.1" - dependencies: - assert: "npm:^2.0.0" - browser-resolve: "npm:^2.0.0" - browserify-zlib: "npm:^0.2.0" - buffer: "npm:^5.7.1" - console-browserify: "npm:^1.1.0" - constants-browserify: "npm:^1.0.0" - create-require: "npm:^1.1.1" - crypto-browserify: "npm:^3.12.1" - domain-browser: "npm:4.22.0" - events: "npm:^3.0.0" - https-browserify: "npm:^1.0.0" - isomorphic-timers-promises: "npm:^1.0.1" - os-browserify: "npm:^0.3.0" - path-browserify: "npm:^1.0.1" - pkg-dir: "npm:^5.0.0" - process: "npm:^0.11.10" - punycode: "npm:^1.4.1" - querystring-es3: "npm:^0.2.1" - readable-stream: "npm:^3.6.0" - stream-browserify: "npm:^3.0.0" - stream-http: "npm:^3.2.0" - string_decoder: "npm:^1.0.0" - timers-browserify: "npm:^2.0.4" - tty-browserify: "npm:0.0.1" - url: "npm:^0.11.4" - util: "npm:^0.12.4" - vm-browserify: "npm:^1.0.1" - checksum: 10/5d5ace50868ef1a8ce9718a5fc64e4b6712f8be75bf6ab71f2eb7b5815f55f20507e427eac2fdb384e372f58891eb34089af3b55d3f9b5b60b547c8581a1c30e - languageName: node - linkType: hard - "nopt@npm:^8.0.0": version: 8.1.0 resolution: "nopt@npm:8.1.0" @@ -11033,17 +10871,16 @@ __metadata: languageName: node linkType: hard -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": - version: 5.1.7 - resolution: "parse-asn1@npm:5.1.7" +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.9": + version: 5.1.9 + resolution: "parse-asn1@npm:5.1.9" dependencies: asn1.js: "npm:^4.10.1" browserify-aes: "npm:^1.2.0" evp_bytestokey: "npm:^1.0.3" - hash-base: "npm:~3.0" - pbkdf2: "npm:^3.1.2" + pbkdf2: "npm:^3.1.5" safe-buffer: "npm:^5.2.1" - checksum: 10/f82c079f4d9a4d33159c7682f9c516680f4d659fde8060697a6b3c1be4795976e826d53a1e5751a81ddc800e9c6d6fa4629b59f6d1f3241ac8447a00c89a67d3 + checksum: 10/bc3d616a8076fa8a9a34cab8af6905859a1bafd0c49c98132acc7d29b779c2b81d4a8fc610f5bedc9770cc4bfc323f7c939ad7413e9df6ba60cb931010c42f52 languageName: node linkType: hard @@ -11066,7 +10903,7 @@ __metadata: languageName: node linkType: hard -"path-browserify@npm:1.0.1, path-browserify@npm:^1.0.0, path-browserify@npm:^1.0.1": +"path-browserify@npm:^1.0.0, path-browserify@npm:^1.0.1": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" checksum: 10/7e7368a5207e7c6b9051ef045711d0dc3c2b6203e96057e408e6e74d09f383061010d2be95cb8593fe6258a767c3e9fc6b2bfc7ce8d48ae8c3d9f6994cca9ad8 @@ -11133,9 +10970,9 @@ __metadata: linkType: hard "path-to-regexp@npm:^8.0.0": - version: 8.2.0 - resolution: "path-to-regexp@npm:8.2.0" - checksum: 10/23378276a172b8ba5f5fb824475d1818ca5ccee7bbdb4674701616470f23a14e536c1db11da9c9e6d82b82c556a817bbf4eee6e41b9ed20090ef9427cbb38e13 + version: 8.3.0 + resolution: "path-to-regexp@npm:8.3.0" + checksum: 10/568f148fc64f5fd1ecebf44d531383b28df924214eabf5f2570dce9587a228e36c37882805ff02d71c6209b080ea3ee6a4d2b712b5df09741b67f1f3cf91e55a languageName: node linkType: hard @@ -11146,17 +10983,17 @@ __metadata: languageName: node linkType: hard -"pbkdf2@npm:^3.1.2": - version: 3.1.3 - resolution: "pbkdf2@npm:3.1.3" +"pbkdf2@npm:^3.1.2, pbkdf2@npm:^3.1.5": + version: 3.1.5 + resolution: "pbkdf2@npm:3.1.5" dependencies: - create-hash: "npm:~1.1.3" + create-hash: "npm:^1.2.0" create-hmac: "npm:^1.1.7" - ripemd160: "npm:=2.0.1" + ripemd160: "npm:^2.0.3" safe-buffer: "npm:^5.2.1" - sha.js: "npm:^2.4.11" - to-buffer: "npm:^1.2.0" - checksum: 10/980cf2977aa84ec3166fde195a28464ab494131c0a5778fc8f20b8894410747e502159c19ef2b41842c728bc52ba49ffee6847e3ee61ac0d482689f85d8a1b30 + sha.js: "npm:^2.4.12" + to-buffer: "npm:^1.2.1" + checksum: 10/ce1c9a2ebbc843c86090ec6cac6d07429dece7c1fdb87437ce6cf869d0429cc39cab61bc34215585f4a00d8009862df45e197fbd54f3508ccba8ff312a88261b languageName: node linkType: hard @@ -11174,13 +11011,6 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2": - version: 4.0.2 - resolution: "picomatch@npm:4.0.2" - checksum: 10/ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717 - languageName: node - linkType: hard - "picomatch@npm:^4.0.3": version: 4.0.3 resolution: "picomatch@npm:4.0.3" @@ -11218,15 +11048,6 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^5.0.0": - version: 5.0.0 - resolution: "pkg-dir@npm:5.0.0" - dependencies: - find-up: "npm:^5.0.0" - checksum: 10/b167bb8dac7bbf22b1d5e30ec223e6b064b84b63010c9d49384619a36734caf95ed23ad23d4f9bd975e8e8082b60a83395f43a89bb192df53a7c25a38ecb57d9 - languageName: node - linkType: hard - "playwright-core@npm:1.55.1": version: 1.55.1 resolution: "playwright-core@npm:1.55.1" @@ -11362,31 +11183,22 @@ __metadata: languageName: node linkType: hard -"prettier-plugin-packagejson@npm:2.5.17": - version: 2.5.17 - resolution: "prettier-plugin-packagejson@npm:2.5.17" +"prettier-plugin-packagejson@npm:^2.2.11, prettier-plugin-packagejson@npm:^2.2.18": + version: 2.5.19 + resolution: "prettier-plugin-packagejson@npm:2.5.19" dependencies: - sort-package-json: "npm:3.3.1" - synckit: "npm:0.11.8" + sort-package-json: "npm:3.4.0" + synckit: "npm:0.11.11" peerDependencies: prettier: ">= 1.16.0" peerDependenciesMeta: prettier: optional: true - checksum: 10/463db60adff98301fe8e3ea6b58c3f87dd051a3b590781d5e29cf7bc789c82e5bfca6584ad95aec321845aa9fd404582ce0d90f1b1982118d713d0fe9eb8f66d - languageName: node - linkType: hard - -"prettier@npm:3.6.2": - version: 3.6.2 - resolution: "prettier@npm:3.6.2" - bin: - prettier: bin/prettier.cjs - checksum: 10/1213691706bcef1371d16ef72773c8111106c3533b660b1cc8ec158bd109cdf1462804125f87f981f23c4a3dba053b6efafda30ab0114cc5b4a725606bb9ff26 + checksum: 10/a3caba8b62f92b53a8414cf1061a87bb5931e790c77022c64f3fa12122cf78b392912525deb9671bcdb196106a3078d4dcc6ae076fe2e14e26931b9d9b0195f1 languageName: node linkType: hard -"prettier@npm:^2.8.8": +"prettier@npm:^2.7.1, prettier@npm:^2.8.8": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: @@ -11431,7 +11243,7 @@ __metadata: languageName: node linkType: hard -"process@npm:0.11.10, process@npm:^0.11.10, process@npm:~0.11.0": +"process@npm:^0.11.10, process@npm:~0.11.0": version: 0.11.10 resolution: "process@npm:0.11.10" checksum: 10/dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b @@ -11592,25 +11404,25 @@ __metadata: linkType: hard "raw-body@npm:^3.0.0": - version: 3.0.0 - resolution: "raw-body@npm:3.0.0" + version: 3.0.1 + resolution: "raw-body@npm:3.0.1" dependencies: bytes: "npm:3.1.2" http-errors: "npm:2.0.0" - iconv-lite: "npm:0.6.3" + iconv-lite: "npm:0.7.0" unpipe: "npm:1.0.0" - checksum: 10/2443429bbb2f9ae5c50d3d2a6c342533dfbde6b3173740b70fa0302b30914ff400c6d31a46b3ceacbe7d0925dc07d4413928278b494b04a65736fc17ca33e30c + checksum: 10/3cc63e154147d15200ebf4fe3fb806682b268b8c6256ef3296f60025b07b67a028c1c92b3985b4ec1c7af08b7365ef91b0d0597b957c1c6ac40241b5f6b7d38b languageName: node linkType: hard "react-dom@npm:^19.1.1": - version: 19.1.1 - resolution: "react-dom@npm:19.1.1" + version: 19.2.0 + resolution: "react-dom@npm:19.2.0" dependencies: - scheduler: "npm:^0.26.0" + scheduler: "npm:^0.27.0" peerDependencies: - react: ^19.1.1 - checksum: 10/9005415d2175b1f1eb4a544ad04afb29691bb7b6dd43bbdaa09932146b310b73bd4552bc772ad78fa481f409eada1560cf887606c83c1a53a922c1e30f1b3a34 + react: ^19.2.0 + checksum: 10/3dbba071b9b1e7a19eae55f05c100f6b44f88c0aee72397d719ae338248ca66ed5028e6964c1c14870cc3e1abcecc91b22baba6dc2072f819dea81a9fd72f2fd languageName: node linkType: hard @@ -11706,9 +11518,9 @@ __metadata: linkType: hard "react@npm:^19.1.1": - version: 19.1.1 - resolution: "react@npm:19.1.1" - checksum: 10/9801530fdc939e1a7a499422e930515b2400809cb39c2872984e99f832d233f61659a693871183dac3155c2f9b2c9dcf4440a56bd18983277ae92860e38c3a61 + version: 19.2.0 + resolution: "react@npm:19.2.0" + checksum: 10/e13bcdb8e994c3cfa922743cb75ca8deb60531bf02f584d2d8dab940a8132ce8a2e6ef16f8ed7f372b4072e7a7eeff589b2812dabbedfa73e6e46201dac8a9d0 languageName: node linkType: hard @@ -11837,12 +11649,12 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.2.0": - version: 10.2.0 - resolution: "regenerate-unicode-properties@npm:10.2.0" +"regenerate-unicode-properties@npm:^10.2.2": + version: 10.2.2 + resolution: "regenerate-unicode-properties@npm:10.2.2" dependencies: regenerate: "npm:^1.4.2" - checksum: 10/9150eae6fe04a8c4f2ff06077396a86a98e224c8afad8344b1b656448e89e84edcd527e4b03aa5476774129eb6ad328ed684f9c1459794a935ec0cc17ce14329 + checksum: 10/5041ee31185c4700de9dd76783fab9def51c412751190d523d621db5b8e35a6c2d91f1642c12247e7d94f84b8ae388d044baac1e88fc2ba0ac215ca8dc7bed38 languageName: node linkType: hard @@ -11875,16 +11687,16 @@ __metadata: linkType: hard "regexpu-core@npm:^6.2.0": - version: 6.2.0 - resolution: "regexpu-core@npm:6.2.0" + version: 6.4.0 + resolution: "regexpu-core@npm:6.4.0" dependencies: regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.2.0" + regenerate-unicode-properties: "npm:^10.2.2" regjsgen: "npm:^0.8.0" - regjsparser: "npm:^0.12.0" + regjsparser: "npm:^0.13.0" unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 10/4d054ffcd98ca4f6ca7bf0df6598ed5e4a124264602553308add41d4fa714a0c5bcfb5bc868ac91f7060a9c09889cc21d3180a3a14c5f9c5838442806129ced3 + unicode-match-property-value-ecmascript: "npm:^2.2.1" + checksum: 10/bf5f85a502a17f127a1f922270e2ecc1f0dd071ff76a3ec9afcd6b1c2bf7eae1486d1e3b1a6d621aee8960c8b15139e6b5058a84a68e518e1a92b52e9322faf9 languageName: node linkType: hard @@ -11895,14 +11707,14 @@ __metadata: languageName: node linkType: hard -"regjsparser@npm:^0.12.0": - version: 0.12.0 - resolution: "regjsparser@npm:0.12.0" +"regjsparser@npm:^0.13.0": + version: 0.13.0 + resolution: "regjsparser@npm:0.13.0" dependencies: - jsesc: "npm:~3.0.2" + jsesc: "npm:~3.1.0" bin: regjsparser: bin/parser - checksum: 10/c2d6506b3308679de5223a8916984198e0493649a67b477c66bdb875357e3785abbf3bedf7c5c2cf8967d3b3a7bdf08b7cbd39e65a70f9e1ffad584aecf5f06a + checksum: 10/eeaabd3454f59394cbb3bfeb15fd789e638040f37d0bee9071a9b0b85524ddc52b5f7aaaaa4847304c36fa37429e53d109c4dbf6b878cb5ffa4f4198c1042fb7 languageName: node linkType: hard @@ -12014,7 +11826,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:3.0.2, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -12025,52 +11837,42 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:=2.0.1": - version: 2.0.1 - resolution: "ripemd160@npm:2.0.1" - dependencies: - hash-base: "npm:^2.0.0" - inherits: "npm:^2.0.1" - checksum: 10/f1a20b72b3ef897a981544c72a1fe15c2bd580f6f40e3062f7839af8e81232f746aa860964686e4b81e90929ad086f14823a9864e4e4bed3367e597fe14a0968 - languageName: node - linkType: hard - -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1, ripemd160@npm:^2.0.3": + version: 2.0.3 + resolution: "ripemd160@npm:2.0.3" dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - checksum: 10/006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 + hash-base: "npm:^3.1.2" + inherits: "npm:^2.0.4" + checksum: 10/d15d42ea0460426675e5320f86d3468ab408af95b1761cf35f8d32c0c97b4d3bb72b7226e990e643b96e1637a8ad26b343a6c7666e1a297bcab4f305a1d9d3e3 languageName: node linkType: hard "rollup@npm:^4.43.0": - version: 4.52.2 - resolution: "rollup@npm:4.52.2" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.52.2" - "@rollup/rollup-android-arm64": "npm:4.52.2" - "@rollup/rollup-darwin-arm64": "npm:4.52.2" - "@rollup/rollup-darwin-x64": "npm:4.52.2" - "@rollup/rollup-freebsd-arm64": "npm:4.52.2" - "@rollup/rollup-freebsd-x64": "npm:4.52.2" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.52.2" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.52.2" - "@rollup/rollup-linux-arm64-gnu": "npm:4.52.2" - "@rollup/rollup-linux-arm64-musl": "npm:4.52.2" - "@rollup/rollup-linux-loong64-gnu": "npm:4.52.2" - "@rollup/rollup-linux-ppc64-gnu": "npm:4.52.2" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.52.2" - "@rollup/rollup-linux-riscv64-musl": "npm:4.52.2" - "@rollup/rollup-linux-s390x-gnu": "npm:4.52.2" - "@rollup/rollup-linux-x64-gnu": "npm:4.52.2" - "@rollup/rollup-linux-x64-musl": "npm:4.52.2" - "@rollup/rollup-openharmony-arm64": "npm:4.52.2" - "@rollup/rollup-win32-arm64-msvc": "npm:4.52.2" - "@rollup/rollup-win32-ia32-msvc": "npm:4.52.2" - "@rollup/rollup-win32-x64-gnu": "npm:4.52.2" - "@rollup/rollup-win32-x64-msvc": "npm:4.52.2" + version: 4.52.3 + resolution: "rollup@npm:4.52.3" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.52.3" + "@rollup/rollup-android-arm64": "npm:4.52.3" + "@rollup/rollup-darwin-arm64": "npm:4.52.3" + "@rollup/rollup-darwin-x64": "npm:4.52.3" + "@rollup/rollup-freebsd-arm64": "npm:4.52.3" + "@rollup/rollup-freebsd-x64": "npm:4.52.3" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.52.3" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.52.3" + "@rollup/rollup-linux-arm64-gnu": "npm:4.52.3" + "@rollup/rollup-linux-arm64-musl": "npm:4.52.3" + "@rollup/rollup-linux-loong64-gnu": "npm:4.52.3" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.52.3" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.52.3" + "@rollup/rollup-linux-riscv64-musl": "npm:4.52.3" + "@rollup/rollup-linux-s390x-gnu": "npm:4.52.3" + "@rollup/rollup-linux-x64-gnu": "npm:4.52.3" + "@rollup/rollup-linux-x64-musl": "npm:4.52.3" + "@rollup/rollup-openharmony-arm64": "npm:4.52.3" + "@rollup/rollup-win32-arm64-msvc": "npm:4.52.3" + "@rollup/rollup-win32-ia32-msvc": "npm:4.52.3" + "@rollup/rollup-win32-x64-gnu": "npm:4.52.3" + "@rollup/rollup-win32-x64-msvc": "npm:4.52.3" "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -12122,7 +11924,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/21f22f49801d601f858ad40162640b41158273bce2ee5cf1170d373fdc1fb8fc6f76a8a26b2c33baebabbed6a3b99d11086f5434b4d9f26a59c9df625872ce40 + checksum: 10/c4db19a7a04fa93b176ccca67a2ff9806f1edf8e4c2d55a362a6557fd957fe330109043b43ba4b8771fb7722d2cb3ef958b11a1b9c44ee4b6c20ee8f8f5ccdea languageName: node linkType: hard @@ -12161,7 +11963,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 @@ -12210,10 +12012,10 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.26.0": - version: 0.26.0 - resolution: "scheduler@npm:0.26.0" - checksum: 10/1ecf2e5d7de1a7a132796834afe14a2d589ba7e437615bd8c06f3e0786a3ac3434655e67aac8755d9b14e05754c177e49c064261de2673aaa3c926bc98caa002 +"scheduler@npm:^0.27.0": + version: 0.27.0 + resolution: "scheduler@npm:0.27.0" + checksum: 10/eab3c3a8373195173e59c147224fc30dabe6dd453f248f5e610e8458512a5a2ee3a06465dc400ebfe6d35c9f5b7f3bb6b2e41c88c86fd177c25a73e7286a1e06 languageName: node linkType: hard @@ -12229,14 +12031,14 @@ __metadata: linkType: hard "schema-utils@npm:^4.3.0, schema-utils@npm:^4.3.2": - version: 4.3.2 - resolution: "schema-utils@npm:4.3.2" + version: 4.3.3 + resolution: "schema-utils@npm:4.3.3" dependencies: "@types/json-schema": "npm:^7.0.9" ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 10/02c32c34aae762d48468f98465a96a167fede637772871c7c7d8923671ddb9f20b2cc6f6e8448ae6bef5363e3597493c655212c8b06a4ee73aa099d9452fbd8b + checksum: 10/dba77a46ad7ff0c906f7f09a1a61109e6cb56388f15a68070b93c47a691f516c6a3eb454f81a8cceb0a0e55b87f8b05770a02bfb1f4e0a3143b5887488b2f900 languageName: node linkType: hard @@ -12314,12 +12116,13 @@ __metadata: linkType: hard "ses@npm:^1.1.0, ses@npm:^1.12.0": - version: 1.13.1 - resolution: "ses@npm:1.13.1" + version: 1.14.0 + resolution: "ses@npm:1.14.0" dependencies: - "@endo/env-options": "npm:^1.1.10" - "@endo/immutable-arraybuffer": "npm:^1.1.1" - checksum: 10/7077a5349bebccddb7cdd07f6cca1d8c8af6b36106d34efdf362030c2a4a820f2c4acf3e7ffcc003403312d0833bbc3d4b21c490cd2f198b697cbe375761c159 + "@endo/cache-map": "npm:^1.1.0" + "@endo/env-options": "npm:^1.1.11" + "@endo/immutable-arraybuffer": "npm:^1.1.2" + checksum: 10/bee10b958938fb3d153ea8f1b4514f8ddb390dc7533fe9cfc382dcc046bebd5fca02d80836bfb8f98e94609ffbe3580a0bb65428eb7e39d523315eacdc052300 languageName: node linkType: hard @@ -12374,7 +12177,7 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.11, sha.js@npm:^2.4.8": +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8": version: 2.4.12 resolution: "sha.js@npm:2.4.12" dependencies: @@ -12397,11 +12200,13 @@ __metadata: linkType: hard "shasum-object@npm:^1.0.0": - version: 1.0.0 - resolution: "shasum-object@npm:1.0.0" + version: 1.0.1 + resolution: "shasum-object@npm:1.0.1" dependencies: fast-safe-stringify: "npm:^2.0.7" - checksum: 10/0666d856b9d02968d7747af6923d7d4c969390904aa2607072dc769b1bc724c5d440f61fbf1ed93cac382939310a762f375874805efca053e5f848c265330bb6 + bin: + shasum-object: bin.js + checksum: 10/c8852881daa58b8148e035e2a0b1b63207f47dbea907053ad9837b8c0dac0e6a3f8643bef96e982f80106c9b151aa582ca01d65a12e5179810ff2b15939b7048 languageName: node linkType: hard @@ -12529,85 +12334,6 @@ __metadata: languageName: node linkType: hard -"snap-utils@workspace:^, snap-utils@workspace:packages/snap-utils": - version: 0.0.0-use.local - resolution: "snap-utils@workspace:packages/snap-utils" - dependencies: - "@metamask/eslint-config": "npm:12.2.0" - "@metamask/eslint-config-browser": "npm:12.1.0" - "@metamask/eslint-config-jest": "npm:12.1.0" - "@metamask/eslint-config-nodejs": "npm:12.1.0" - "@metamask/eslint-config-typescript": "npm:12.1.0" - "@metamask/providers": "npm:16.1.0" - "@types/jest": "npm:27.5.2" - "@types/node": "npm:22.16.0" - "@types/react": "npm:18.3.23" - "@types/react-dom": "npm:18.3.7" - "@types/styled-components": "npm:5.1.34" - "@typescript-eslint/eslint-plugin": "npm:5.62.0" - "@typescript-eslint/parser": "npm:5.62.0" - eslint: "npm:8.57.1" - eslint-config-prettier: "npm:8.10.0" - eslint-plugin-import: "npm:2.26.0" - eslint-plugin-jest: "npm:27.9.0" - eslint-plugin-jsdoc: "npm:41.1.2" - eslint-plugin-n: "npm:15.7.0" - eslint-plugin-prettier: "npm:4.2.1" - eslint-plugin-promise: "npm:6.6.0" - prettier: "npm:3.6.2" - prettier-plugin-packagejson: "npm:2.5.17" - typescript: "npm:4.9.5" - peerDependencies: - react: ^18.2.0 - languageName: unknown - linkType: soft - -"snap@workspace:packages/snap": - version: 0.0.0-use.local - resolution: "snap@workspace:packages/snap" - dependencies: - "@hathor/hathor-rpc-handler": "workspace:*" - "@hathor/wallet-lib": "npm:2.8.3" - "@jest/globals": "npm:29.7.0" - "@metamask/auto-changelog": "npm:3.4.4" - "@metamask/eslint-config": "npm:12.2.0" - "@metamask/eslint-config-jest": "npm:12.1.0" - "@metamask/eslint-config-nodejs": "npm:12.1.0" - "@metamask/eslint-config-typescript": "npm:12.1.0" - "@metamask/snaps-cli": "npm:6.7.0" - "@metamask/snaps-jest": "npm:8.16.0" - "@metamask/snaps-sdk": "npm:9.2.0" - "@types/path-browserify": "npm:1.0.3" - "@types/react": "npm:18.2.4" - "@types/react-dom": "npm:18.2.4" - "@typescript-eslint/eslint-plugin": "npm:5.62.0" - "@typescript-eslint/parser": "npm:5.62.0" - assert: "npm:2.1.0" - bn.js: "npm:4.11.8" - buffer: "npm:6.0.3" - crypto-browserify: "npm:3.12.1" - eslint: "npm:8.57.1" - eslint-config-prettier: "npm:8.10.0" - eslint-plugin-import: "npm:2.26.0" - eslint-plugin-jest: "npm:27.9.0" - eslint-plugin-jsdoc: "npm:41.1.2" - eslint-plugin-n: "npm:15.7.0" - eslint-plugin-prettier: "npm:4.2.1" - eslint-plugin-promise: "npm:6.6.0" - jest: "npm:29.7.0" - node-stdlib-browser: "npm:1.3.1" - path-browserify: "npm:1.0.1" - prettier: "npm:3.6.2" - prettier-plugin-packagejson: "npm:2.5.17" - process: "npm:0.11.10" - rimraf: "npm:3.0.2" - stream-browserify: "npm:3.0.0" - ts-jest: "npm:29.4.0" - typescript: "npm:4.8.4" - util: "npm:0.12.5" - languageName: unknown - linkType: soft - "socks-proxy-agent@npm:^8.0.3": version: 8.0.5 resolution: "socks-proxy-agent@npm:8.0.5" @@ -12620,12 +12346,12 @@ __metadata: linkType: hard "socks@npm:^2.8.3": - version: 2.8.5 - resolution: "socks@npm:2.8.5" + version: 2.8.7 + resolution: "socks@npm:2.8.7" dependencies: - ip-address: "npm:^9.0.5" + ip-address: "npm:^10.0.1" smart-buffer: "npm:^4.2.0" - checksum: 10/0109090ec2bcb8d12d3875a987e85539ed08697500ad971a603c3057e4c266b4bf6a603e07af6d19218c422dd9b72d923aaa6c1f20abae275510bba458e4ccc9 + checksum: 10/d19366c95908c19db154f329bbe94c2317d315dc933a7c2b5101e73f32a555c84fb199b62174e1490082a593a4933d8d5a9b297bde7d1419c14a11a965f51356 languageName: node linkType: hard @@ -12636,9 +12362,9 @@ __metadata: languageName: node linkType: hard -"sort-package-json@npm:3.3.1": - version: 3.3.1 - resolution: "sort-package-json@npm:3.3.1" +"sort-package-json@npm:3.4.0": + version: 3.4.0 + resolution: "sort-package-json@npm:3.4.0" dependencies: detect-indent: "npm:^7.0.1" detect-newline: "npm:^4.0.1" @@ -12649,7 +12375,7 @@ __metadata: tinyglobby: "npm:^0.2.12" bin: sort-package-json: cli.js - checksum: 10/e1a21e1cd9aeb35f5e4567066254ab4c781355706968d563c7915ace3d6749b54f7c34cb2c683416c2b7a7093e0aa74466605f116fbd187eefd6d045dd7f4950 + checksum: 10/f8009b037d0e1ba48819ddf498a34500f778058833b962b5f0d481943def68e2633259e679f29dbb6356fbab2bbc9ffa18524bc6decdcfd4341ab1a6aadee571 languageName: node linkType: hard @@ -12712,16 +12438,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.21 - resolution: "spdx-license-ids@npm:3.0.21" - checksum: 10/17a033b4c3485f081fc9faa1729dde8782a85d9131b156f2397c71256c2e1663132857d3cba1457c4965f179a4dcf1b69458a31e9d3d0c766d057ef0e3a0b4f2 - languageName: node - linkType: hard - -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10/e7587128c423f7e43cc625fe2f87e6affdf5ca51c1cc468e910d8aaca46bb44a7fbcfa552f787b1d3987f7043aeb4527d1b99559e6621e01b42b3f45e5a24cbb + version: 3.0.22 + resolution: "spdx-license-ids@npm:3.0.22" + checksum: 10/a2f214aaf74c21a0172232367ce785157cef45d78617ee4d12aa1246350af566968e28b511e2096b707611566ac3959b85d8bf2d53a65bc6b66580735d3e1965 languageName: node linkType: hard @@ -12774,7 +12493,7 @@ __metadata: languageName: node linkType: hard -"stream-browserify@npm:3.0.0, stream-browserify@npm:^3.0.0": +"stream-browserify@npm:^3.0.0": version: 3.0.0 resolution: "stream-browserify@npm:3.0.0" dependencies: @@ -12817,16 +12536,13 @@ __metadata: linkType: hard "streamx@npm:^2.15.0": - version: 2.22.1 - resolution: "streamx@npm:2.22.1" + version: 2.23.0 + resolution: "streamx@npm:2.23.0" dependencies: - bare-events: "npm:^2.2.0" + events-universal: "npm:^1.0.0" fast-fifo: "npm:^1.3.2" text-decoder: "npm:^1.1.0" - dependenciesMeta: - bare-events: - optional: true - checksum: 10/6d8576e0e5f4a67776427e3d29a877e66295bf7e17019a5b5c77d7fa026c5e8df6cdbd0cec2774999075af985179d70f07b25db7557b9226e33148fe67edd487 + checksum: 10/4969d7032b16497172afa2f8ac889d137764963ae564daf1611a03225dd62d9316d51de8098b5866d21722babde71353067184e7a3e9795d6dc17c902904a780 languageName: node linkType: hard @@ -12900,7 +12616,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -12928,11 +12644,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" dependencies: ansi-regex: "npm:^6.0.1" - checksum: 10/475f53e9c44375d6e72807284024ac5d668ee1d06010740dec0b9744f2ddf47de8d7151f80e5f6190fc8f384e802fdf9504b76a7e9020c9faee7103623338be2 + checksum: 10/db0e3f9654e519c8a33c50fc9304d07df5649388e7da06d3aabf66d29e5ad65d5e6315d8519d409c15b32fa82c1df7e11ed6f8cd50b0e4404463f0c9d77c8d0b languageName: node linkType: hard @@ -13044,12 +12760,12 @@ __metadata: languageName: node linkType: hard -"synckit@npm:0.11.8": - version: 0.11.8 - resolution: "synckit@npm:0.11.8" +"synckit@npm:0.11.11": + version: 0.11.11 + resolution: "synckit@npm:0.11.11" dependencies: - "@pkgr/core": "npm:^0.2.4" - checksum: 10/9bb2cf11edaf31ba781f1c719dd58087323201bda6392254538aef4dea216aa02a32e25f06643bcfa1c1a2c95e0d84186d82cfb66f9a0ab3a2be4816c696a8a3 + "@pkgr/core": "npm:^0.2.9" + checksum: 10/6ecd88212b5be80004376b6ea74babcba284566ff59a50d8803afcaa78c165b5d268635c1dd84532ee3f690a979409e1eda225a8a35bed2d135ffdcea06ce7b0 languageName: node linkType: hard @@ -13102,10 +12818,10 @@ __metadata: languageName: node linkType: hard -"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.2 - resolution: "tapable@npm:2.2.2" - checksum: 10/065a0dc44aba1b32020faa1c27c719e8f76e5345347515d8494bf158524f36e9f22ad9eaa5b5494f9d5d67bf0640afdd5698505948c46d720b6b7e69d19349a6 +"tapable@npm:^2.2.0, tapable@npm:^2.2.1, tapable@npm:^2.2.3": + version: 2.3.0 + resolution: "tapable@npm:2.3.0" + checksum: 10/496a841039960533bb6e44816a01fffc2a1eb428bb2051ecab9e87adf07f19e1f937566cbbbb09dceff31163c0ffd81baafcad84db900b601f0155dd0b37e9f2 languageName: node linkType: hard @@ -13121,16 +12837,15 @@ __metadata: linkType: hard "tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" + version: 7.5.1 + resolution: "tar@npm:7.5.1" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" + minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/12a2a4fc6dee23e07cc47f1aeb3a14a1afd3f16397e1350036a8f4cdfee8dcac7ef5978337a4e7b2ac2c27a9a6d46388fc2088ea7c80cb6878c814b1425f8ecf + checksum: 10/4848cd2fa2fcaf0734cf54e14bc685056eb43a74d7cc7f954c3ac88fea88c85d95b1d7896619f91aab6f2234c5eec731c18aaa201a78fcf86985bdc824ed7a00 languageName: node linkType: hard @@ -13157,16 +12872,16 @@ __metadata: linkType: hard "terser@npm:^5.31.1": - version: 5.43.1 - resolution: "terser@npm:5.43.1" + version: 5.44.0 + resolution: "terser@npm:5.44.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.14.0" + acorn: "npm:^8.15.0" commander: "npm:^2.20.0" source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/c0a0fd62319e0ce66e800f57ae12ef4ca45f12e9422dac160b866f0d890d01f8b547c96de2557b8443d96953db36be5d900e8006436ef9f628dbd38082e8fe5d + checksum: 10/e094a905016b00dd665a71f47311826618ea67f2d9f5aec37834114f9d27ed0de47e18a4b3bc2421b274bbf3028ac2b082e2d20f0e3b9f24d912ea126c9da4bf languageName: node linkType: hard @@ -13241,7 +12956,7 @@ __metadata: languageName: node linkType: hard -"timers-browserify@npm:^2.0.12, timers-browserify@npm:^2.0.4": +"timers-browserify@npm:^2.0.12": version: 2.0.12 resolution: "timers-browserify@npm:2.0.12" dependencies: @@ -13250,17 +12965,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.12": - version: 0.2.14 - resolution: "tinyglobby@npm:0.2.14" - dependencies: - fdir: "npm:^6.4.4" - picomatch: "npm:^4.0.2" - checksum: 10/3d306d319718b7cc9d79fb3f29d8655237aa6a1f280860a217f93417039d0614891aee6fc47c5db315f4fcc6ac8d55eb8e23e2de73b2c51a431b42456d9e5764 - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.15": +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" dependencies: @@ -13277,14 +12982,14 @@ __metadata: languageName: node linkType: hard -"to-buffer@npm:^1.2.0": - version: 1.2.1 - resolution: "to-buffer@npm:1.2.1" +"to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": + version: 1.2.2 + resolution: "to-buffer@npm:1.2.2" dependencies: isarray: "npm:^2.0.5" safe-buffer: "npm:^5.2.1" typed-array-buffer: "npm:^1.0.3" - checksum: 10/f8d03f070b8567d9c949f1b59c8d47c83ed2e59b50b5449258f931df9a1fcb751aa8bb8756a9345adc529b6b1822521157c48e1a7d01779a47185060d7bf96d4 + checksum: 10/69d806c20524ff1e4c44d49276bc96ff282dcae484780a3974e275dabeb75651ea430b074a2a4023701e63b3e1d87811cd82c0972f35280fe5461710e4872aba languageName: node linkType: hard @@ -13372,13 +13077,13 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:29.4.0": - version: 29.4.0 - resolution: "ts-jest@npm:29.4.0" +"ts-jest@npm:^29.1.0": + version: 29.4.4 + resolution: "ts-jest@npm:29.4.4" dependencies: bs-logger: "npm:^0.2.6" - ejs: "npm:^3.1.10" fast-json-stable-stringify: "npm:^2.1.0" + handlebars: "npm:^4.7.8" json5: "npm:^2.2.3" lodash.memoize: "npm:^4.1.2" make-error: "npm:^1.3.6" @@ -13408,7 +13113,7 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: 10/fe501f3d9946ec52db78ae0ac6cfd72942b1c1f5d657c12db321c9d570f0f499e83eb6c7e26074cd11dfe534a6a09c676947e7a63ee08fcda552aabcdeb6c592 + checksum: 10/759913fdb9795416abe918ba41c2ab3865f796f909d22bbf219a6a6c5e7daecad06ad85ecc905ea1af89fde2eb048c3b981493dfad6e3a21f7d5c602e630d34d languageName: node linkType: hard @@ -13597,17 +13302,17 @@ __metadata: linkType: hard "typescript-eslint@npm:^8.39.1": - version: 8.44.1 - resolution: "typescript-eslint@npm:8.44.1" + version: 8.45.0 + resolution: "typescript-eslint@npm:8.45.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.44.1" - "@typescript-eslint/parser": "npm:8.44.1" - "@typescript-eslint/typescript-estree": "npm:8.44.1" - "@typescript-eslint/utils": "npm:8.44.1" + "@typescript-eslint/eslint-plugin": "npm:8.45.0" + "@typescript-eslint/parser": "npm:8.45.0" + "@typescript-eslint/typescript-estree": "npm:8.45.0" + "@typescript-eslint/utils": "npm:8.45.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <6.0.0" - checksum: 10/9bd0601ef67d0fb20b095a722f4286b3b5d27905ff926a9375fc0934746626d72339d74ba40eb9d361af7fda1987294b0533dbed5dddbac79814daf196a301ac + checksum: 10/1c17ebb5bcbea418c8f372d71b5c2df8c9b8c6897d1bda8196ea17bac8fabeffe1814bc4f7a28d40f404fb811c97fcda0d69c4375b4f010d9bf44d19d8401706 languageName: node linkType: hard @@ -13627,7 +13332,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:4.8.4": +"typescript@npm:4.8.4, typescript@npm:~4.8.4": version: 4.8.4 resolution: "typescript@npm:4.8.4" bin: @@ -13637,7 +13342,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:4.9.5": +"typescript@npm:^4.7.4": version: 4.9.5 resolution: "typescript@npm:4.9.5" bin: @@ -13647,16 +13352,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.4.5": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/d04a9e27e6d83861f2126665aa8d84847e8ebabcea9125b9ebc30370b98cb38b5dff2508d74e2326a744938191a83a69aa9fddab41f193ffa43eabfdf3f190a5 - languageName: node - linkType: hard - "typescript@npm:~5.8.3": version: 5.8.3 resolution: "typescript@npm:5.8.3" @@ -13667,7 +13362,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A4.8.4#optional!builtin": +"typescript@patch:typescript@npm%3A4.8.4#optional!builtin, typescript@patch:typescript@npm%3A~4.8.4#optional!builtin": version: 4.8.4 resolution: "typescript@patch:typescript@npm%3A4.8.4#optional!builtin::version=4.8.4&hash=1a91c8" bin: @@ -13677,7 +13372,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A4.9.5#optional!builtin": +"typescript@patch:typescript@npm%3A^4.7.4#optional!builtin": version: 4.9.5 resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587" bin: @@ -13687,23 +13382,22 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.4.5#optional!builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" +"typescript@patch:typescript@npm%3A~5.8.3#optional!builtin": + version: 5.8.3 + resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/760f7d92fb383dbf7dee2443bf902f4365db2117f96f875cf809167f6103d55064de973db9f78fe8f31ec08fff52b2c969aee0d310939c0a3798ec75d0bca2e1 + checksum: 10/b9b1e73dabac5dc730c041325dbd9c99467c1b0d239f1b74ec3b90d831384af3e2ba973946232df670519147eb51a2c20f6f96163cea2b359f03de1e2091cc4f languageName: node linkType: hard -"typescript@patch:typescript@npm%3A~5.8.3#optional!builtin": - version: 5.8.3 - resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=b45daf" +"uglify-js@npm:^3.1.4": + version: 3.19.3 + resolution: "uglify-js@npm:3.19.3" bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/98470634034ec37fd9ea61cc82dcf9a27950d0117a4646146b767d085a2ec14b137aae9642a83d1c62732d7fdcdac19bb6288b0bb468a72f7a06ae4e1d2c72c9 + uglifyjs: bin/uglifyjs + checksum: 10/6b9639c1985d24580b01bb0ab68e78de310d38eeba7db45bec7850ab4093d8ee464d80ccfaceda9c68d1c366efbee28573b52f95e69ac792354c145acd380b11 languageName: node linkType: hard @@ -13757,17 +13451,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~7.12.0": - version: 7.12.0 - resolution: "undici-types@npm:7.12.0" - checksum: 10/4a0f927c98828f76fb0d64f356e36e5ac6e074ae4c7bec08d6de8bc36b7cf08ae27a3518fa8eb703f51c1a675241e2d07359bbce63f5575299148a270cea7e43 - languageName: node - linkType: hard - -"undici-types@npm:~7.8.0": - version: 7.8.0 - resolution: "undici-types@npm:7.8.0" - checksum: 10/fcff3fbab234f067fbd69e374ee2c198ba74c364ceaf6d93db7ca267e784457b5518cd01d0d2329b075f412574205ea3172a9a675facb49b4c9efb7141cd80b7 +"undici-types@npm:~7.13.0": + version: 7.13.0 + resolution: "undici-types@npm:7.13.0" + checksum: 10/1088ad68dd57981aa6eced5b3f5d74129ac619fbe558b30cb584d6096d32b084ae30d7cdc480d622226e6ffc8d31e01ac30215816439a0d784e0fe64db873b0f languageName: node linkType: hard @@ -13788,17 +13475,17 @@ __metadata: languageName: node linkType: hard -"unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" - checksum: 10/9fd53c657aefe5d3cb8208931b4c34fbdb30bb5aa9a6c6bf744e2f3036f00b8889eeaf30cb55a873b76b6ee8b5801ea770e1c49b3352141309f58f0ebb3011d8 +"unicode-match-property-value-ecmascript@npm:^2.2.1": + version: 2.2.1 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.1" + checksum: 10/a42bebebab4c82ea6d8363e487b1fb862f82d1b54af1b67eb3fef43672939b685780f092c4f235266b90225863afa1258d57e7be3578d8986a08d8fc309aabe1 languageName: node linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 10/243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b + version: 2.2.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.2.0" + checksum: 10/0dd0f6e70130c59b4a841bac206758f70227b113145e4afe238161e3e8540e8eb79963e7a228cd90ad13d499e96f7ef4ee8940835404b2181ad9bf9c174818e3 languageName: node linkType: hard @@ -13864,7 +13551,7 @@ __metadata: languageName: node linkType: hard -"url@npm:^0.11.1, url@npm:^0.11.4, url@npm:~0.11.0": +"url@npm:^0.11.1, url@npm:~0.11.0": version: 0.11.4 resolution: "url@npm:0.11.4" dependencies: @@ -13912,7 +13599,16 @@ __metadata: languageName: node linkType: hard -"util@npm:0.12.5, util@npm:^0.12.4, util@npm:^0.12.5, util@npm:~0.12.0": +"util@npm:^0.10.4": + version: 0.10.4 + resolution: "util@npm:0.10.4" + dependencies: + inherits: "npm:2.0.3" + checksum: 10/1200a1ca2b474758342b3a0c5261c56f14ef09ad7eeaec3e6f449f5776ecdfce09a153cad62652b823e74647cdcfd2918552eadd2434783dfb58dabc5061803a + languageName: node + linkType: hard + +"util@npm:^0.12.5, util@npm:~0.12.0": version: 0.12.5 resolution: "util@npm:0.12.5" dependencies: @@ -13925,15 +13621,6 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.10.4": - version: 0.10.4 - resolution: "util@npm:0.10.4" - dependencies: - inherits: "npm:2.0.3" - checksum: 10/1200a1ca2b474758342b3a0c5261c56f14ef09ad7eeaec3e6f449f5776ecdfce09a153cad62652b823e74647cdcfd2918552eadd2434783dfb58dabc5061803a - languageName: node - linkType: hard - "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -13985,8 +13672,8 @@ __metadata: linkType: hard "vite@npm:^7.1.2": - version: 7.1.7 - resolution: "vite@npm:7.1.7" + version: 7.1.9 + resolution: "vite@npm:7.1.9" dependencies: esbuild: "npm:^0.25.0" fdir: "npm:^6.5.0" @@ -14035,11 +13722,11 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/824703387717e1c90fac2e263021bf8ed5cddd5ac14f8c6ee80e54f8351be579869950438accb6daeb1e238f2108fddbadf98ec3cf8b0442f1fd8a25fb0ecab3 + checksum: 10/361b8dfea414233927761fdb63ec38c2cc4630007efc33a7a02ef9a5c033552c41b2e95f7fcc9acf427da5a3cf194d62dc5f0853bc31e940a13528d0fb180132 languageName: node linkType: hard -"vm-browserify@npm:^1.0.0, vm-browserify@npm:^1.0.1, vm-browserify@npm:^1.1.2": +"vm-browserify@npm:^1.0.0, vm-browserify@npm:^1.1.2": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" checksum: 10/ad5b17c9f7a9d9f1ed0e24c897782ab7a587c1fd40f370152482e1af154c7cf0b0bacc45c5ae76a44289881e083ae4ae127808fdff864aa9b562192aae8b5c3b @@ -14055,7 +13742,7 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.4.1": +"watchpack@npm:^2.4.4": version: 2.4.4 resolution: "watchpack@npm:2.4.4" dependencies: @@ -14121,7 +13808,7 @@ __metadata: languageName: node linkType: hard -"webpack-sources@npm:^3.2.3": +"webpack-sources@npm:^3.2.3, webpack-sources@npm:^3.3.3": version: 3.3.3 resolution: "webpack-sources@npm:3.3.3" checksum: 10/ec5d72607e8068467370abccbfff855c596c098baedbe9d198a557ccf198e8546a322836a6f74241492576adba06100286592993a62b63196832cdb53c8bae91 @@ -14129,19 +13816,20 @@ __metadata: linkType: hard "webpack@npm:^5.88.0": - version: 5.99.9 - resolution: "webpack@npm:5.99.9" + version: 5.102.0 + resolution: "webpack@npm:5.102.0" dependencies: "@types/eslint-scope": "npm:^3.7.7" - "@types/estree": "npm:^1.0.6" + "@types/estree": "npm:^1.0.8" "@types/json-schema": "npm:^7.0.15" "@webassemblyjs/ast": "npm:^1.14.1" "@webassemblyjs/wasm-edit": "npm:^1.14.1" "@webassemblyjs/wasm-parser": "npm:^1.14.1" - acorn: "npm:^8.14.0" - browserslist: "npm:^4.24.0" + acorn: "npm:^8.15.0" + acorn-import-phases: "npm:^1.0.3" + browserslist: "npm:^4.24.5" chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.1" + enhanced-resolve: "npm:^5.17.3" es-module-lexer: "npm:^1.2.1" eslint-scope: "npm:5.1.1" events: "npm:^3.2.0" @@ -14152,16 +13840,16 @@ __metadata: mime-types: "npm:^2.1.27" neo-async: "npm:^2.6.2" schema-utils: "npm:^4.3.2" - tapable: "npm:^2.1.1" + tapable: "npm:^2.2.3" terser-webpack-plugin: "npm:^5.3.11" - watchpack: "npm:^2.4.1" - webpack-sources: "npm:^3.2.3" + watchpack: "npm:^2.4.4" + webpack-sources: "npm:^3.3.3" peerDependenciesMeta: webpack-cli: optional: true bin: webpack: bin/webpack.js - checksum: 10/cf4a217239bcaa892f93702639ac837a16510edb7a1326955fb042d499d297cbdb16f20a81f3be6ec041b22ab47c599c757e505fdee1dd89b7f7a1ce4337fbf3 + checksum: 10/a76f9136c1c470e75a870b0f52b91f819224b21edf9f1959e0501cd17d38c9689e0ccd3ee6d0f7f0b764866d5bc6a1c6c9a38b235d75e2bfbc7ac25c94796da8 languageName: node linkType: hard @@ -14262,6 +13950,13 @@ __metadata: languageName: node linkType: hard +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 10/497d40beb2bdb08e6d38754faa17ce20b0bf1306327f80cb777927edb23f461ee1f6bc659b3c3c93f26b08e1cf4b46acc5bae8fda1f0be3b5ab9a1a0211034cd + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0"