diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc8a890..a572a97 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,6 +63,10 @@ jobs: - name: Deploy Demo-App contracts run: pnpm nx deploy-contracts demo-app + - name: Run tests + run: pnpm test + working-directory: packages/sdk + # Run E2E tests - name: Install Playwright Chromium Browser run: pnpm exec playwright install chromium diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e4a46f3..c6ff992 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -20,7 +20,8 @@ "build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./dist/_types --emitDeclarationOnly --declaration --declarationMap", "clean": "rm -rf *.tsbuildinfo dist", "typecheck": "tsc --noEmit", - "publish:local": "pnpm publish --no-git-checks --force" + "publish:local": "pnpm publish --no-git-checks --force", + "test": "vitest" }, "peerDependencies": { "@simplewebauthn/browser": "10.x", @@ -37,7 +38,8 @@ "@types/ms": "^0.7.34", "@types/node": "^22.1.0", "eventemitter3": "^5.0.1", - "viem": "2.21.14" + "viem": "2.21.14", + "vitest": "^2.1.8" }, "files": [ "*", diff --git a/packages/sdk/src/client/passkey/actions/account.test.ts b/packages/sdk/src/client/passkey/actions/account.test.ts new file mode 100644 index 0000000..88769d0 --- /dev/null +++ b/packages/sdk/src/client/passkey/actions/account.test.ts @@ -0,0 +1,228 @@ +import { type Address, type Hash, type TransactionReceipt } from "viem"; +import { waitForTransactionReceipt, writeContract } from "viem/actions"; +import { describe, expect, test, vi } from "vitest"; + +import { deployAccount } from "./account.js"; + +// Mock the passkey utils +vi.mock("../../../utils/passkey.js", () => ({ + getPublicKeyBytesFromPasskeySignature: vi.fn().mockReturnValue([ + Buffer.from("0000000000000000000000000000000000000000000000000000000000000001", "hex"), + Buffer.from("0000000000000000000000000000000000000000000000000000000000000002", "hex"), + ]), +})); + +// Mock viem actions +vi.mock("viem/actions", () => ({ + writeContract: vi.fn(), + waitForTransactionReceipt: vi.fn(), +})); + +// Add FactoryAbi mock at the top with other mocks +vi.mock("../../../abi/Factory.js", () => ({ + FactoryAbi: [ + { + inputs: [ + { type: "bytes32", name: "_salt" }, + { type: "string", name: "_uniqueAccountId" }, + { type: "bytes[]", name: "_initialValidators" }, + { type: "address[]", name: "_initialK1Owners" }, + ], + name: "deployProxySsoAccount", + outputs: [{ type: "address", name: "accountAddress" }], + stateMutability: "nonpayable", + type: "function", + }, + ], +})); + +describe("deployAccount", () => { + // Setup common test data + const mockSalt = new Uint8Array([ + 213, 36, 52, 69, 251, 82, 199, 45, 113, 6, 20, 213, 78, 47, 165, + 164, 106, 221, 105, 67, 247, 47, 200, 167, 137, 64, 151, 12, 179, + 74, 90, 23, + ]); + + // CBOR-encoded COSE key with known x,y coordinates + const mockCredentialPublicKey = new Uint8Array([ + 0xa5, // map of 5 pairs + 0x01, // key 1 (kty) + 0x02, // value 2 (EC2) + 0x03, // key 3 (alg) + 0x26, // value -7 (ES256) + 0x20, // key -1 (crv) + 0x01, // value 1 (P-256) + 0x21, // key -2 (x coordinate) + 0x58, 0x20, // bytes(32) + ...new Uint8Array(32).fill(0x01), // x coordinate filled with 0x01 + 0x22, // key -3 (y coordinate) + 0x58, 0x20, // bytes(32) + ...new Uint8Array(32).fill(0x02), // y coordinate filled with 0x02 + ]); + + const mockClient = { + account: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + chain: { id: 1 }, + } as any; + const mockContracts = { + accountFactory: "0x1234567890123456789012345678901234567890" as Address, + passkey: "0x2234567890123456789012345678901234567890" as Address, + session: "0x3234567890123456789012345678901234567890" as Address, + }; + + const mockTransactionHash = "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" as Hash; + const mockTransactionReceipt: TransactionReceipt = { + status: "success", + contractAddress: "0x4234567890123456789012345678901234567890", + blockNumber: 1n, + blockHash: "0x5e1d3a76f1b1c3a2b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7" as Hash, + transactionHash: mockTransactionHash, + logs: [], + logsBloom: "0x", + cumulativeGasUsed: 0n, + effectiveGasPrice: 0n, + gasUsed: 0n, + type: "eip1559", + from: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + to: "0x1234567890123456789012345678901234567890", + transactionIndex: 0, + }; + + test("deploys account successfully", async () => { + // Setup mocks + vi.mocked(writeContract).mockResolvedValue(mockTransactionHash); + vi.mocked(waitForTransactionReceipt).mockResolvedValue(mockTransactionReceipt); + + const result = await deployAccount(mockClient, { + credentialPublicKey: mockCredentialPublicKey, + contracts: mockContracts, + expectedOrigin: "https://example.com", + salt: mockSalt, + }); + + // Verify the result + expect(result).toEqual({ + address: "0x4234567890123456789012345678901234567890", + transactionReceipt: mockTransactionReceipt, + }); + + // Verify writeContract was called with correct parameters + expect(writeContract).toHaveBeenCalledWith( + mockClient, + expect.objectContaining({ + address: mockContracts.accountFactory, + functionName: "deployProxySsoAccount", + }), + ); + }); + + test("handles transaction failure", async () => { + // Setup mock for failed transaction + vi.mocked(writeContract).mockResolvedValue(mockTransactionHash); + vi.mocked(waitForTransactionReceipt).mockResolvedValue({ + ...mockTransactionReceipt, + status: "reverted", + }); + + await expect( + deployAccount(mockClient, { + credentialPublicKey: mockCredentialPublicKey, + contracts: mockContracts, + expectedOrigin: "https://example.com", + salt: mockSalt, + }), + ).rejects.toThrow("Account deployment transaction reverted"); + }); + + test("handles missing contract address in receipt", async () => { + // Setup mock for missing contract address + vi.mocked(writeContract).mockResolvedValue(mockTransactionHash); + vi.mocked(waitForTransactionReceipt).mockResolvedValue({ + ...mockTransactionReceipt, + contractAddress: null, + }); + + await expect( + deployAccount(mockClient, { + credentialPublicKey: mockCredentialPublicKey, + contracts: mockContracts, + expectedOrigin: "https://example.com", + salt: mockSalt, + }), + ).rejects.toThrow("No contract address in transaction receipt"); + }); + + test("calls onTransactionSent callback when provided", async () => { + const onTransactionSent = vi.fn(); + vi.mocked(writeContract).mockResolvedValue(mockTransactionHash); + vi.mocked(waitForTransactionReceipt).mockResolvedValue(mockTransactionReceipt); + + await deployAccount(mockClient, { + credentialPublicKey: mockCredentialPublicKey, + contracts: mockContracts, + expectedOrigin: "https://example.com", + salt: mockSalt, + onTransactionSent, + }); + + expect(onTransactionSent).toHaveBeenCalledWith(mockTransactionHash); + }); + + test("uses window.location.origin when expectedOrigin is not provided", async () => { + // Mock window.location + const originalWindow = global.window; + global.window = { + ...originalWindow, + location: { + ...originalWindow?.location, + origin: "https://example.com", + }, + } as any; + + vi.mocked(writeContract).mockResolvedValue(mockTransactionHash); + vi.mocked(waitForTransactionReceipt).mockResolvedValue(mockTransactionReceipt); + + const writeContractSpy = vi.mocked(writeContract); + await deployAccount(mockClient, { + credentialPublicKey: mockCredentialPublicKey, + contracts: mockContracts, + salt: mockSalt, + }); + + // Simpler assertion that just checks the key parts + const lastCall = writeContractSpy.mock.lastCall; + expect(lastCall?.[0]).toBe(mockClient); + expect(lastCall?.[1]).toMatchObject({ + address: mockContracts.accountFactory, + functionName: "deployProxySsoAccount", + }); + + // Restore window + global.window = originalWindow; + }); + + test("handles paymaster configuration", async () => { + vi.mocked(writeContract).mockResolvedValue(mockTransactionHash); + vi.mocked(waitForTransactionReceipt).mockResolvedValue(mockTransactionReceipt); + + const paymasterAddress = "0x5234567890123456789012345678901234567890" as Address; + const paymasterInput = "0x1234" as const; + + await deployAccount(mockClient, { + credentialPublicKey: mockCredentialPublicKey, + contracts: mockContracts, + expectedOrigin: "https://example.com", + paymasterAddress, + paymasterInput, + }); + + expect(writeContract).toHaveBeenCalledWith( + mockClient, + expect.objectContaining({ + paymaster: paymasterAddress, + paymasterInput, + }), + ); + }); +}); diff --git a/packages/sdk/src/utils/encoding.test.ts b/packages/sdk/src/utils/encoding.test.ts new file mode 100644 index 0000000..40c4cf4 --- /dev/null +++ b/packages/sdk/src/utils/encoding.test.ts @@ -0,0 +1,47 @@ +import { describe, expect, test } from "vitest"; + +import { encodeModuleData, encodePasskeyModuleParameters } from "./encoding"; + +describe("encoding utils", () => { + describe("encodePasskeyModuleParameters", () => { + test("correctly encodes passkey parameters", () => { + const passkey = { + passkeyPublicKey: [ + Buffer.from("1234567890123456789012345678901234567890123456789012345678901234", "hex"), + Buffer.from("abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd", "hex"), + ], + expectedOrigin: "https://example.com", + }; + + const encoded = encodePasskeyModuleParameters(passkey); + + // The encoding should be a hex string + expect(encoded).toMatch(/^0x[0-9a-f]+$/i); + + // Should contain both public key components and the origin + expect(encoded).toContain("1234567890123456789012345678901234567890123456789012345678901234"); + expect(encoded).toContain("abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd"); + expect(encoded).toContain(Buffer.from("https://example.com").toString("hex")); + expect(encoded).toEqual("0x1234567890123456789012345678901234567890123456789012345678901234abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001368747470733a2f2f6578616d706c652e636f6d00000000000000000000000000"); + }); + }); + + describe("encodeModuleData", () => { + test("correctly encodes module data", () => { + const moduleData = { + address: "0x1234567890123456789012345678901234567890" as const, + parameters: "0xabcdef" as const, + }; + + const encoded = encodeModuleData(moduleData); + + // The encoding should be a hex string + expect(encoded).toMatch(/^0x[0-9a-f]+$/i); + + // Should contain both the address and parameters + expect(encoded.toLowerCase()).toContain(moduleData.address.slice(2).toLowerCase()); + expect(encoded.toLowerCase()).toContain(moduleData.parameters.slice(2).toLowerCase()); + expect(encoded).toEqual("0x000000000000000000000000123456789012345678901234567890123456789000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003abcdef0000000000000000000000000000000000000000000000000000000000"); + }); + }); +}); diff --git a/packages/sdk/src/utils/passkey.test.ts b/packages/sdk/src/utils/passkey.test.ts new file mode 100644 index 0000000..a03aa05 --- /dev/null +++ b/packages/sdk/src/utils/passkey.test.ts @@ -0,0 +1,88 @@ +import { describe, expect, test } from "vitest"; + +import { + getPasskeySignatureFromPublicKeyBytes, + getPublicKeyBytesFromPasskeySignature, +} from "./passkey"; + +describe("passkey utils", () => { + describe("getPublicKeyBytesFromPasskeySignature", () => { + test("correctly decodes CBOR-encoded COSE key", () => { + // This is a sample CBOR-encoded COSE key with known x,y coordinates + // Format: map with 5 entries: + // 1: 2 (kty: EC2) + // 3: -7 (alg: ES256) + // -1: 1 (crv: P-256) + // -2: x coordinate (32 bytes) + // -3: y coordinate (32 bytes) + const samplePublicKey = new Uint8Array([ + 0xa5, // map of 5 pairs + 0x01, // key 1 (kty) + 0x02, // value 2 (EC2) + 0x03, // key 3 (alg) + 0x26, // value -7 (ES256) + 0x20, // key -1 (crv) + 0x01, // value 1 (P-256) + 0x21, // key -2 (x coordinate) + 0x58, + 0x20, // bytes(32) + ...new Uint8Array(32).fill(0x01), // x coordinate filled with 0x01 + 0x22, // key -3 (y coordinate) + 0x58, + 0x20, // bytes(32) + ...new Uint8Array(32).fill(0x02), // y coordinate filled with 0x02 + ]); + + const [x, y] = getPublicKeyBytesFromPasskeySignature(samplePublicKey); + + // Check that x coordinate is all 0x01 + expect(Buffer.from(x).every((byte) => byte === 0x01)).toBe(true); + // Check that y coordinate is all 0x02 + expect(Buffer.from(y).every((byte) => byte === 0x02)).toBe(true); + // Check lengths + expect(x.length).toBe(32); + expect(y.length).toBe(32); + }); + + test("roundtrip conversion works", () => { + // Create sample x,y coordinates as hex strings + const xHex = "0x" + "01".repeat(32); + const yHex = "0x" + "02".repeat(32); + + // Convert to COSE format + const coseKey = getPasskeySignatureFromPublicKeyBytes([xHex, yHex]); + + // Convert back to coordinates + const [x, y] = getPublicKeyBytesFromPasskeySignature(coseKey); + + // Check that we got back our original values + expect(Buffer.from(x).toString("hex")).toBe(xHex.slice(2)); + expect(Buffer.from(y).toString("hex")).toBe(yHex.slice(2)); + }); + + test("throws on invalid CBOR data", () => { + const invalidCBOR = new Uint8Array([0xff, 0xff, 0xff]); // Invalid CBOR bytes + + expect(() => { + getPublicKeyBytesFromPasskeySignature(invalidCBOR); + }).toThrow(); + }); + + test("throws if x or y coordinates are missing", () => { + // CBOR map with only kty, alg, and crv (missing x,y) + const incompleteCOSE = new Uint8Array([ + 0xa3, // map of 3 pairs + 0x01, // key 1 (kty) + 0x02, // value 2 (EC2) + 0x03, // key 3 (alg) + 0x26, // value -7 (ES256) + 0x20, // key -1 (crv) + 0x01, // value 1 (P-256) + ]); + + expect(() => { + getPublicKeyBytesFromPasskeySignature(incompleteCOSE); + }).toThrow(); + }); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94760d1..e5ae899 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,10 +29,10 @@ importers: version: 19.8.2(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2) '@nx/nuxt': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(magicast@0.3.5)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(rollup@4.24.0)(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + version: 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(magicast@0.3.5)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(rollup@4.24.0)(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) '@nx/vite': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + version: 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) '@simplewebauthn/browser': specifier: ^10.0.0 version: 10.0.0 @@ -663,6 +663,9 @@ importers: viem: specifier: 2.21.14 version: 2.21.14(bufferutil@4.0.8)(typescript@5.6.2)(utf-8-validate@5.0.10)(zod@3.22.4) + vitest: + specifier: ^2.1.8 + version: 2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) packages: @@ -4673,14 +4676,13 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/expect@2.1.3': - resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} + '@vitest/expect@2.1.8': + resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} - '@vitest/mocker@2.1.3': - resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} + '@vitest/mocker@2.1.8': + resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} peerDependencies: - '@vitest/spy': 2.1.3 - msw: ^2.3.5 + msw: ^2.4.9 vite: ^5.0.0 peerDependenciesMeta: msw: @@ -4688,20 +4690,20 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.3': - resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + '@vitest/pretty-format@2.1.8': + resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - '@vitest/runner@2.1.3': - resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + '@vitest/runner@2.1.8': + resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} - '@vitest/snapshot@2.1.3': - resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + '@vitest/snapshot@2.1.8': + resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} - '@vitest/spy@2.1.3': - resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + '@vitest/spy@2.1.8': + resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} - '@vitest/utils@2.1.3': - resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} + '@vitest/utils@2.1.8': + resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} '@voxpelli/config-array-find-files@1.2.1': resolution: {integrity: sha512-mRqVGLcK+yU+fQyaHAL9Xbhw633spi+VGurX1+gwSiZS8SzX63WzOmGi3qXO7mn4cozJcExyzIC5WmbUFJWQOw==} @@ -6843,6 +6845,10 @@ packages: resolution: {integrity: sha512-5eo/BRqZm3GYce+1jqX/tJ7duA2AnE39i88fuedNFUV8XxGxUpF3aWkBRfbUcjV49gCkvS/pzc0YrCPhaIewdg==} engines: {node: ^18.19.0 || >=20.5.0} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} @@ -10812,6 +10818,11 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-node@2.1.8: + resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-plugin-checker@0.8.0: resolution: {integrity: sha512-UA5uzOGm97UvZRTdZHiQVYFnd86AVn8EVaD4L3PoVzxH+IZSfaAw14WGFwX9QS23UW3lV/5bVKZn6l0w+q9P0g==} engines: {node: '>=14.16'} @@ -10892,15 +10903,15 @@ packages: terser: optional: true - vitest@2.1.3: - resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} + vitest@2.1.8: + resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.3 - '@vitest/ui': 2.1.3 + '@vitest/browser': 2.1.8 + '@vitest/ui': 2.1.8 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -13551,7 +13562,7 @@ snapshots: - encoding - supports-color - '@matterlabs/hardhat-zksync-deploy@1.5.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(zksync-ethers@6.15.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))': + '@matterlabs/hardhat-zksync-deploy@1.5.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(zksync-ethers@6.15.0(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)))': dependencies: '@matterlabs/hardhat-zksync-solc': 1.2.5(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) chai: 4.5.0 @@ -13564,7 +13575,7 @@ snapshots: sinon: 18.0.1 sinon-chai: 3.7.0(chai@4.5.0)(sinon@18.0.1) ts-morph: 22.0.0 - zksync-ethers: 6.15.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + zksync-ethers: 6.15.0(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)) transitivePeerDependencies: - encoding - supports-color @@ -13606,16 +13617,16 @@ snapshots: - typescript - utf-8-validate - '@matterlabs/hardhat-zksync-ethers@1.2.1(bufferutil@4.0.8)(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)(zksync-ethers@6.15.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))': + '@matterlabs/hardhat-zksync-ethers@1.2.1(bufferutil@4.0.8)(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)(zksync-ethers@6.15.0(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)))': dependencies: - '@matterlabs/hardhat-zksync-deploy': 1.5.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(zksync-ethers@6.15.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))) + '@matterlabs/hardhat-zksync-deploy': 1.5.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(zksync-ethers@6.15.0(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))) '@matterlabs/hardhat-zksync-solc': 1.2.5(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) chai: 4.5.0 chalk: 4.1.2 ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) hardhat: 2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) - zksync-ethers: 6.15.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + zksync-ethers: 6.15.0(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)) transitivePeerDependencies: - bufferutil - c-kzg @@ -13736,8 +13747,8 @@ snapshots: '@matterlabs/hardhat-zksync-upgradable@1.7.0(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-verify@2.0.11(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)': dependencies: - '@matterlabs/hardhat-zksync-deploy': 1.5.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(zksync-ethers@6.15.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))) - '@matterlabs/hardhat-zksync-ethers': 1.2.1(bufferutil@4.0.8)(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)(zksync-ethers@6.15.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))) + '@matterlabs/hardhat-zksync-deploy': 1.5.0(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(zksync-ethers@6.15.0(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))) + '@matterlabs/hardhat-zksync-ethers': 1.2.1(bufferutil@4.0.8)(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)(zksync-ethers@6.15.0(ethers@6.13.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))) '@matterlabs/hardhat-zksync-solc': 1.2.5(hardhat@2.22.17(bufferutil@4.0.8)(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@20.16.10)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) '@openzeppelin/contracts-hardhat-zksync-upgradable': '@openzeppelin/contracts@5.1.0' '@openzeppelin/defender-sdk-base-client': 1.15.0 @@ -14670,9 +14681,9 @@ snapshots: - '@swc/core' - debug - '@nrwl/vite@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': + '@nrwl/vite@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': dependencies: - '@nx/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + '@nx/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -15057,8 +15068,8 @@ snapshots: dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.24.0) '@rollup/plugin-replace': 5.0.7(rollup@4.24.0) - '@vitejs/plugin-vue': 5.1.4(vite@5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2)) - '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2)) + '@vitejs/plugin-vue': 5.1.4(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2)) + '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2)) autoprefixer: 10.4.20(postcss@8.4.47) clear: 0.1.0 consola: 3.2.3 @@ -15086,7 +15097,7 @@ snapshots: unplugin: 1.14.1 vite: 5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0) vite-node: 2.1.3(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0) - vite-plugin-checker: 0.8.0(eslint@9.11.1(jiti@2.4.1))(optionator@0.9.4)(typescript@5.6.2)(vite@5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0)) + vite-plugin-checker: 0.8.0(eslint@9.11.1(jiti@2.4.1))(optionator@0.9.4)(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) vue: 3.5.12(typescript@5.6.2) vue-bundle-renderer: 2.1.1 transitivePeerDependencies: @@ -15205,7 +15216,7 @@ snapshots: pathe: 1.1.2 pkg-types: 1.2.1 sirv: 3.0.0 - std-env: 3.7.0 + std-env: 3.8.0 ufo: 1.5.4 transitivePeerDependencies: - magicast @@ -15504,14 +15515,14 @@ snapshots: - supports-color - verdaccio - '@nx/nuxt@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(magicast@0.3.5)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(rollup@4.24.0)(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': + '@nx/nuxt@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(magicast@0.3.5)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(rollup@4.24.0)(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.24.0) '@nx/devkit': 19.8.0(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))) '@nx/eslint': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))) '@nx/js': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2) - '@nx/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) - '@nx/vue': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + '@nx/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + '@nx/vue': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.6.2) tslib: 2.8.0 transitivePeerDependencies: @@ -15623,9 +15634,9 @@ snapshots: '@nx/nx-win32-x64-msvc@19.8.6': optional: true - '@nx/vite@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': + '@nx/vite@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': dependencies: - '@nrwl/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + '@nrwl/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) '@nx/devkit': 19.8.0(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))) '@nx/js': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.6.2) @@ -15634,7 +15645,7 @@ snapshots: minimatch: 9.0.3 tsconfig-paths: 4.2.0 vite: 5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) - vitest: 2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) + vitest: 2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -15647,12 +15658,12 @@ snapshots: - typescript - verdaccio - '@nx/vue@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': + '@nx/vue@19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': dependencies: '@nx/devkit': 19.8.0(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))) '@nx/eslint': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1(jiti@2.4.1))(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))) '@nx/js': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2) - '@nx/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + '@nx/vite': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) '@nx/web': 19.8.0(@babel/traverse@7.25.9)(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.8.0)(nx@19.8.6(@swc-node/register@1.10.9(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.6.2))(@swc/core@1.7.26(@swc/helpers@0.5.13)))(typescript@5.6.2) minimatch: 9.0.3 tslib: 2.8.0 @@ -16167,7 +16178,7 @@ snapshots: estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.12 + magic-string: 0.30.14 optionalDependencies: rollup: 4.24.0 @@ -16175,7 +16186,7 @@ snapshots: dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.24.0) estree-walker: 2.0.2 - magic-string: 0.30.12 + magic-string: 0.30.14 optionalDependencies: rollup: 4.24.0 @@ -16198,7 +16209,7 @@ snapshots: '@rollup/plugin-replace@5.0.7(rollup@4.24.0)': dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.24.0) - magic-string: 0.30.12 + magic-string: 0.30.14 optionalDependencies: rollup: 4.24.0 @@ -17006,7 +17017,7 @@ snapshots: '@rollup/pluginutils': 5.1.3(rollup@4.24.0) '@unhead/schema': 1.11.10 '@unhead/shared': 1.11.10 - magic-string: 0.30.12 + magic-string: 0.30.14 mlly: 1.7.3 ufo: 1.5.4 unplugin: 1.14.1 @@ -17088,16 +17099,6 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2))': - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) - '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) - vite: 5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0) - vue: 3.5.12(typescript@5.6.2) - transitivePeerDependencies: - - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2))': dependencies: '@babel/core': 7.26.0 @@ -17108,53 +17109,48 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.4(vite@5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2))': - dependencies: - vite: 5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0) - vue: 3.5.12(typescript@5.6.2) - '@vitejs/plugin-vue@5.1.4(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vue@3.5.12(typescript@5.6.2))': dependencies: vite: 5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) vue: 3.5.12(typescript@5.6.2) - '@vitest/expect@2.1.3': + '@vitest/expect@2.1.8': dependencies: - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/spy': 2.1.8 + '@vitest/utils': 2.1.8 chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': + '@vitest/mocker@2.1.8(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))': dependencies: - '@vitest/spy': 2.1.3 + '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.14 optionalDependencies: vite: 5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) - '@vitest/pretty-format@2.1.3': + '@vitest/pretty-format@2.1.8': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.3': + '@vitest/runner@2.1.8': dependencies: - '@vitest/utils': 2.1.3 + '@vitest/utils': 2.1.8 pathe: 1.1.2 - '@vitest/snapshot@2.1.3': + '@vitest/snapshot@2.1.8': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.8 magic-string: 0.30.14 pathe: 1.1.2 - '@vitest/spy@2.1.3': + '@vitest/spy@2.1.8': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.3': + '@vitest/utils@2.1.8': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.8 loupe: 3.1.2 tinyrainbow: 1.2.0 @@ -17240,7 +17236,7 @@ snapshots: '@vue/compiler-ssr': 3.5.12 '@vue/shared': 3.5.12 estree-walker: 2.0.2 - magic-string: 0.30.12 + magic-string: 0.30.14 postcss: 8.4.49 source-map-js: 1.2.1 @@ -17252,7 +17248,7 @@ snapshots: '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 - magic-string: 0.30.12 + magic-string: 0.30.14 postcss: 8.4.49 source-map-js: 1.2.1 @@ -20495,6 +20491,8 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.1 + expect-type@1.1.0: {} + exponential-backoff@3.1.1: {} extension-port-stream@3.0.0: @@ -22007,7 +22005,7 @@ snapshots: mlly: 1.7.2 node-forge: 1.3.1 pathe: 1.1.2 - std-env: 3.7.0 + std-env: 3.8.0 ufo: 1.5.4 untun: 0.1.3 uqr: 0.1.2 @@ -22160,7 +22158,7 @@ snapshots: magic-string-ast@0.6.2: dependencies: - magic-string: 0.30.12 + magic-string: 0.30.14 magic-string@0.30.12: dependencies: @@ -22816,7 +22814,7 @@ snapshots: cheerio: 1.0.0 diff: 7.0.0 fuse.js: 7.0.0 - magic-string: 0.30.12 + magic-string: 0.30.14 nuxt-site-config: 2.2.18(magicast@0.3.5)(rollup@4.24.0)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vue@3.5.13(typescript@5.6.2)) nuxt-site-config-kit: 2.2.18(magicast@0.3.5)(rollup@4.24.0)(vue@3.5.13(typescript@5.6.2)) pathe: 1.1.2 @@ -22846,7 +22844,7 @@ snapshots: defu: 6.1.4 execa: 9.4.1 image-size: 1.1.1 - magic-string: 0.30.12 + magic-string: 0.30.14 nuxt-site-config: 2.2.18(magicast@0.3.5)(rollup@4.24.0)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0))(vue@3.5.13(typescript@5.6.2)) nuxt-site-config-kit: 2.2.18(magicast@0.3.5)(rollup@4.24.0)(vue@3.5.13(typescript@5.6.2)) nypm: 0.3.12 @@ -22859,7 +22857,7 @@ snapshots: satori: 0.11.2 satori-html: 0.3.2 sirv: 3.0.0 - std-env: 3.7.0 + std-env: 3.8.0 strip-literal: 2.1.0 ufo: 1.5.4 unplugin: 1.14.1 @@ -22916,7 +22914,7 @@ snapshots: '@nuxt/schema': 3.13.2(rollup@4.24.0) pkg-types: 1.2.1 site-config-stack: 2.2.18(vue@3.5.13(typescript@5.6.2)) - std-env: 3.7.0 + std-env: 3.8.0 ufo: 1.5.4 transitivePeerDependencies: - magicast @@ -23122,7 +23120,7 @@ snapshots: vue: 3.5.12(typescript@5.6.2) vue-bundle-renderer: 2.1.1 vue-devtools-stub: 0.1.0 - vue-router: 4.4.5(vue@3.5.13(typescript@5.6.2)) + vue-router: 4.4.5(vue@3.5.12(typescript@5.6.2)) optionalDependencies: '@parcel/watcher': 2.4.1 '@types/node': 22.8.0 @@ -25520,7 +25518,7 @@ snapshots: unplugin: 1.14.1 yaml: 2.6.0 optionalDependencies: - vue-router: 4.4.5(vue@3.5.13(typescript@5.6.2)) + vue-router: 4.4.5(vue@3.5.12(typescript@5.6.2)) transitivePeerDependencies: - rollup - vue @@ -25575,7 +25573,7 @@ snapshots: unwasm@0.3.9: dependencies: knitwork: 1.1.0 - magic-string: 0.30.12 + magic-string: 0.30.14 mlly: 1.7.2 pathe: 1.1.2 pkg-types: 1.2.1 @@ -25699,27 +25697,23 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.8.0(eslint@9.11.1(jiti@2.4.1))(optionator@0.9.4)(typescript@5.6.2)(vite@5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0)): + vite-node@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0): dependencies: - '@babel/code-frame': 7.26.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - chokidar: 3.6.0 - commander: 8.3.0 - fast-glob: 3.3.2 - fs-extra: 11.2.0 - npm-run-path: 4.0.1 - strip-ansi: 6.0.1 - tiny-invariant: 1.3.3 - vite: 5.4.10(@types/node@20.16.10)(sass@1.80.4)(terser@5.36.0) - vscode-languageclient: 7.0.0 - vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - optionalDependencies: - eslint: 9.11.1(jiti@2.4.1) - optionator: 0.9.4 - typescript: 5.6.2 + cac: 6.7.14 + debug: 4.3.7(supports-color@8.1.1) + es-module-lexer: 1.5.4 + pathe: 1.1.2 + vite: 5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser vite-plugin-checker@0.8.0(eslint@9.11.1(jiti@2.4.1))(optionator@0.9.4)(typescript@5.6.2)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)): dependencies: @@ -25771,7 +25765,7 @@ snapshots: '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) '@vue/compiler-dom': 3.5.12 kolorist: 1.8.0 - magic-string: 0.30.12 + magic-string: 0.30.14 vite: 5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: - supports-color @@ -25798,17 +25792,18 @@ snapshots: sass: 1.80.4 terser: 5.36.0 - vitest@2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0): + vitest@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/expect': 2.1.8 + '@vitest/mocker': 2.1.8(vite@5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0)) + '@vitest/pretty-format': 2.1.8 + '@vitest/runner': 2.1.8 + '@vitest/snapshot': 2.1.8 + '@vitest/spy': 2.1.8 + '@vitest/utils': 2.1.8 chai: 5.1.2 debug: 4.3.7(supports-color@8.1.1) + expect-type: 1.1.0 magic-string: 0.30.14 pathe: 1.1.2 std-env: 3.8.0 @@ -25817,7 +25812,7 @@ snapshots: tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.4.10(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.8.0 @@ -25889,11 +25884,6 @@ snapshots: '@vue/devtools-api': 6.6.4 vue: 3.5.12(typescript@5.6.2) - vue-router@4.4.5(vue@3.5.13(typescript@5.6.2)): - dependencies: - '@vue/devtools-api': 6.6.4 - vue: 3.5.13(typescript@5.6.2) - vue-router@4.5.0(vue@3.5.13(typescript@5.6.2)): dependencies: '@vue/devtools-api': 6.6.4