diff --git a/packages/query-core/package.json b/packages/query-core/package.json index 69d154e7a5..006f4d7907 100644 --- a/packages/query-core/package.json +++ b/packages/query-core/package.json @@ -58,7 +58,6 @@ "!src/__tests__" ], "devDependencies": { - "@testing-library/dom": "^10.4.0", "npm-run-all2": "^5.0.0" } } diff --git a/packages/query-core/src/__tests__/queryObserver.test.tsx b/packages/query-core/src/__tests__/queryObserver.test.tsx index 6b44576de5..a977a4f735 100644 --- a/packages/query-core/src/__tests__/queryObserver.test.tsx +++ b/packages/query-core/src/__tests__/queryObserver.test.tsx @@ -7,7 +7,6 @@ import { test, vi, } from 'vitest' -import { waitFor } from '@testing-library/dom' import { QueryObserver, focusManager } from '..' import { createQueryClient, queryKey, sleep } from './utils' import type { QueryClient, QueryObserverResult } from '..' @@ -16,6 +15,7 @@ describe('queryObserver', () => { let queryClient: QueryClient beforeEach(() => { + vi.useFakeTimers() queryClient = createQueryClient({ defaultOptions: { queries: { @@ -28,6 +28,7 @@ describe('queryObserver', () => { afterEach(() => { queryClient.clear() + vi.useRealTimers() }) test('should trigger a fetch when subscribed', async () => { @@ -37,7 +38,6 @@ describe('queryObserver', () => { .mockReturnValue('data') const observer = new QueryObserver(queryClient, { queryKey: key, queryFn }) const unsubscribe = observer.subscribe(() => undefined) - await sleep(1) unsubscribe() expect(queryFn).toHaveBeenCalledTimes(1) }) @@ -109,7 +109,7 @@ describe('queryObserver', () => { fetchStatus: 'idle', data: undefined, }) - await waitFor(() => expect(count).toBe(0)) + await vi.waitFor(() => expect(count).toBe(0)) unsubscribe() }) @@ -128,7 +128,7 @@ describe('queryObserver', () => { data: undefined, }) - await waitFor(() => expect(count).toBe(1)) + await vi.waitFor(() => expect(count).toBe(1)) expect(observer.getCurrentResult()).toMatchObject({ status: 'success', fetchStatus: 'idle', @@ -158,7 +158,7 @@ describe('queryObserver', () => { data: undefined, }) - await waitFor(() => expect(count).toBe(1)) + await vi.waitFor(() => expect(count).toBe(1)) unsubscribe() }) @@ -194,7 +194,7 @@ describe('queryObserver', () => { fetchStatus: 'fetching', data: undefined, }) - await waitFor(() => expect(count).toBe(1)) + await vi.waitFor(() => expect(count).toBe(1)) unsubscribe() }) @@ -208,12 +208,12 @@ describe('queryObserver', () => { queryClient.invalidateQueries({ queryKey: key, refetchType: 'inactive' }) // should not refetch since it was active and we only refetch inactive - await waitFor(() => expect(count).toBe(0)) + await vi.waitFor(() => expect(count).toBe(0)) queryClient.invalidateQueries({ queryKey: key, refetchType: 'active' }) // should refetch since it was active and we refetch active - await waitFor(() => expect(count).toBe(1)) + await vi.waitFor(() => expect(count).toBe(1)) // Toggle enabled enabled = false @@ -221,7 +221,7 @@ describe('queryObserver', () => { // should not refetch since it is not active and we only refetch active queryClient.invalidateQueries({ queryKey: key, refetchType: 'active' }) - await waitFor(() => expect(count).toBe(1)) + await vi.waitFor(() => expect(count).toBe(1)) unsubscribe() }) @@ -251,7 +251,7 @@ describe('queryObserver', () => { data: undefined, }) - await waitFor(() => expect(count).toBe(1)) + await vi.waitFor(() => expect(count).toBe(1)) // re-subscribe after data comes in unsubscribe = observer.subscribe(vi.fn()) @@ -275,9 +275,9 @@ describe('queryObserver', () => { const unsubscribe = observer.subscribe((result) => { results.push(result) }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) observer.setOptions({ queryKey: key2, queryFn: () => 2 }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(results.length).toBe(4) expect(results[0]).toMatchObject({ data: undefined, status: 'pending' }) @@ -300,7 +300,7 @@ describe('queryObserver', () => { >() observerResult = result }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(observerResult).toMatchObject({ data: { myCount: 1 } }) }) @@ -330,7 +330,7 @@ describe('queryObserver', () => { const unsubscribe = observer.subscribe((result) => { observerResult = result }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(observerResult).toMatchObject({ data: { myCount: 1 } }) }) @@ -374,13 +374,13 @@ describe('queryObserver', () => { const unsubscribe = observer.subscribe((result) => { results.push(result) }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) observer.setOptions({ queryKey: key, queryFn, select: select2, }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) await observer.refetch() unsubscribe() expect(count).toBe(2) @@ -429,13 +429,13 @@ describe('queryObserver', () => { const unsubscribe = observer.subscribe((result) => { results.push(result) }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) observer.setOptions({ queryKey: key, queryFn, select, }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) await observer.refetch() unsubscribe() expect(count).toBe(1) @@ -497,8 +497,9 @@ describe('queryObserver', () => { const unsubscribe = observer.subscribe((result) => { results.push(result) }) - await sleep(50) - await observer.refetch() + await vi.advanceTimersByTimeAsync(50) + observer.refetch() + await vi.advanceTimersByTimeAsync(10) unsubscribe() expect(results[0]).toMatchObject({ status: 'pending', @@ -546,8 +547,9 @@ describe('queryObserver', () => { const unsubscribe = observer.subscribe((result) => { results.push(result) }) - await sleep(50) - await observer.refetch() + await vi.advanceTimersByTimeAsync(50) + observer.refetch() + await vi.advanceTimersByTimeAsync(10) unsubscribe() expect(results[0]).toMatchObject({ @@ -601,7 +603,7 @@ describe('queryObserver', () => { enabled: false, }) const unsubscribe = observer.subscribe(() => undefined) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(queryFn).toHaveBeenCalledTimes(0) }) @@ -617,7 +619,7 @@ describe('queryObserver', () => { enabled: () => false, }) const unsubscribe = observer.subscribe(() => undefined) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(queryFn).toHaveBeenCalledTimes(0) }) @@ -628,7 +630,7 @@ describe('queryObserver', () => { .fn<(...args: Array) => string>() .mockReturnValue('data') new QueryObserver(queryClient, { queryKey: key, queryFn }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) expect(queryFn).toHaveBeenCalledTimes(0) }) @@ -664,7 +666,7 @@ describe('queryObserver', () => { }) observer.setOptions({ queryKey: key, enabled: false, staleTime: 10 }) await queryClient.fetchQuery({ queryKey: key, queryFn }) - await sleep(20) + await vi.advanceTimersByTimeAsync(20) unsubscribe() expect(queryFn).toHaveBeenCalledTimes(1) expect(results.length).toBe(2) @@ -690,7 +692,7 @@ describe('queryObserver', () => { results2.push(x) }) await queryClient.fetchQuery({ queryKey: key, queryFn }) - await sleep(50) + await vi.advanceTimersByTimeAsync(50) unsubscribe1() unsubscribe2() expect(queryFn).toHaveBeenCalledTimes(1) @@ -715,9 +717,9 @@ describe('queryObserver', () => { retryDelay: 50, }) const unsubscribe = observer.subscribe(() => undefined) - await sleep(70) + await vi.advanceTimersByTimeAsync(70) unsubscribe() - await sleep(200) + await vi.advanceTimersByTimeAsync(200) expect(count).toBe(2) }) @@ -737,10 +739,10 @@ describe('queryObserver', () => { }) const unsubscribe = observer.subscribe(() => undefined) expect(count).toBe(1) - await sleep(15) + await vi.advanceTimersByTimeAsync(15) expect(count).toBe(2) unsubscribe() - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(queryClient.getQueryCache().find({ queryKey: key })).toBeUndefined() expect(count).toBe(2) }) @@ -764,7 +766,7 @@ describe('queryObserver', () => { results.push(x) }) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) unsubscribe() expect(results.length).toBe(2) @@ -849,7 +851,7 @@ describe('queryObserver', () => { }) const unsubscribe = observer.subscribe(() => undefined) - await sleep(30) + await vi.advanceTimersByTimeAsync(30) expect(queryFn).toHaveBeenCalledTimes(1) @@ -872,7 +874,7 @@ describe('queryObserver', () => { const unsubscribe = observer.subscribe(() => undefined) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(observer.getCurrentResult().data).toBe(data) observer.setOptions({ @@ -949,7 +951,7 @@ describe('queryObserver', () => { results.push(result) }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) observer.setOptions({ queryKey: key2, @@ -961,7 +963,7 @@ describe('queryObserver', () => { select: (data) => data.value, }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(results.length).toBe(4) expect(keys.length).toBe(3) @@ -1016,7 +1018,7 @@ describe('queryObserver', () => { results.push(result) }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) observer.setOptions({ queryKey: key2, @@ -1028,7 +1030,7 @@ describe('queryObserver', () => { }, }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(results.length).toBe(4) @@ -1079,7 +1081,7 @@ describe('queryObserver', () => { results.push(result) }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) observer.setOptions({ queryKey: key2, @@ -1088,7 +1090,7 @@ describe('queryObserver', () => { select: stableSelect, }) - await sleep(1) + await vi.advanceTimersByTimeAsync(1) unsubscribe() expect(results.length).toBe(4) @@ -1170,8 +1172,8 @@ describe('queryObserver', () => { } }) - await waitFor(() => expect(results[0]?.isStale).toBe(false)) - await waitFor(() => expect(results[1]?.isStale).toBe(true)) + await vi.waitFor(() => expect(results[0]?.isStale).toBe(false)) + await vi.waitFor(() => expect(results[1]?.isStale).toBe(true)) unsubscribe() }) @@ -1195,7 +1197,7 @@ describe('queryObserver', () => { results.push(observer.getCurrentResult()) }) - await waitFor(() => { + await vi.waitFor(() => { expect(results.at(-1)?.data).toBe('data') }) @@ -1228,7 +1230,7 @@ describe('queryObserver', () => { results.push(observer.getCurrentResult()) }) - await waitFor(() => { + await vi.waitFor(() => { expect(results.at(-1)?.status).toBe('error') }) @@ -1240,7 +1242,7 @@ describe('queryObserver', () => { // fail again const lengthBefore = results.length observer.refetch() - await waitFor(() => { + await vi.waitFor(() => { expect(results.length).toBeGreaterThan(lengthBefore) expect(results.at(-1)?.status).toBe('error') }) @@ -1256,7 +1258,7 @@ describe('queryObserver', () => { succeeds = true observer.refetch() - await waitFor(() => { + await vi.waitFor(() => { results.at(-1)?.status === 'success' }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c20836a7a..6a3012817b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2418,9 +2418,6 @@ importers: packages/query-core: devDependencies: - '@testing-library/dom': - specifier: ^10.4.0 - version: 10.4.0 npm-run-all2: specifier: ^5.0.0 version: 5.0.2 @@ -4988,67 +4985,79 @@ packages: resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} @@ -5559,42 +5568,49 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-arm64-musl@1.0.1': resolution: {integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/nice-linux-ppc64-gnu@1.0.1': resolution: {integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-riscv64-gnu@1.0.1': resolution: {integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-s390x-gnu@1.0.1': resolution: {integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-x64-gnu@1.0.1': resolution: {integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/nice-linux-x64-musl@1.0.1': resolution: {integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/nice-win32-arm64-msvc@1.0.1': resolution: {integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==} @@ -5649,24 +5665,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@next/swc-linux-arm64-musl@15.1.2': resolution: {integrity: sha512-9CF1Pnivij7+M3G74lxr+e9h6o2YNIe7QtExWq1KUK4hsOLTBv6FJikEwCaC3NeYTflzrm69E5UfwEAbV2U9/g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@next/swc-linux-x64-gnu@15.1.2': resolution: {integrity: sha512-tINV7WmcTUf4oM/eN3Yuu/f8jQ5C6AkueZPKeALs/qfdfX57eNv4Ij7rt0SA6iZ8+fMobVfcFVv664Op0caCCg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@next/swc-linux-x64-musl@15.1.2': resolution: {integrity: sha512-jf2IseC4WRsGkzeUw/cK3wci9pxR53GlLAt30+y+B+2qAQxMw6WAC3QrANIKxkcoPU3JFh/10uFfmoMDF9JXKg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@next/swc-win32-arm64-msvc@15.1.2': resolution: {integrity: sha512-wvg7MlfnaociP7k8lxLX4s2iBJm4BrNiNFhVUY+Yur5yhAJHfkS8qPPeDEUH8rQiY0PX3u/P7Q/wcg6Mv6GSAA==} @@ -5774,24 +5794,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@nx/nx-linux-arm64-musl@20.7.2': resolution: {integrity: sha512-/r4TNzyjhic7DZei6DXfbsfONDp40LbHjn/XcrJ53yI1UHGFunUUQYEDeBbgOcqs0IkRitNSgTDgpkG9UvJ65Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@nx/nx-linux-x64-gnu@20.7.2': resolution: {integrity: sha512-s/cMSJlJeF+Io+3bWy+wJSemBwKL/IAcXUxLXRSDuaPXv7AoDWctmbfcyLqQJ7Ufcioivvil0XTtD/vkJI0x3A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@nx/nx-linux-x64-musl@20.7.2': resolution: {integrity: sha512-9ZdPQwD4LDhwMOQ1NyYRDNr+6FVOdFeibkO+nN4nhkNBFxK6w2iprebrUKeOvQ1yHttt2YSC5p9bqxP7DVtE7w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@nx/nx-win32-arm64-msvc@20.7.2': resolution: {integrity: sha512-fSd44rmECiw/HZD9f0mNPRF8zwtx3N3TNU7CRohZtRBVotUgOuQU1XONi1J0V117g8q4VQmmaAO9eMdVxM2ZuQ==} @@ -5846,36 +5870,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-wasm@2.3.0': resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} @@ -6194,106 +6224,127 @@ packages: resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-gnueabihf@4.39.0': resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.34.8': resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm-musleabihf@4.39.0': resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.34.8': resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-gnu@4.39.0': resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.34.8': resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-musl@4.39.0': resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.34.8': resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loongarch64-gnu@4.39.0': resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.34.8': resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.39.0': resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.39.0': resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.34.8': resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.39.0': resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.34.8': resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.39.0': resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.34.8': resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-linux-x64-musl@4.39.0': resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.34.8': resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} @@ -6644,24 +6695,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.0.14': resolution: {integrity: sha512-gVkJdnR/L6iIcGYXx64HGJRmlme2FGr/aZH0W6u4A3RgPMAb+6ELRLi+UBiH83RXBm9vwCfkIC/q8T51h8vUJQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.0.14': resolution: {integrity: sha512-EE+EQ+c6tTpzsg+LGO1uuusjXxYx0Q00JE5ubcIGfsogSKth8n8i2BcS2wYTQe4jXGs+BQs35l78BIPzgwLddw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.0.14': resolution: {integrity: sha512-KCCOzo+L6XPT0oUp2Jwh233ETRQ/F6cwUnMnR0FvMUCbkDAzHbcyOgpfuAtRa5HD0WbTbH4pVD+S0pn1EhNfbw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-win32-arm64-msvc@4.0.14': resolution: {integrity: sha512-AHObFiFL9lNYcm3tZSPqa/cHGpM5wOrNmM2uOMoKppp+0Hom5uuyRh0QkOp7jftsHZdrZUpmoz0Mp6vhh2XtUg==} @@ -11205,48 +11260,56 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-gnu@1.29.2: resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.27.0: resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-arm64-musl@1.29.2: resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.27.0: resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-gnu@1.29.2: resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.27.0: resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-linux-x64-musl@1.29.2: resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.27.0: resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==}