diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 149d244..858c8ed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,6 +52,10 @@ jobs: run: pnpm run deploy working-directory: packages/contracts + - 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..44d8a5a --- /dev/null +++ b/packages/sdk/src/client/passkey/actions/account.test.ts @@ -0,0 +1,228 @@ +import { describe, expect, test, vi } from 'vitest' +import { type Address, type Hash, type TransactionReceipt } from 'viem' +import { writeContract, waitForTransactionReceipt } from 'viem/actions' +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 = '0xhash' as Hash + const mockTransactionReceipt: TransactionReceipt = { + status: 'success', + contractAddress: '0x4234567890123456789012345678901234567890', + blockNumber: 1n, + blockHash: '0xblockhash' 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, + }) + ) + }) +}) \ No newline at end of file diff --git a/packages/sdk/src/utils/encoding.test.ts b/packages/sdk/src/utils/encoding.test.ts new file mode 100644 index 0000000..7d7b207 --- /dev/null +++ b/packages/sdk/src/utils/encoding.test.ts @@ -0,0 +1,46 @@ +import { describe, expect, test } from 'vitest'; +import { encodePasskeyModuleParameters, encodeModuleData, encodeSession, encodeSessionTx } 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); + + console.log("XDBG - encoding.test.ts - encoded: ", encoded); + + // 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')); + }); + }); + + 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()); + }); + }); +}); \ No newline at end of file diff --git a/packages/sdk/src/utils/passkey.test.ts b/packages/sdk/src/utils/passkey.test.ts new file mode 100644 index 0000000..648c98b --- /dev/null +++ b/packages/sdk/src/utils/passkey.test.ts @@ -0,0 +1,87 @@ +import { describe, expect, test } from "vitest"; +import { + getPublicKeyBytesFromPasskeySignature, + getPasskeySignatureFromPublicKeyBytes, +} 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(); + }); + }); +}); \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 475f031..70ecd47 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 @@ -660,6 +660,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: @@ -4670,14 +4673,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: @@ -4685,20 +4687,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==} @@ -6837,6 +6839,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==} @@ -10806,6 +10812,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'} @@ -10886,15 +10897,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: @@ -14563,12 +14574,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@nrwl/devkit@19.8.0(nx@19.8.0(@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)))': - dependencies: - '@nx/devkit': 19.8.0(nx@19.8.0(@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))) - transitivePeerDependencies: - - nx - '@nrwl/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)))': 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))) @@ -14659,9 +14664,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' @@ -15194,7 +15199,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 @@ -15278,7 +15283,7 @@ snapshots: '@nx/devkit@19.8.0(nx@19.8.0(@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)))': dependencies: - '@nrwl/devkit': 19.8.0(nx@19.8.0(@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))) + '@nrwl/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))) ejs: 3.1.10 enquirer: 2.3.6 ignore: 5.3.2 @@ -15493,14 +15498,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: @@ -15612,9 +15617,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) @@ -15623,7 +15628,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' @@ -15636,12 +15641,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 @@ -16156,7 +16161,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 @@ -16164,7 +16169,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 @@ -16187,7 +16192,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 @@ -16995,7 +17000,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 @@ -17092,43 +17097,43 @@ snapshots: 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 @@ -17214,7 +17219,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 @@ -17226,7 +17231,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 @@ -20469,6 +20474,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: @@ -21981,7 +21988,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 @@ -22134,7 +22141,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: @@ -22790,7 +22797,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 @@ -22820,7 +22827,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 @@ -22833,7 +22840,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 @@ -22890,7 +22897,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 @@ -25549,7 +25556,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 @@ -25673,6 +25680,24 @@ snapshots: - supports-color - terser + vite-node@2.1.8(@types/node@22.8.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + 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: '@babel/code-frame': 7.26.0 @@ -25723,7 +25748,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 @@ -25750,17 +25775,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 @@ -25769,7 +25795,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