From 8b7bc7f0f52474ae9026f8016512273a40718821 Mon Sep 17 00:00:00 2001 From: Daniel Schmidt Date: Thu, 31 Oct 2024 12:42:23 +0100 Subject: [PATCH] Revert "test: convert all tests to Vitest browser mode" This reverts commit 327312603250ce49d620c0fa15a52b7eade72281. --- biome.json | 15 +- package.json | 14 +- pnpm-lock.yaml | 1030 ++++++++++-------- src/__tests__/InView.test.tsx | 11 +- src/__tests__/{ => browser}/browser.test.tsx | 22 +- src/__tests__/hooks.test.tsx | 64 +- src/__tests__/setup.test.ts | 10 +- src/test-utils.ts | 14 +- vitest.config.mts | 11 +- vitest.workspace.ts | 30 + 10 files changed, 700 insertions(+), 521 deletions(-) rename src/__tests__/{ => browser}/browser.test.tsx (67%) create mode 100644 vitest.workspace.ts diff --git a/biome.json b/biome.json index 89230f14..0a2a7d1e 100644 --- a/biome.json +++ b/biome.json @@ -25,14 +25,25 @@ "noForEach": "off" }, "style": { - "noVar": "off", - "noUnusedTemplateLiteral": "off" + "noVar": "off" }, "a11y": { "noSvgWithoutTitle": "off" } } }, + "overrides": [ + { + "include": ["**/*.test.ts", "**/*.test.tsx"], + "linter": { + "rules": { + "style": { + "noUnusedTemplateLiteral": "off" + } + } + } + } + ], "vcs": { "enabled": true, "clientKind": "git", diff --git a/package.json b/package.json index cb70f8fb..ee5d2fb7 100644 --- a/package.json +++ b/package.json @@ -112,13 +112,16 @@ }, "devDependencies": { "@arethetypeswrong/cli": "^0.15.3", - "@biomejs/biome": "^1.9.4", + "@biomejs/biome": "^1.8.3", "@size-limit/preset-small-lib": "^11.1.4", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.1", + "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.1", - "@vitest/browser": "^2.1.4", - "@vitest/coverage-istanbul": "^2.1.4", + "@vitest/browser": "^2.0.1", + "@vitest/coverage-istanbul": "^2.0.1", + "jsdom": "^24.1.0", "lint-staged": "^15.2.7", "microbundle": "^0.15.1", "npm-run-all": "^4.1.5", @@ -130,8 +133,7 @@ "size-limit": "^11.1.4", "tsup": "^8.1.0", "typescript": "^5.5.3", - "vitest": "^2.1.4", - "vitest-browser-react": "^0.0.3" + "vitest": "^2.0.1" }, "peerDependenciesMeta": { "react-dom": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eda8db43..0daca65d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,26 +12,35 @@ importers: specifier: ^0.15.3 version: 0.15.3 '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 + specifier: ^1.8.3 + version: 1.8.3 '@size-limit/preset-small-lib': specifier: ^11.1.4 version: 11.1.4(size-limit@11.1.4) + '@testing-library/jest-dom': + specifier: ^6.4.6 + version: 6.4.6(@types/jest@29.5.12)(vitest@2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2)) + '@testing-library/react': + specifier: ^16.0.0 + version: 16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/react': specifier: ^18.3.3 version: 18.3.3 '@types/react-dom': - specifier: ^18.3.1 - version: 18.3.1 + specifier: ^18.3.0 + version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 version: 4.3.1(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2)) '@vitest/browser': - specifier: ^2.1.4 - version: 2.1.4(@types/node@20.14.10)(playwright@1.45.1)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))(vitest@2.1.4) + specifier: ^2.0.1 + version: 2.0.2(playwright@1.45.1)(typescript@5.5.3)(vitest@2.0.2) '@vitest/coverage-istanbul': - specifier: ^2.1.4 - version: 2.1.4(vitest@2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2)) + specifier: ^2.0.1 + version: 2.0.2(vitest@2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2)) + jsdom: + specifier: ^24.1.0 + version: 24.1.0 lint-staged: specifier: ^15.2.7 version: 15.2.7 @@ -66,11 +75,8 @@ importers: specifier: ^5.5.3 version: 5.5.3 vitest: - specifier: ^2.1.4 - version: 2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2) - vitest-browser-react: - specifier: ^0.0.3 - version: 0.0.3(@types/react-dom@18.3.1)(@types/react@18.3.3)(@vitest/browser@2.1.4(@types/node@20.14.10)(playwright@1.45.1)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))(vitest@2.1.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2)) + specifier: ^2.0.1 + version: 2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2) storybook: dependencies: @@ -150,6 +156,9 @@ importers: packages: + '@adobe/css-tools@4.4.0': + resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -389,22 +398,22 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.7': resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} @@ -429,17 +438,21 @@ packages: resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.2': + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.7': - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + '@babel/parser@7.24.4': + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true @@ -1347,12 +1360,12 @@ packages: resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.7': - resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.0': - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} '@base2/pretty-print-object@1.0.1': @@ -1363,116 +1376,60 @@ packages: engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} - engines: {node: '>=14.21.3'} - hasBin: true - '@biomejs/cli-darwin-arm64@1.8.3': resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - '@biomejs/cli-darwin-x64@1.8.3': resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.8.3': resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - '@biomejs/cli-linux-arm64@1.8.3': resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - '@biomejs/cli-linux-x64-musl@1.8.3': resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - '@biomejs/cli-linux-x64@1.8.3': resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - '@biomejs/cli-win32-arm64@1.8.3': resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - '@biomejs/cli-win32-x64@1.8.3': resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - '@bundled-es-modules/cookie@2.0.0': resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} '@bundled-es-modules/statuses@1.0.1': resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} - '@bundled-es-modules/tough-cookie@0.1.6': - resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1615,25 +1572,21 @@ packages: cpu: [x64] os: [win32] - '@inquirer/confirm@5.0.1': - resolution: {integrity: sha512-6ycMm7k7NUApiMGfVc32yIPp28iPKxhGRMqoNDiUjq2RyTAkbs5Fx0TdzBqhabcKvniDdAAvHCmsRjnNfTsogw==} + '@inquirer/confirm@3.1.14': + resolution: {integrity: sha512-nbLSX37b2dGPtKWL3rPuR/5hOuD30S+pqJ/MuFiUEgN6GiMs8UMxiurKAMDzKt6C95ltjupa8zH6+3csXNHWpA==} engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - '@inquirer/core@10.0.1': - resolution: {integrity: sha512-KKTgjViBQUi3AAssqjUFMnMO3CM3qwCHvePV9EW+zTKGKafFGFF01sc1yOIYjLJ7QU52G/FbzKc+c01WLzXmVQ==} + '@inquirer/core@9.0.2': + resolution: {integrity: sha512-nguvH3TZar3ACwbytZrraRTzGqyxJfYJwv+ZwqZNatAosdWQMP1GV8zvmkNlBe2JeZSaw0WYBHZk52pDpWC9qA==} engines: {node: '>=18'} - '@inquirer/figures@1.0.7': - resolution: {integrity: sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==} + '@inquirer/figures@1.0.3': + resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} engines: {node: '>=18'} - '@inquirer/type@3.0.0': - resolution: {integrity: sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog==} + '@inquirer/type@1.4.0': + resolution: {integrity: sha512-AjOqykVyjdJQvtfkNDGUyMYGF8xN50VUxftCQWsOyIo4DFRLr6VQhW0VItGI1JIyQGCGgIpKa7hMMwNhZb4OIw==} engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1643,6 +1596,18 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1': resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==} peerDependencies: @@ -1685,8 +1650,12 @@ packages: '@types/react': '>=16' react: '>=16' - '@mswjs/interceptors@0.36.7': - resolution: {integrity: sha512-sdx02Wlus5hv6Bx7uUDb25gb0WGjCuSgnJB2LVERemoSGuqkZMe3QI6nEXhieFGtYwPrZbYrT2vPbsFN2XfbUw==} + '@mswjs/cookies@1.1.1': + resolution: {integrity: sha512-W68qOHEjx1iD+4VjQudlx26CPIoxmIAtK4ZCexU0/UJBG6jYhcuyzKJx+Iw8uhBIGd9eba64XgWVgo20it1qwA==} + engines: {node: '>=18'} + + '@mswjs/interceptors@0.29.1': + resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==} engines: {node: '>=18'} '@nodelib/fs.scandir@2.1.5': @@ -1930,6 +1899,9 @@ packages: cpu: [x64] os: [win32] + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -2098,10 +2070,46 @@ packages: '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + '@testing-library/dom@10.3.1': + resolution: {integrity: sha512-q/WL+vlXMpC0uXDyfsMtc1rmotzLV8Y0gq6q1gfrrDjQeHoeLrqHbxdPvPNAh1i+xuJl7+BezywcXArz7vLqKQ==} engines: {node: '>=18'} + '@testing-library/jest-dom@6.4.6': + resolution: {integrity: sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + + '@testing-library/react@16.0.0': + resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 + '@types/react-dom': ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@testing-library/user-event@14.5.2': resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} @@ -2175,6 +2183,18 @@ packages: '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + '@types/lodash@4.17.6': resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==} @@ -2187,6 +2207,9 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + '@types/node@18.19.39': resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==} @@ -2208,9 +2231,6 @@ packages: '@types/react-dom@18.3.0': resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - '@types/react-dom@18.3.1': - resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} - '@types/react@18.3.3': resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} @@ -2229,18 +2249,27 @@ packages: '@types/serve-static@1.15.7': resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/statuses@2.0.5': resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -2250,12 +2279,12 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 - '@vitest/browser@2.1.4': - resolution: {integrity: sha512-89SrvShW6kWzmEYtBj5k1gBq88emoC2qrngw5hE1vNpRFteQ5/1URbKIVww391rIALTpzhhCt5yJt5tjLPZxYw==} + '@vitest/browser@2.0.2': + resolution: {integrity: sha512-0U0LY7Yq5INXwS1+CDlKEntgtWGYu5pdVmuzD9alXEBDeNnjMD0fKL4dO7V7uIWnzMgzVjKxE205y4IoRBPn/A==} peerDependencies: playwright: '*' safaridriver: '*' - vitest: 2.1.4 + vitest: 2.0.2 webdriverio: '*' peerDependenciesMeta: playwright: @@ -2265,39 +2294,28 @@ packages: webdriverio: optional: true - '@vitest/coverage-istanbul@2.1.4': - resolution: {integrity: sha512-NLmfjzXnRSmLF/h4hYkzjvd7hZ85DRZzPUqXu0McPFCMczDfNmOjMoM3KaxjFaEmOc1YzX9HHbU/Rr9VO+35ow==} + '@vitest/coverage-istanbul@2.0.2': + resolution: {integrity: sha512-9TZC/4CT9j7GZYwh1fYtxNtRoSi7T4evF5M/rxOOAvgejJFxM/ysXSvdyV/HXWkEbH/Be8uKnd+v/TyYyrglGA==} peerDependencies: - vitest: 2.1.4 + vitest: 2.0.2 - '@vitest/expect@2.1.4': - resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} - - '@vitest/mocker@2.1.4': - resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true + '@vitest/expect@2.0.2': + resolution: {integrity: sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==} - '@vitest/pretty-format@2.1.4': - resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} + '@vitest/pretty-format@2.0.2': + resolution: {integrity: sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==} - '@vitest/runner@2.1.4': - resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} + '@vitest/runner@2.0.2': + resolution: {integrity: sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==} - '@vitest/snapshot@2.1.4': - resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} + '@vitest/snapshot@2.0.2': + resolution: {integrity: sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==} - '@vitest/spy@2.1.4': - resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} + '@vitest/spy@2.0.2': + resolution: {integrity: sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==} - '@vitest/utils@2.1.4': - resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} + '@vitest/utils@2.0.2': + resolution: {integrity: sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==} '@yarnpkg/fslib@2.10.3': resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} @@ -2613,8 +2631,8 @@ packages: resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} hasBin: true - chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} chalk@1.1.3: @@ -2625,6 +2643,10 @@ packages: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2649,6 +2671,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} @@ -2814,6 +2840,9 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -2860,8 +2889,8 @@ packages: supports-color: optional: true - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2869,8 +2898,8 @@ packages: supports-color: optional: true - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2938,6 +2967,10 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2952,6 +2985,9 @@ packages: dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -3069,6 +3105,10 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -3121,9 +3161,9 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} - engines: {node: '>=12.0.0'} + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} express@4.19.2: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} @@ -3523,6 +3563,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -3725,6 +3769,26 @@ packages: engines: {node: '>=10'} hasBin: true + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} @@ -3877,9 +3941,6 @@ packages: loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - loupe@3.1.2: - resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} - lru-cache@10.4.0: resolution: {integrity: sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==} engines: {node: '>=18'} @@ -3901,11 +3962,8 @@ packages: magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} - - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -4059,19 +4117,19 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.6.0: - resolution: {integrity: sha512-n3tx2w0MZ3H4pxY0ozrQ4sNPzK/dGtlr2cIIyuEsgq2Bhy4wvcW6ZH2w/gXM9+MEUY6HC1fWhqtcXDxVZr5Jxw==} + msw@2.3.1: + resolution: {integrity: sha512-ocgvBCLn/5l3jpl1lssIb3cniuACJLoOfZu01e3n5dbJrpA5PeeWn28jCLgQDNt6d7QT8tF2fYRzm9JoEHtiig==} engines: {node: '>=18'} hasBin: true peerDependencies: - typescript: '>= 4.8.x' + typescript: '>= 4.7.x' peerDependenciesMeta: typescript: optional: true - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -4312,8 +4370,8 @@ packages: path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} @@ -4663,6 +4721,10 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -4750,6 +4812,9 @@ packages: react-is@18.1.0: resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -4777,6 +4842,10 @@ packages: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + redeyed@2.1.1: resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} @@ -4931,6 +5000,10 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -5010,9 +5083,9 @@ packages: resolution: {integrity: sha512-tgqwPUMDcNDhuf1Xf6KTUsyeqGdgKMhzaH4PAZZuzguOgTl5uuyeYe/8mWgAr6IBxB5V06uqEf6Dy37gIWDtDg==} hasBin: true - sirv@3.0.0: - resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} - engines: {node: '>=18'} + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5084,6 +5157,10 @@ packages: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5160,6 +5237,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} @@ -5261,22 +5342,19 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinyexec@0.3.1: - resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - tinypool@1.0.1: - resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + tinypool@1.0.0: + resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@1.2.0: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + tinyspy@3.0.0: + resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} engines: {node: '>=14.0.0'} to-fast-properties@2.0.0: @@ -5364,8 +5442,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.26.1: - resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + type-fest@4.21.0: + resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==} engines: {node: '>=16'} type-is@1.6.18: @@ -5492,8 +5570,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-node@2.1.4: - resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} + vite-node@2.0.2: + resolution: {integrity: sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5525,31 +5603,15 @@ packages: terser: optional: true - vitest-browser-react@0.0.3: - resolution: {integrity: sha512-bNAE5ANYpGtwxdpN5qc4WxZnIjU0WYhOPMLAamm1/143tTBUFLHXe/rGSiy8q5xid/zrCRfC7AmKUA0LYNyUMg==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - '@types/react': '>18.0.0' - '@types/react-dom': '>18.0.0' - '@vitest/browser': '>=2.1.0' - react: '>18.0.0' - react-dom: '>18.0.0' - vitest: '>=2.1.0' - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - vitest@2.1.4: - resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} + vitest@2.0.2: + resolution: {integrity: sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==} 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.4 - '@vitest/ui': 2.1.4 + '@vitest/browser': 2.0.2 + '@vitest/ui': 2.0.2 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5629,8 +5691,8 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} hasBin: true @@ -5716,6 +5778,8 @@ packages: snapshots: + '@adobe/css-tools@4.4.0': {} + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -5746,7 +5810,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: - '@babel/highlight': 7.24.7 + '@babel/highlight': 7.24.2 picocolors: 1.0.1 '@babel/code-frame@7.24.7': @@ -5768,12 +5832,12 @@ snapshots: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.22.5) '@babel/helpers': 7.24.4 - '@babel/parser': 7.24.7 + '@babel/parser': 7.24.4 '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 convert-source-map: 1.9.0 - debug: 4.3.5 + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -5802,7 +5866,7 @@ snapshots: '@babel/generator@7.24.4': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -5816,7 +5880,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.22.5': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 '@babel/helper-annotate-as-pure@7.24.7': dependencies: @@ -5983,7 +6047,7 @@ snapshots: '@babel/helper-module-imports@7.24.3': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 '@babel/helper-module-imports@7.24.7': dependencies: @@ -5999,7 +6063,7 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-validator-identifier': 7.22.20 '@babel/helper-module-transforms@7.24.7(@babel/core@7.22.5)': dependencies: @@ -6097,14 +6161,14 @@ snapshots: dependencies: '@babel/types': 7.24.7 + '@babel/helper-string-parser@7.24.1': {} + '@babel/helper-string-parser@7.24.7': {} - '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.22.20': {} '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-option@7.23.5': {} '@babel/helper-validator-option@7.24.7': {} @@ -6128,7 +6192,7 @@ snapshots: dependencies: '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color @@ -6137,6 +6201,13 @@ snapshots: '@babel/template': 7.24.7 '@babel/types': 7.24.7 + '@babel/highlight@7.24.2': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -6144,13 +6215,13 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/parser@7.24.7': + '@babel/parser@7.24.4': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 - '@babel/parser@7.26.2': + '@babel/parser@7.24.7': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.24.7 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7)': dependencies: @@ -6743,7 +6814,7 @@ snapshots: '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-module-transforms': 7.24.7(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-validator-identifier': 7.22.20 transitivePeerDependencies: - supports-color @@ -6956,7 +7027,7 @@ snapshots: '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.22.5) - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 '@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.5)': dependencies: @@ -7179,7 +7250,7 @@ snapshots: '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.22.5) '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.22.5) '@babel/preset-modules': 0.1.6(@babel/core@7.22.5) - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.22.5) babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.22.5) babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.22.5) @@ -7295,7 +7366,7 @@ snapshots: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5) '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.22.5) - '@babel/types': 7.24.7 + '@babel/types': 7.24.0 esutils: 2.0.3 '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7)': @@ -7343,9 +7414,9 @@ snapshots: '@babel/template@7.24.0': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 '@babel/template@7.24.7': dependencies: @@ -7355,15 +7426,15 @@ snapshots: '@babel/traverse@7.24.1': dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - debug: 4.3.5 + '@babel/parser': 7.24.4 + '@babel/types': 7.24.0 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7383,17 +7454,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/types@7.24.0': + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + '@babel/types@7.24.7': dependencies: '@babel/helper-string-parser': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@babel/types@7.26.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@base2/pretty-print-object@1.0.1': {} '@biomejs/biome@1.8.3': @@ -7407,65 +7479,30 @@ snapshots: '@biomejs/cli-win32-arm64': 1.8.3 '@biomejs/cli-win32-x64': 1.8.3 - '@biomejs/biome@1.9.4': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - '@biomejs/cli-darwin-arm64@1.8.3': optional: true - '@biomejs/cli-darwin-arm64@1.9.4': - optional: true - '@biomejs/cli-darwin-x64@1.8.3': optional: true - '@biomejs/cli-darwin-x64@1.9.4': - optional: true - '@biomejs/cli-linux-arm64-musl@1.8.3': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': - optional: true - '@biomejs/cli-linux-arm64@1.8.3': optional: true - '@biomejs/cli-linux-arm64@1.9.4': - optional: true - '@biomejs/cli-linux-x64-musl@1.8.3': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': - optional: true - '@biomejs/cli-linux-x64@1.8.3': optional: true - '@biomejs/cli-linux-x64@1.9.4': - optional: true - '@biomejs/cli-win32-arm64@1.8.3': optional: true - '@biomejs/cli-win32-arm64@1.9.4': - optional: true - '@biomejs/cli-win32-x64@1.8.3': optional: true - '@biomejs/cli-win32-x64@1.9.4': - optional: true - '@bundled-es-modules/cookie@2.0.0': dependencies: cookie: 0.5.0 @@ -7474,11 +7511,6 @@ snapshots: dependencies: statuses: 2.0.1 - '@bundled-es-modules/tough-cookie@0.1.6': - dependencies: - '@types/tough-cookie': 4.0.5 - tough-cookie: 4.1.4 - '@colors/colors@1.5.0': optional: true @@ -7551,31 +7583,32 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@inquirer/confirm@5.0.1(@types/node@20.14.10)': + '@inquirer/confirm@3.1.14': dependencies: - '@inquirer/core': 10.0.1(@types/node@20.14.10) - '@inquirer/type': 3.0.0(@types/node@20.14.10) - '@types/node': 20.14.10 + '@inquirer/core': 9.0.2 + '@inquirer/type': 1.4.0 - '@inquirer/core@10.0.1(@types/node@20.14.10)': + '@inquirer/core@9.0.2': dependencies: - '@inquirer/figures': 1.0.7 - '@inquirer/type': 3.0.0(@types/node@20.14.10) + '@inquirer/figures': 1.0.3 + '@inquirer/type': 1.4.0 + '@types/mute-stream': 0.0.4 + '@types/node': 20.14.10 + '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 + cli-spinners: 2.9.2 cli-width: 4.1.0 - mute-stream: 2.0.0 + mute-stream: 1.0.0 signal-exit: 4.1.0 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 - transitivePeerDependencies: - - '@types/node' - '@inquirer/figures@1.0.7': {} + '@inquirer/figures@1.0.3': {} - '@inquirer/type@3.0.0(@types/node@20.14.10)': + '@inquirer/type@1.4.0': dependencies: - '@types/node': 20.14.10 + mute-stream: 1.0.0 '@isaacs/cliui@8.0.2': dependencies: @@ -7588,6 +7621,26 @@ snapshots: '@istanbuljs/schema@0.1.3': {} + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + optional: true + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + optional: true + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.14.10 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + optional: true + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))': dependencies: glob: 7.2.3 @@ -7601,7 +7654,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} @@ -7626,7 +7679,7 @@ snapshots: '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: @@ -7634,7 +7687,9 @@ snapshots: '@types/react': 18.3.3 react: 18.3.1 - '@mswjs/interceptors@0.36.7': + '@mswjs/cookies@1.1.1': {} + + '@mswjs/interceptors@0.29.1': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -7825,6 +7880,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.1': optional: true + '@sinclair/typebox@0.27.8': + optional: true + '@sindresorhus/is@4.6.0': {} '@sindresorhus/merge-streams@2.3.0': {} @@ -8090,7 +8148,7 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.8 - '@testing-library/dom@10.4.0': + '@testing-library/dom@10.3.1': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.24.7 @@ -8101,9 +8159,33 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + '@testing-library/jest-dom@6.4.6(@types/jest@29.5.12)(vitest@2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2))': dependencies: - '@testing-library/dom': 10.4.0 + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.24.7 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + '@types/jest': 29.5.12 + vitest: 2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2) + + '@testing-library/react@16.0.0(@testing-library/dom@10.3.1)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.7 + '@testing-library/dom': 10.3.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.3.1)': + dependencies: + '@testing-library/dom': 10.3.1 '@trysound/sax@0.2.0': {} @@ -8184,6 +8266,25 @@ snapshots: '@types/http-errors@2.0.4': {} + '@types/istanbul-lib-coverage@2.0.6': + optional: true + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + optional: true + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + optional: true + + '@types/jest@29.5.12': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + optional: true + '@types/lodash@4.17.6': {} '@types/mdx@2.0.13': {} @@ -8192,6 +8293,10 @@ snapshots: '@types/minimatch@5.1.2': {} + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 20.14.10 + '@types/node@18.19.39': dependencies: undici-types: 5.26.5 @@ -8212,10 +8317,6 @@ snapshots: dependencies: '@types/react': 18.3.3 - '@types/react-dom@18.3.1': - dependencies: - '@types/react': 18.3.3 - '@types/react@18.3.3': dependencies: '@types/prop-types': 15.7.12 @@ -8240,14 +8341,25 @@ snapshots: '@types/node': 18.19.39 '@types/send': 0.17.4 - '@types/statuses@2.0.5': {} + '@types/stack-utils@2.0.3': + optional: true - '@types/tough-cookie@4.0.5': {} + '@types/statuses@2.0.5': {} '@types/unist@3.0.2': {} '@types/uuid@9.0.8': {} + '@types/wrap-ansi@3.0.0': {} + + '@types/yargs-parser@21.0.3': + optional: true + + '@types/yargs@17.0.32': + dependencies: + '@types/yargs-parser': 21.0.3 + optional: true + '@ungap/structured-clone@1.2.0': {} '@vitejs/plugin-react@4.3.1(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))': @@ -8261,82 +8373,70 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/browser@2.1.4(@types/node@20.14.10)(playwright@1.45.1)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))(vitest@2.1.4)': + '@vitest/browser@2.0.2(playwright@1.45.1)(typescript@5.5.3)(vitest@2.0.2)': dependencies: - '@testing-library/dom': 10.4.0 - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) - '@vitest/mocker': 2.1.4(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2)) - '@vitest/utils': 2.1.4 - magic-string: 0.30.12 - msw: 2.6.0(@types/node@20.14.10)(typescript@5.5.3) - sirv: 3.0.0 - tinyrainbow: 1.2.0 - vitest: 2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2) + '@testing-library/dom': 10.3.1 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.3.1) + '@vitest/utils': 2.0.2 + magic-string: 0.30.10 + msw: 2.3.1(typescript@5.5.3) + sirv: 2.0.4 + vitest: 2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2) ws: 8.18.0 optionalDependencies: playwright: 1.45.1 transitivePeerDependencies: - - '@types/node' - bufferutil - typescript - utf-8-validate - - vite - '@vitest/coverage-istanbul@2.1.4(vitest@2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2))': + '@vitest/coverage-istanbul@2.0.2(vitest@2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2))': dependencies: '@istanbuljs/schema': 0.1.3 - debug: 4.3.7 + debug: 4.3.5 istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.1.7 - magicast: 0.3.5 + magicast: 0.3.4 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2) + vitest: 2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2) transitivePeerDependencies: - supports-color - '@vitest/expect@2.1.4': + '@vitest/expect@2.0.2': dependencies: - '@vitest/spy': 2.1.4 - '@vitest/utils': 2.1.4 - chai: 5.1.2 + '@vitest/spy': 2.0.2 + '@vitest/utils': 2.0.2 + chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.4(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))': - dependencies: - '@vitest/spy': 2.1.4 - estree-walker: 3.0.3 - magic-string: 0.30.12 - optionalDependencies: - msw: 2.6.0(@types/node@20.14.10)(typescript@5.5.3) - vite: 5.3.3(@types/node@20.14.10)(terser@5.31.2) - - '@vitest/pretty-format@2.1.4': + '@vitest/pretty-format@2.0.2': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.4': + '@vitest/runner@2.0.2': dependencies: - '@vitest/utils': 2.1.4 + '@vitest/utils': 2.0.2 pathe: 1.1.2 - '@vitest/snapshot@2.1.4': + '@vitest/snapshot@2.0.2': dependencies: - '@vitest/pretty-format': 2.1.4 - magic-string: 0.30.12 + '@vitest/pretty-format': 2.0.2 + magic-string: 0.30.10 pathe: 1.1.2 - '@vitest/spy@2.1.4': + '@vitest/spy@2.0.2': dependencies: - tinyspy: 3.0.2 + tinyspy: 3.0.0 - '@vitest/utils@2.1.4': + '@vitest/utils@2.0.2': dependencies: - '@vitest/pretty-format': 2.1.4 - loupe: 3.1.2 + '@vitest/pretty-format': 2.0.2 + estree-walker: 3.0.3 + loupe: 3.1.1 tinyrainbow: 1.2.0 '@yarnpkg/fslib@2.10.3': @@ -8371,7 +8471,6 @@ snapshots: debug: 4.3.5 transitivePeerDependencies: - supports-color - optional: true ansi-escapes@4.3.2: dependencies: @@ -8426,8 +8525,7 @@ snapshots: async@3.2.5: {} - asynckit@0.4.0: - optional: true + asynckit@0.4.0: {} asyncro@3.0.0: {} @@ -8522,7 +8620,7 @@ snapshots: babel-plugin-transform-replace-expressions@0.2.0(@babel/core@7.22.5): dependencies: '@babel/core': 7.22.5 - '@babel/parser': 7.24.7 + '@babel/parser': 7.24.4 balanced-match@1.0.2: {} @@ -8667,7 +8765,7 @@ snapshots: ansicolors: 0.3.2 redeyed: 2.1.1 - chai@5.1.2: + chai@5.1.1: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 @@ -8689,6 +8787,11 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -8714,6 +8817,9 @@ snapshots: chownr@2.0.0: {} + ci-info@3.9.0: + optional: true + citty@0.1.6: dependencies: consola: 3.2.3 @@ -8774,7 +8880,6 @@ snapshots: combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - optional: true commander@10.0.1: {} @@ -8836,7 +8941,7 @@ snapshots: dependencies: nice-try: 1.0.5 path-key: 2.0.1 - semver: 5.7.2 + semver: 5.7.1 shebang-command: 1.2.0 which: 1.3.1 @@ -8869,6 +8974,8 @@ snapshots: css-what@6.1.0: {} + css.escape@1.5.1: {} + cssesc@3.0.0: {} cssnano-preset-default@5.2.14(postcss@8.4.39): @@ -8922,7 +9029,6 @@ snapshots: cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 - optional: true csstype@3.1.3: {} @@ -8930,22 +9036,20 @@ snapshots: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - optional: true debug@2.6.9: dependencies: ms: 2.0.0 - debug@4.3.5: + debug@4.3.4: dependencies: ms: 2.1.2 - debug@4.3.7: + debug@4.3.5: dependencies: - ms: 2.1.3 + ms: 2.1.2 - decimal.js@10.4.3: - optional: true + decimal.js@10.4.3: {} deep-eql@5.0.2: {} @@ -8982,8 +9086,7 @@ snapshots: defu@6.1.4: {} - delayed-stream@1.0.0: - optional: true + delayed-stream@1.0.0: {} depd@2.0.0: {} @@ -8995,6 +9098,9 @@ snapshots: didyoumean@1.2.2: {} + diff-sequences@29.6.3: + optional: true + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -9007,6 +9113,8 @@ snapshots: dom-accessibility-api@0.5.16: {} + dom-accessibility-api@0.6.3: {} + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -9057,8 +9165,7 @@ snapshots: entities@2.2.0: {} - entities@4.5.0: - optional: true + entities@4.5.0: {} envinfo@7.13.0: {} @@ -9161,6 +9268,9 @@ snapshots: escape-string-regexp@1.0.5: {} + escape-string-regexp@2.0.0: + optional: true + escape-string-regexp@4.0.0: {} escodegen@2.1.0: @@ -9217,7 +9327,14 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - expect-type@1.1.0: {} + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + optional: true express@4.19.2: dependencies: @@ -9342,7 +9459,6 @@ snapshots: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - optional: true forwarded@0.2.0: {} @@ -9601,7 +9717,6 @@ snapshots: html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 - optional: true html-escaper@2.0.2: {} @@ -9621,7 +9736,6 @@ snapshots: debug: 4.3.5 transitivePeerDependencies: - supports-color - optional: true https-proxy-agent@7.0.5: dependencies: @@ -9629,7 +9743,6 @@ snapshots: debug: 4.3.5 transitivePeerDependencies: - supports-color - optional: true human-signals@2.1.0: {} @@ -9642,7 +9755,6 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - optional: true icss-replace-symbols@1.1.0: {} @@ -9673,6 +9785,8 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -9768,8 +9882,7 @@ snapshots: is-plain-object@5.0.0: {} - is-potential-custom-element-name@1.0.1: - optional: true + is-potential-custom-element-name@1.0.1: {} is-reference@1.2.1: dependencies: @@ -9847,7 +9960,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.7 + debug: 4.3.5 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -9870,6 +9983,48 @@ snapshots: filelist: 1.0.4 minimatch: 3.1.2 + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + optional: true + + jest-get-type@29.6.3: + optional: true + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + optional: true + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.24.7 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.7 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + optional: true + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + optional: true + jest-worker@26.6.2: dependencies: '@types/node': 20.14.10 @@ -9936,7 +10091,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true jsesc@0.5.0: {} @@ -10051,8 +10205,6 @@ snapshots: dependencies: get-func-name: 2.0.2 - loupe@3.1.2: {} - lru-cache@10.4.0: {} lru-cache@5.1.1: @@ -10073,14 +10225,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - magic-string@0.30.12: + magicast@0.3.4: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - magicast@0.3.5: - dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 source-map-js: 1.2.0 make-dir@2.1.0: @@ -10253,14 +10401,13 @@ snapshots: ms@2.1.3: {} - msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3): + msw@2.3.1(typescript@5.5.3): dependencies: '@bundled-es-modules/cookie': 2.0.0 '@bundled-es-modules/statuses': 1.0.1 - '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.0.1(@types/node@20.14.10) - '@mswjs/interceptors': 0.36.7 - '@open-draft/deferred-promise': 2.2.0 + '@inquirer/confirm': 3.1.14 + '@mswjs/cookies': 1.1.1 + '@mswjs/interceptors': 0.29.1 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 '@types/statuses': 2.0.5 @@ -10269,16 +10416,14 @@ snapshots: headers-polyfill: 4.0.3 is-node-process: 1.2.0 outvariant: 1.4.3 - path-to-regexp: 6.3.0 + path-to-regexp: 6.2.2 strict-event-emitter: 0.5.1 - type-fest: 4.26.1 + type-fest: 4.21.0 yargs: 17.7.2 optionalDependencies: typescript: 5.5.3 - transitivePeerDependencies: - - '@types/node' - mute-stream@2.0.0: {} + mute-stream@1.0.0: {} mz@2.7.0: dependencies: @@ -10367,8 +10512,7 @@ snapshots: number-is-nan@1.0.1: {} - nwsapi@2.2.10: - optional: true + nwsapi@2.2.10: {} nypm@0.3.9: dependencies: @@ -10488,7 +10632,6 @@ snapshots: parse5@7.1.2: dependencies: entities: 4.5.0 - optional: true parseurl@1.3.3: {} @@ -10513,7 +10656,7 @@ snapshots: path-to-regexp@0.1.7: {} - path-to-regexp@6.3.0: {} + path-to-regexp@6.2.2: {} path-type@3.0.0: dependencies: @@ -10814,6 +10957,13 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + optional: true + process@0.11.10: {} promise.series@0.2.0: {} @@ -10909,6 +11059,9 @@ snapshots: react-is@18.1.0: {} + react-is@18.3.1: + optional: true + react-refresh@0.14.2: {} react@18.3.1: @@ -10943,6 +11096,11 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.6.3 + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + redeyed@2.1.1: dependencies: esprima: 4.0.1 @@ -11131,11 +11289,9 @@ snapshots: fsevents: 2.3.3 optional: true - rrweb-cssom@0.6.0: - optional: true + rrweb-cssom@0.6.0: {} - rrweb-cssom@0.7.1: - optional: true + rrweb-cssom@0.7.1: {} run-parallel@1.2.0: dependencies: @@ -11160,12 +11316,13 @@ snapshots: saxes@6.0.0: dependencies: xmlchars: 2.2.0 - optional: true scheduler@0.23.2: dependencies: loose-envify: 1.4.0 + semver@5.7.1: {} + semver@5.7.2: {} semver@6.3.1: {} @@ -11261,7 +11418,7 @@ snapshots: simple-git-hooks@2.11.1: {} - sirv@3.0.0: + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 @@ -11332,6 +11489,11 @@ snapshots: stable@0.1.8: {} + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + optional: true + stackback@0.0.2: {} statuses@2.0.1: {} @@ -11449,6 +11611,10 @@ snapshots: strip-final-newline@3.0.0: {} + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + strip-indent@4.0.0: dependencies: min-indent: 1.0.1 @@ -11500,8 +11666,7 @@ snapshots: picocolors: 1.0.1 stable: 0.1.8 - symbol-tree@3.2.4: - optional: true + symbol-tree@3.2.4: {} tailwindcss@3.4.4: dependencies: @@ -11592,15 +11757,13 @@ snapshots: tiny-invariant@1.3.3: {} - tinybench@2.9.0: {} + tinybench@2.8.0: {} - tinyexec@0.3.1: {} - - tinypool@1.0.1: {} + tinypool@1.0.0: {} tinyrainbow@1.2.0: {} - tinyspy@3.0.2: {} + tinyspy@3.0.0: {} to-fast-properties@2.0.0: {} @@ -11626,7 +11789,6 @@ snapshots: tr46@5.0.0: dependencies: punycode: 2.3.1 - optional: true tree-kill@1.2.2: {} @@ -11677,7 +11839,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.26.1: {} + type-fest@4.21.0: {} type-is@1.6.18: dependencies: @@ -11806,11 +11968,12 @@ snapshots: vary@1.1.2: {} - vite-node@2.1.4(@types/node@20.14.10)(terser@5.31.2): + vite-node@2.0.2(@types/node@20.14.10)(terser@5.31.2): dependencies: cac: 6.7.14 - debug: 4.3.7 + debug: 4.3.5 pathe: 1.1.2 + tinyrainbow: 1.2.0 vite: 5.3.3(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' @@ -11832,46 +11995,34 @@ snapshots: fsevents: 2.3.3 terser: 5.31.2 - vitest-browser-react@0.0.3(@types/react-dom@18.3.1)(@types/react@18.3.3)(@vitest/browser@2.1.4(@types/node@20.14.10)(playwright@1.45.1)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))(vitest@2.1.4))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2)): + vitest@2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2): dependencies: - '@vitest/browser': 2.1.4(@types/node@20.14.10)(playwright@1.45.1)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))(vitest@2.1.4) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - vitest: 2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.1 - - vitest@2.1.4(@types/node@20.14.10)(@vitest/browser@2.1.4)(jsdom@24.1.0)(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(terser@5.31.2): - dependencies: - '@vitest/expect': 2.1.4 - '@vitest/mocker': 2.1.4(msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3))(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2)) - '@vitest/pretty-format': 2.1.4 - '@vitest/runner': 2.1.4 - '@vitest/snapshot': 2.1.4 - '@vitest/spy': 2.1.4 - '@vitest/utils': 2.1.4 - chai: 5.1.2 - debug: 4.3.7 - expect-type: 1.1.0 - magic-string: 0.30.12 + '@ampproject/remapping': 2.3.0 + '@vitest/expect': 2.0.2 + '@vitest/pretty-format': 2.0.2 + '@vitest/runner': 2.0.2 + '@vitest/snapshot': 2.0.2 + '@vitest/spy': 2.0.2 + '@vitest/utils': 2.0.2 + chai: 5.1.1 + debug: 4.3.5 + execa: 8.0.1 + magic-string: 0.30.10 pathe: 1.1.2 std-env: 3.7.0 - tinybench: 2.9.0 - tinyexec: 0.3.1 - tinypool: 1.0.1 + tinybench: 2.8.0 + tinypool: 1.0.0 tinyrainbow: 1.2.0 vite: 5.3.3(@types/node@20.14.10)(terser@5.31.2) - vite-node: 2.1.4(@types/node@20.14.10)(terser@5.31.2) - why-is-node-running: 2.3.0 + vite-node: 2.0.2(@types/node@20.14.10)(terser@5.31.2) + why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.14.10 - '@vitest/browser': 2.1.4(@types/node@20.14.10)(playwright@1.45.1)(typescript@5.5.3)(vite@5.3.3(@types/node@20.14.10)(terser@5.31.2))(vitest@2.1.4) + '@vitest/browser': 2.0.2(playwright@1.45.1)(typescript@5.5.3)(vitest@2.0.2) jsdom: 24.1.0 transitivePeerDependencies: - less - lightningcss - - msw - sass - stylus - sugarss @@ -11881,7 +12032,6 @@ snapshots: w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - optional: true walk-up-path@3.0.1: {} @@ -11891,8 +12041,7 @@ snapshots: webidl-conversions@4.0.2: {} - webidl-conversions@7.0.0: - optional: true + webidl-conversions@7.0.0: {} webpack-sources@3.2.3: {} @@ -11901,16 +12050,13 @@ snapshots: whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - optional: true - whatwg-mimetype@4.0.0: - optional: true + whatwg-mimetype@4.0.0: {} whatwg-url@14.0.0: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 - optional: true whatwg-url@7.1.0: dependencies: @@ -11959,7 +12105,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.3.0: + why-is-node-running@2.2.2: dependencies: siginfo: 2.0.0 stackback: 0.0.2 @@ -11998,11 +12144,9 @@ snapshots: ws@8.18.0: {} - xml-name-validator@5.0.0: - optional: true + xml-name-validator@5.0.0: {} - xmlchars@2.2.0: - optional: true + xmlchars@2.2.0: {} y18n@5.0.8: {} diff --git a/src/__tests__/InView.test.tsx b/src/__tests__/InView.test.tsx index 13b3f996..46b12e38 100644 --- a/src/__tests__/InView.test.tsx +++ b/src/__tests__/InView.test.tsx @@ -1,6 +1,5 @@ -import { userEvent } from "@vitest/browser/context"; +import { fireEvent, render, screen } from "@testing-library/react"; import React from "react"; -import { render } from "vitest-browser-react"; import { InView } from "../InView"; import { defaultFallbackInView } from "../observe"; import { intersectionMockInstance, mockAllIsIntersecting } from "../test-utils"; @@ -27,7 +26,7 @@ test("Should render intersecting", () => { }); test("should render plain children", () => { - const screen = render(inner); + render(inner); screen.getByText("inner"); }); @@ -56,7 +55,7 @@ test("Should respect skip", () => { test("Should handle initialInView", () => { const cb = vi.fn(); - const screen = render( + render( {({ inView }) => InView: {inView.toString()}} , @@ -143,7 +142,7 @@ test("Should unobserve when unmounted", () => { expect(instance.unobserve).toHaveBeenCalled(); }); -test("plain children should not catch bubbling onChange event", async () => { +test("plain children should not catch bubbling onChange event", () => { const onChange = vi.fn(); const { getByLabelText } = render( @@ -154,7 +153,7 @@ test("plain children should not catch bubbling onChange event", async () => { , ); const input = getByLabelText("input"); - await userEvent.type(input, "changed value"); + fireEvent.change(input, { target: { value: "changed value" } }); expect(onChange).not.toHaveBeenCalled(); }); diff --git a/src/__tests__/browser.test.tsx b/src/__tests__/browser/browser.test.tsx similarity index 67% rename from src/__tests__/browser.test.tsx rename to src/__tests__/browser/browser.test.tsx index 04f7ab08..c6a95460 100644 --- a/src/__tests__/browser.test.tsx +++ b/src/__tests__/browser/browser.test.tsx @@ -1,13 +1,11 @@ +import { cleanup, render, screen } from "@testing-library/react/pure"; import React from "react"; -import { render } from "vitest-browser-react"; -import type { IntersectionOptions } from "../index"; -import { useInView } from "../useInView"; +import type { IntersectionOptions } from "../../index"; +import { useInView } from "../../useInView"; -/** - * Test the real Intersection Observer API, without using the mocked version from `test-utils` - * @param options - * @constructor - */ +afterEach(() => { + cleanup(); +}); const HookComponent = ({ options }: { options?: IntersectionOptions }) => { const [ref, inView] = useInView(options); @@ -25,13 +23,13 @@ const HookComponent = ({ options }: { options?: IntersectionOptions }) => { }; test("should come into view on after rendering", async () => { - const screen = render(); + render(); const wrapper = screen.getByTestId("wrapper"); await expect.element(wrapper).toHaveAttribute("data-inview", "true"); }); test("should come into view after scrolling", async () => { - const screen = render( + render( <>
@@ -41,12 +39,12 @@ test("should come into view after scrolling", async () => { const wrapper = screen.getByTestId("wrapper"); // Should not be inside the view - await expect.element(wrapper).toHaveAttribute("data-inview", "false"); + expect(wrapper).toHaveAttribute("data-inview", "false"); // Scroll so the element comes into view window.scrollTo(0, window.innerHeight); // Should not be updated until intersection observer triggers - await expect.element(wrapper).toHaveAttribute("data-inview", "false"); + expect(wrapper).toHaveAttribute("data-inview", "false"); await expect.element(wrapper).toHaveAttribute("data-inview", "true"); }); diff --git a/src/__tests__/hooks.test.tsx b/src/__tests__/hooks.test.tsx index 72da5e66..6c3c5107 100644 --- a/src/__tests__/hooks.test.tsx +++ b/src/__tests__/hooks.test.tsx @@ -1,5 +1,5 @@ +import { render, screen } from "@testing-library/react"; import React, { useCallback } from "react"; -import { render } from "vitest-browser-react"; import { type IntersectionOptions, defaultFallbackInView } from "../index"; import { intersectionMockInstance, @@ -40,7 +40,7 @@ const LazyHookComponent = ({ options }: { options?: IntersectionOptions }) => { test("should create a hook", () => { const { getByTestId } = render(); - const wrapper = getByTestId("wrapper").element(); + const wrapper = getByTestId("wrapper"); const instance = intersectionMockInstance(wrapper); expect(instance.observe).toHaveBeenCalledWith(wrapper); @@ -50,7 +50,7 @@ test("should create a hook with array threshold", () => { const { getByTestId } = render( , ); - const wrapper = getByTestId("wrapper").element(); + const wrapper = getByTestId("wrapper"); const instance = intersectionMockInstance(wrapper); expect(instance.observe).toHaveBeenCalledWith(wrapper); @@ -58,7 +58,7 @@ test("should create a hook with array threshold", () => { test("should create a lazy hook", () => { const { getByTestId } = render(); - const wrapper = getByTestId("wrapper").element(); + const wrapper = getByTestId("wrapper"); const instance = intersectionMockInstance(wrapper); expect(instance.observe).toHaveBeenCalledWith(wrapper); @@ -72,7 +72,7 @@ test("should create a hook inView", () => { }); test("should mock thresholds", () => { - const screen = render(); + render(); mockAllIsIntersecting(0.2); screen.getByText("false"); mockAllIsIntersecting(0.5); @@ -147,7 +147,7 @@ test("should not reset current state if changing skip", () => { test("should unmount the hook", () => { const { unmount, getByTestId } = render(); - const wrapper = getByTestId("wrapper").element(); + const wrapper = getByTestId("wrapper"); const instance = intersectionMockInstance(wrapper); unmount(); expect(instance.unobserve).toHaveBeenCalledWith(wrapper); @@ -190,7 +190,7 @@ const SwitchHookComponent = ({ />
@@ -208,27 +208,27 @@ test("should handle ref removed", () => { const item2 = getByTestId("item-2"); // Item1 should be inView - expect.element(item1).toHaveAttribute("data-inview", "true"); - expect.element(item2).toHaveAttribute("data-inview", "false"); + expect(item1.getAttribute("data-inview")).toBe("true"); + expect(item2.getAttribute("data-inview")).toBe("false"); rerender(); mockAllIsIntersecting(true); // Item2 should be inView - expect.element(item1).toHaveAttribute("data-inview", "false"); - expect.element(item2).toHaveAttribute("data-inview", "true"); + expect(item1.getAttribute("data-inview")).toBe("false"); + expect(item2.getAttribute("data-inview")).toBe("true"); rerender(); // Nothing should be inView - expect.element(item1).toHaveAttribute("data-inview", "false"); - expect.element(item2).toHaveAttribute("data-inview", "false"); + expect(item1.getAttribute("data-inview")).toBe("false"); + expect(item2.getAttribute("data-inview")).toBe("false"); // Add the ref back rerender(); mockAllIsIntersecting(true); - expect.element(item1).toHaveAttribute("data-inview", "true"); - expect.element(item2).toHaveAttribute("data-inview", "false"); + expect(item1.getAttribute("data-inview")).toBe("true"); + expect(item2.getAttribute("data-inview")).toBe("false"); }); const MergeRefsComponent = ({ options }: { options?: IntersectionOptions }) => { @@ -248,7 +248,7 @@ test("should handle ref merged", () => { mockAllIsIntersecting(true); rerender(); - expect.element(getByTestId("inview")).toHaveAttribute("data-inview", "true"); + expect(getByTestId("inview").getAttribute("data-inview")).toBe("true"); }); const MultipleHookComponent = ({ @@ -289,14 +289,14 @@ test("should handle multiple hooks on the same element", () => { , ); mockAllIsIntersecting(true); - expect.element(getByTestId("item-1")).toHaveAttribute("data-inview", "true"); - expect.element(getByTestId("item-2")).toHaveAttribute("data-inview", "true"); - expect.element(getByTestId("item-3")).toHaveAttribute("data-inview", "true"); + expect(getByTestId("item-1").getAttribute("data-inview")).toBe("true"); + expect(getByTestId("item-2").getAttribute("data-inview")).toBe("true"); + expect(getByTestId("item-3").getAttribute("data-inview")).toBe("true"); }); test("should handle thresholds missing on observer instance", () => { - const screen = render(); - const wrapper = screen.getByTestId("wrapper").element(); + render(); + const wrapper = screen.getByTestId("wrapper"); const instance = intersectionMockInstance(wrapper); // @ts-ignore instance.thresholds = undefined; @@ -306,8 +306,8 @@ test("should handle thresholds missing on observer instance", () => { }); test("should handle thresholds missing on observer instance with no threshold set", () => { - const screen = render(); - const wrapper = screen.getByTestId("wrapper").element(); + render(); + const wrapper = screen.getByTestId("wrapper"); const instance = intersectionMockInstance(wrapper); // @ts-ignore instance.thresholds = undefined; @@ -332,10 +332,10 @@ const HookComponentWithEntry = ({ }; test("should set intersection ratio as the largest threshold smaller than trigger", () => { - const screen = render( + render( , ); - const wrapper = screen.getByTestId("wrapper").element(); + const wrapper = screen.getByTestId("wrapper"); mockIsIntersecting(wrapper, 0.5); screen.getByText(/intersectionRatio: 0.5/); @@ -344,15 +344,17 @@ test("should set intersection ratio as the largest threshold smaller than trigge test("should handle fallback if unsupported", () => { // @ts-ignore window.IntersectionObserver = undefined; - const screen = render(); + const { rerender } = render( + , + ); screen.getByText("true"); - screen.rerender(); + rerender(); screen.getByText("false"); expect(() => { vi.spyOn(console, "error").mockImplementation(() => {}); - screen.rerender(); + rerender(); // @ts-ignore console.error.mockRestore(); }).toThrowErrorMatchingInlineSnapshot( @@ -364,17 +366,17 @@ test("should handle defaultFallbackInView if unsupported", () => { // @ts-ignore window.IntersectionObserver = undefined; defaultFallbackInView(true); - const screen = render(); + const { rerender } = render(); screen.getByText("true"); defaultFallbackInView(false); - screen.rerender(); + rerender(); screen.getByText("false"); defaultFallbackInView(undefined); expect(() => { vi.spyOn(console, "error").mockImplementation(() => {}); - screen.rerender(); + rerender(); // @ts-ignore console.error.mockRestore(); }).toThrowErrorMatchingInlineSnapshot( diff --git a/src/__tests__/setup.test.ts b/src/__tests__/setup.test.ts index c2ccbfc8..e5eb64ac 100644 --- a/src/__tests__/setup.test.ts +++ b/src/__tests__/setup.test.ts @@ -2,17 +2,17 @@ import { vi } from "vitest"; import { mockAllIsIntersecting } from "../test-utils"; vi.hoisted(() => { - // Clear the `vi` from global, so we can detect if this is a test env + // Clear the `beforeEach` from global, so we can detect if this is a test env // @ts-ignore - window.vi = undefined; + global.vi = undefined; }); +beforeAll(() => {}); + test("should warn if not running in test env", () => { vi.spyOn(console, "error").mockImplementation(() => {}); mockAllIsIntersecting(true); - expect( - console.error, - ).toHaveBeenCalledWith(`React Intersection Observer was not configured to handle mocking. + expect(console.error).toHaveBeenCalledWith(`React Intersection Observer was not configured to handle mocking. Outside Jest and Vitest, you might need to manually configure it by calling setupIntersectionMocking() and resetIntersectionMocking() in your test setup file. // test-setup.js diff --git a/src/test-utils.ts b/src/test-utils.ts index d66c0c85..4945f76f 100644 --- a/src/test-utils.ts +++ b/src/test-utils.ts @@ -61,7 +61,7 @@ afterEach(() => { * @param mockFn The mock function to use. Defaults to `vi.fn`. */ export function setupIntersectionMocking(mockFn: typeof vi.fn) { - window.IntersectionObserver = mockFn((cb, options = {}) => { + global.IntersectionObserver = mockFn((cb, options = {}) => { const item = { callback: cb, elements: new Set(), @@ -98,19 +98,17 @@ export function setupIntersectionMocking(mockFn: typeof vi.fn) { */ export function resetIntersectionMocking() { if ( - window.IntersectionObserver && - "mockClear" in window.IntersectionObserver && - typeof window.IntersectionObserver.mockClear === "function" + global.IntersectionObserver && + "mockClear" in global.IntersectionObserver && + typeof global.IntersectionObserver.mockClear === "function" ) { - window.IntersectionObserver.mockClear(); + global.IntersectionObserver.mockClear(); } observers.clear(); } function getIsReactActEnvironment() { - return Boolean( - typeof window !== "undefined" && window.IS_REACT_ACT_ENVIRONMENT, - ); + return Boolean(global.IS_REACT_ACT_ENVIRONMENT); } function triggerIntersection( diff --git a/vitest.config.mts b/vitest.config.mts index aa19f386..972428be 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -2,17 +2,12 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ optimizeDeps: { - include: ["@vitest/coverage-istanbul", "react", "vitest-browser-react", "react-dom/test-utils"], + include: ["@vitest/coverage-istanbul"], }, test: { - environment: "node", + environment: "jsdom", globals: true, - browser: { - enabled: true, - name: "chromium", - provider: "playwright", - headless: true, - }, + coverage: { provider: "istanbul", include: ["src/**"], diff --git a/vitest.workspace.ts b/vitest.workspace.ts new file mode 100644 index 00000000..31934b64 --- /dev/null +++ b/vitest.workspace.ts @@ -0,0 +1,30 @@ +import { defineWorkspace } from "vitest/config"; + +export default defineWorkspace([ + { + extends: "vitest.config.mts", + test: { + include: ["src/**/*.test.{ts,tsx}"], + exclude: ["**/*.browser.test.{ts,tsx}", "**/browser/*.test.{ts,tsx}"], + name: "jsdom", + environment: "jsdom", + }, + }, + { + extends: "vitest.config.mts", + test: { + include: [ + "src/**/*.browser.test.{ts,tsx}", + "src/**/browser/*.test.{ts,tsx}", + ], + name: "browser", + environment: "node", + browser: { + enabled: true, + name: "chromium", + provider: "playwright", + headless: true, + }, + }, + }, +]);