diff --git a/biome.json b/biome.json index 0a2a7d1e..89230f14 100644 --- a/biome.json +++ b/biome.json @@ -25,25 +25,14 @@ "noForEach": "off" }, "style": { - "noVar": "off" + "noVar": "off", + "noUnusedTemplateLiteral": "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 ee5d2fb7..cb70f8fb 100644 --- a/package.json +++ b/package.json @@ -112,16 +112,13 @@ }, "devDependencies": { "@arethetypeswrong/cli": "^0.15.3", - "@biomejs/biome": "^1.8.3", + "@biomejs/biome": "^1.9.4", "@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.0", + "@types/react-dom": "^18.3.1", "@vitejs/plugin-react": "^4.3.1", - "@vitest/browser": "^2.0.1", - "@vitest/coverage-istanbul": "^2.0.1", - "jsdom": "^24.1.0", + "@vitest/browser": "^2.1.4", + "@vitest/coverage-istanbul": "^2.1.4", "lint-staged": "^15.2.7", "microbundle": "^0.15.1", "npm-run-all": "^4.1.5", @@ -133,7 +130,8 @@ "size-limit": "^11.1.4", "tsup": "^8.1.0", "typescript": "^5.5.3", - "vitest": "^2.0.1" + "vitest": "^2.1.4", + "vitest-browser-react": "^0.0.3" }, "peerDependenciesMeta": { "react-dom": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0daca65d..eda8db43 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,35 +12,26 @@ importers: specifier: ^0.15.3 version: 0.15.3 '@biomejs/biome': - specifier: ^1.8.3 - version: 1.8.3 + specifier: ^1.9.4 + version: 1.9.4 '@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.0 - version: 18.3.0 + specifier: ^18.3.1 + version: 18.3.1 '@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.0.1 - version: 2.0.2(playwright@1.45.1)(typescript@5.5.3)(vitest@2.0.2) + 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) '@vitest/coverage-istanbul': - 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 + 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)) lint-staged: specifier: ^15.2.7 version: 15.2.7 @@ -75,8 +66,11 @@ importers: specifier: ^5.5.3 version: 5.5.3 vitest: - 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) + 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)) storybook: dependencies: @@ -156,9 +150,6 @@ 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'} @@ -398,22 +389,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-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 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'} @@ -438,21 +429,17 @@ 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.4': - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.24.7': - resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1360,14 +1347,14 @@ packages: resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} - '@babel/types@7.24.7': resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + '@base2/pretty-print-object@1.0.1': resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -1376,60 +1363,116 @@ 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'} @@ -1572,21 +1615,25 @@ packages: cpu: [x64] os: [win32] - '@inquirer/confirm@3.1.14': - resolution: {integrity: sha512-nbLSX37b2dGPtKWL3rPuR/5hOuD30S+pqJ/MuFiUEgN6GiMs8UMxiurKAMDzKt6C95ltjupa8zH6+3csXNHWpA==} + '@inquirer/confirm@5.0.1': + resolution: {integrity: sha512-6ycMm7k7NUApiMGfVc32yIPp28iPKxhGRMqoNDiUjq2RyTAkbs5Fx0TdzBqhabcKvniDdAAvHCmsRjnNfTsogw==} engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' - '@inquirer/core@9.0.2': - resolution: {integrity: sha512-nguvH3TZar3ACwbytZrraRTzGqyxJfYJwv+ZwqZNatAosdWQMP1GV8zvmkNlBe2JeZSaw0WYBHZk52pDpWC9qA==} + '@inquirer/core@10.0.1': + resolution: {integrity: sha512-KKTgjViBQUi3AAssqjUFMnMO3CM3qwCHvePV9EW+zTKGKafFGFF01sc1yOIYjLJ7QU52G/FbzKc+c01WLzXmVQ==} engines: {node: '>=18'} - '@inquirer/figures@1.0.3': - resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} + '@inquirer/figures@1.0.7': + resolution: {integrity: sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==} engines: {node: '>=18'} - '@inquirer/type@1.4.0': - resolution: {integrity: sha512-AjOqykVyjdJQvtfkNDGUyMYGF8xN50VUxftCQWsOyIo4DFRLr6VQhW0VItGI1JIyQGCGgIpKa7hMMwNhZb4OIw==} + '@inquirer/type@3.0.0': + resolution: {integrity: sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog==} engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1596,18 +1643,6 @@ 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: @@ -1650,12 +1685,8 @@ packages: '@types/react': '>=16' react: '>=16' - '@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==} + '@mswjs/interceptors@0.36.7': + resolution: {integrity: sha512-sdx02Wlus5hv6Bx7uUDb25gb0WGjCuSgnJB2LVERemoSGuqkZMe3QI6nEXhieFGtYwPrZbYrT2vPbsFN2XfbUw==} engines: {node: '>=18'} '@nodelib/fs.scandir@2.1.5': @@ -1899,9 +1930,6 @@ 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'} @@ -2070,46 +2098,10 @@ packages: '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} - '@testing-library/dom@10.3.1': - resolution: {integrity: sha512-q/WL+vlXMpC0uXDyfsMtc1rmotzLV8Y0gq6q1gfrrDjQeHoeLrqHbxdPvPNAh1i+xuJl7+BezywcXArz7vLqKQ==} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} 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'} @@ -2183,18 +2175,6 @@ 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==} @@ -2207,9 +2187,6 @@ 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==} @@ -2231,6 +2208,9 @@ 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==} @@ -2249,27 +2229,18 @@ 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==} @@ -2279,12 +2250,12 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 - '@vitest/browser@2.0.2': - resolution: {integrity: sha512-0U0LY7Yq5INXwS1+CDlKEntgtWGYu5pdVmuzD9alXEBDeNnjMD0fKL4dO7V7uIWnzMgzVjKxE205y4IoRBPn/A==} + '@vitest/browser@2.1.4': + resolution: {integrity: sha512-89SrvShW6kWzmEYtBj5k1gBq88emoC2qrngw5hE1vNpRFteQ5/1URbKIVww391rIALTpzhhCt5yJt5tjLPZxYw==} peerDependencies: playwright: '*' safaridriver: '*' - vitest: 2.0.2 + vitest: 2.1.4 webdriverio: '*' peerDependenciesMeta: playwright: @@ -2294,28 +2265,39 @@ packages: webdriverio: optional: true - '@vitest/coverage-istanbul@2.0.2': - resolution: {integrity: sha512-9TZC/4CT9j7GZYwh1fYtxNtRoSi7T4evF5M/rxOOAvgejJFxM/ysXSvdyV/HXWkEbH/Be8uKnd+v/TyYyrglGA==} + '@vitest/coverage-istanbul@2.1.4': + resolution: {integrity: sha512-NLmfjzXnRSmLF/h4hYkzjvd7hZ85DRZzPUqXu0McPFCMczDfNmOjMoM3KaxjFaEmOc1YzX9HHbU/Rr9VO+35ow==} peerDependencies: - vitest: 2.0.2 + vitest: 2.1.4 - '@vitest/expect@2.0.2': - resolution: {integrity: sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==} + '@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/pretty-format@2.0.2': - resolution: {integrity: sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==} + '@vitest/pretty-format@2.1.4': + resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} - '@vitest/runner@2.0.2': - resolution: {integrity: sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==} + '@vitest/runner@2.1.4': + resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} - '@vitest/snapshot@2.0.2': - resolution: {integrity: sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==} + '@vitest/snapshot@2.1.4': + resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} - '@vitest/spy@2.0.2': - resolution: {integrity: sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==} + '@vitest/spy@2.1.4': + resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} - '@vitest/utils@2.0.2': - resolution: {integrity: sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==} + '@vitest/utils@2.1.4': + resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} '@yarnpkg/fslib@2.10.3': resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} @@ -2631,8 +2613,8 @@ packages: resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} hasBin: true - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} chalk@1.1.3: @@ -2643,10 +2625,6 @@ 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'} @@ -2671,10 +2649,6 @@ 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==} @@ -2840,9 +2814,6 @@ 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'} @@ -2889,8 +2860,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2898,8 +2869,8 @@ packages: supports-color: optional: true - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2967,10 +2938,6 @@ 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'} @@ -2985,9 +2952,6 @@ 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==} @@ -3105,10 +3069,6 @@ 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'} @@ -3161,9 +3121,9 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} express@4.19.2: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} @@ -3563,10 +3523,6 @@ 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. @@ -3769,26 +3725,6 @@ 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'} @@ -3941,6 +3877,9 @@ 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'} @@ -3962,8 +3901,11 @@ packages: magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - magicast@0.3.4: - resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + 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==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -4117,19 +4059,19 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.3.1: - resolution: {integrity: sha512-ocgvBCLn/5l3jpl1lssIb3cniuACJLoOfZu01e3n5dbJrpA5PeeWn28jCLgQDNt6d7QT8tF2fYRzm9JoEHtiig==} + msw@2.6.0: + resolution: {integrity: sha512-n3tx2w0MZ3H4pxY0ozrQ4sNPzK/dGtlr2cIIyuEsgq2Bhy4wvcW6ZH2w/gXM9+MEUY6HC1fWhqtcXDxVZr5Jxw==} engines: {node: '>=18'} hasBin: true peerDependencies: - typescript: '>= 4.7.x' + typescript: '>= 4.8.x' peerDependenciesMeta: typescript: optional: true - 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} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -4370,8 +4312,8 @@ packages: path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} @@ -4721,10 +4663,6 @@ 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'} @@ -4812,9 +4750,6 @@ 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'} @@ -4842,10 +4777,6 @@ 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==} @@ -5000,10 +4931,6 @@ 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 @@ -5083,9 +5010,9 @@ packages: resolution: {integrity: sha512-tgqwPUMDcNDhuf1Xf6KTUsyeqGdgKMhzaH4PAZZuzguOgTl5uuyeYe/8mWgAr6IBxB5V06uqEf6Dy37gIWDtDg==} hasBin: true - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5157,10 +5084,6 @@ 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==} @@ -5237,10 +5160,6 @@ 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'} @@ -5342,19 +5261,22 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.8.0: - resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - tinypool@1.0.0: - resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} 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.0: - resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} to-fast-properties@2.0.0: @@ -5442,8 +5364,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.21.0: - resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} type-is@1.6.18: @@ -5570,8 +5492,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-node@2.0.2: - resolution: {integrity: sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==} + vite-node@2.1.4: + resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5603,15 +5525,31 @@ packages: terser: optional: true - vitest@2.0.2: - resolution: {integrity: sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==} + 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==} 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.0.2 - '@vitest/ui': 2.0.2 + '@vitest/browser': 2.1.4 + '@vitest/ui': 2.1.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5691,8 +5629,8 @@ packages: engines: {node: '>= 8'} hasBin: true - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true @@ -5778,8 +5716,6 @@ packages: snapshots: - '@adobe/css-tools@4.4.0': {} - '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -5810,7 +5746,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: - '@babel/highlight': 7.24.2 + '@babel/highlight': 7.24.7 picocolors: 1.0.1 '@babel/code-frame@7.24.7': @@ -5832,12 +5768,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.4 + '@babel/parser': 7.24.7 '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.5 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -5866,7 +5802,7 @@ snapshots: '@babel/generator@7.24.4': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -5880,7 +5816,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.22.5': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@babel/helper-annotate-as-pure@7.24.7': dependencies: @@ -6047,7 +5983,7 @@ snapshots: '@babel/helper-module-imports@7.24.3': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 '@babel/helper-module-imports@7.24.7': dependencies: @@ -6063,7 +5999,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.22.20 + '@babel/helper-validator-identifier': 7.24.7 '@babel/helper-module-transforms@7.24.7(@babel/core@7.22.5)': dependencies: @@ -6161,14 +6097,14 @@ snapshots: dependencies: '@babel/types': 7.24.7 - '@babel/helper-string-parser@7.24.1': {} - '@babel/helper-string-parser@7.24.7': {} - '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-string-parser@7.25.9': {} '@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': {} @@ -6192,7 +6128,7 @@ snapshots: dependencies: '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/types': 7.24.7 transitivePeerDependencies: - supports-color @@ -6201,13 +6137,6 @@ 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 @@ -6215,14 +6144,14 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/parser@7.24.4': - dependencies: - '@babel/types': 7.24.0 - '@babel/parser@7.24.7': dependencies: '@babel/types': 7.24.7 + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -6814,7 +6743,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.22.20 + '@babel/helper-validator-identifier': 7.24.7 transitivePeerDependencies: - supports-color @@ -7027,7 +6956,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.0 + '@babel/types': 7.24.7 '@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.5)': dependencies: @@ -7250,7 +7179,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.0 + '@babel/types': 7.24.7 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) @@ -7366,7 +7295,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.0 + '@babel/types': 7.24.7 esutils: 2.0.3 '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7)': @@ -7414,9 +7343,9 @@ snapshots: '@babel/template@7.24.0': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.4 - '@babel/types': 7.24.0 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@babel/template@7.24.7': dependencies: @@ -7426,15 +7355,15 @@ snapshots: '@babel/traverse@7.24.1': dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@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.4 - '@babel/types': 7.24.0 - debug: 4.3.4 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7454,18 +7383,17 @@ 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': @@ -7479,30 +7407,65 @@ 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 @@ -7511,6 +7474,11 @@ 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 @@ -7583,32 +7551,31 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@inquirer/confirm@3.1.14': + '@inquirer/confirm@5.0.1(@types/node@20.14.10)': dependencies: - '@inquirer/core': 9.0.2 - '@inquirer/type': 1.4.0 + '@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/core@10.0.1(@types/node@20.14.10)': dependencies: - '@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 + '@inquirer/figures': 1.0.7 + '@inquirer/type': 3.0.0(@types/node@20.14.10) ansi-escapes: 4.3.2 - cli-spinners: 2.9.2 cli-width: 4.1.0 - mute-stream: 1.0.0 + mute-stream: 2.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.3': {} + '@inquirer/figures@1.0.7': {} - '@inquirer/type@1.4.0': + '@inquirer/type@3.0.0(@types/node@20.14.10)': dependencies: - mute-stream: 1.0.0 + '@types/node': 20.14.10 '@isaacs/cliui@8.0.2': dependencies: @@ -7621,26 +7588,6 @@ 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 @@ -7654,7 +7601,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} @@ -7679,7 +7626,7 @@ snapshots: '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: @@ -7687,9 +7634,7 @@ snapshots: '@types/react': 18.3.3 react: 18.3.1 - '@mswjs/cookies@1.1.1': {} - - '@mswjs/interceptors@0.29.1': + '@mswjs/interceptors@0.36.7': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -7880,9 +7825,6 @@ 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': {} @@ -8148,7 +8090,7 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.8 - '@testing-library/dom@10.3.1': + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.24.7 @@ -8159,33 +8101,9 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@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))': + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: - '@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 + '@testing-library/dom': 10.4.0 '@trysound/sax@0.2.0': {} @@ -8266,25 +8184,6 @@ 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': {} @@ -8293,10 +8192,6 @@ 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 @@ -8317,6 +8212,10 @@ 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 @@ -8341,25 +8240,14 @@ snapshots: '@types/node': 18.19.39 '@types/send': 0.17.4 - '@types/stack-utils@2.0.3': - optional: true - '@types/statuses@2.0.5': {} + '@types/tough-cookie@4.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))': @@ -8373,70 +8261,82 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/browser@2.0.2(playwright@1.45.1)(typescript@5.5.3)(vitest@2.0.2)': + '@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)': dependencies: - '@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) + '@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) ws: 8.18.0 optionalDependencies: playwright: 1.45.1 transitivePeerDependencies: + - '@types/node' - bufferutil - typescript - utf-8-validate + - vite - '@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))': + '@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))': dependencies: '@istanbuljs/schema': 0.1.3 - debug: 4.3.5 + debug: 4.3.7 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.4 + magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.2(@types/node@20.14.10)(@vitest/browser@2.0.2)(jsdom@24.1.0)(terser@5.31.2) + 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) transitivePeerDependencies: - supports-color - '@vitest/expect@2.0.2': + '@vitest/expect@2.1.4': dependencies: - '@vitest/spy': 2.0.2 - '@vitest/utils': 2.0.2 - chai: 5.1.1 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.0.2': + '@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': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.0.2': + '@vitest/runner@2.1.4': dependencies: - '@vitest/utils': 2.0.2 + '@vitest/utils': 2.1.4 pathe: 1.1.2 - '@vitest/snapshot@2.0.2': + '@vitest/snapshot@2.1.4': dependencies: - '@vitest/pretty-format': 2.0.2 - magic-string: 0.30.10 + '@vitest/pretty-format': 2.1.4 + magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@2.0.2': + '@vitest/spy@2.1.4': dependencies: - tinyspy: 3.0.0 + tinyspy: 3.0.2 - '@vitest/utils@2.0.2': + '@vitest/utils@2.1.4': dependencies: - '@vitest/pretty-format': 2.0.2 - estree-walker: 3.0.3 - loupe: 3.1.1 + '@vitest/pretty-format': 2.1.4 + loupe: 3.1.2 tinyrainbow: 1.2.0 '@yarnpkg/fslib@2.10.3': @@ -8471,6 +8371,7 @@ snapshots: debug: 4.3.5 transitivePeerDependencies: - supports-color + optional: true ansi-escapes@4.3.2: dependencies: @@ -8525,7 +8426,8 @@ snapshots: async@3.2.5: {} - asynckit@0.4.0: {} + asynckit@0.4.0: + optional: true asyncro@3.0.0: {} @@ -8620,7 +8522,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.4 + '@babel/parser': 7.24.7 balanced-match@1.0.2: {} @@ -8765,7 +8667,7 @@ snapshots: ansicolors: 0.3.2 redeyed: 2.1.1 - chai@5.1.1: + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 @@ -8787,11 +8689,6 @@ 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 @@ -8817,9 +8714,6 @@ snapshots: chownr@2.0.0: {} - ci-info@3.9.0: - optional: true - citty@0.1.6: dependencies: consola: 3.2.3 @@ -8880,6 +8774,7 @@ snapshots: combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + optional: true commander@10.0.1: {} @@ -8941,7 +8836,7 @@ snapshots: dependencies: nice-try: 1.0.5 path-key: 2.0.1 - semver: 5.7.1 + semver: 5.7.2 shebang-command: 1.2.0 which: 1.3.1 @@ -8974,8 +8869,6 @@ 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): @@ -9029,6 +8922,7 @@ snapshots: cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 + optional: true csstype@3.1.3: {} @@ -9036,20 +8930,22 @@ 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.4: + debug@4.3.5: dependencies: ms: 2.1.2 - debug@4.3.5: + debug@4.3.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 - decimal.js@10.4.3: {} + decimal.js@10.4.3: + optional: true deep-eql@5.0.2: {} @@ -9086,7 +8982,8 @@ snapshots: defu@6.1.4: {} - delayed-stream@1.0.0: {} + delayed-stream@1.0.0: + optional: true depd@2.0.0: {} @@ -9098,9 +8995,6 @@ snapshots: didyoumean@1.2.2: {} - diff-sequences@29.6.3: - optional: true - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -9113,8 +9007,6 @@ snapshots: dom-accessibility-api@0.5.16: {} - dom-accessibility-api@0.6.3: {} - dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -9165,7 +9057,8 @@ snapshots: entities@2.2.0: {} - entities@4.5.0: {} + entities@4.5.0: + optional: true envinfo@7.13.0: {} @@ -9268,9 +9161,6 @@ 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: @@ -9327,14 +9217,7 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.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 + expect-type@1.1.0: {} express@4.19.2: dependencies: @@ -9459,6 +9342,7 @@ snapshots: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + optional: true forwarded@0.2.0: {} @@ -9717,6 +9601,7 @@ snapshots: html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 + optional: true html-escaper@2.0.2: {} @@ -9736,6 +9621,7 @@ snapshots: debug: 4.3.5 transitivePeerDependencies: - supports-color + optional: true https-proxy-agent@7.0.5: dependencies: @@ -9743,6 +9629,7 @@ snapshots: debug: 4.3.5 transitivePeerDependencies: - supports-color + optional: true human-signals@2.1.0: {} @@ -9755,6 +9642,7 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 + optional: true icss-replace-symbols@1.1.0: {} @@ -9785,8 +9673,6 @@ snapshots: imurmurhash@0.1.4: {} - indent-string@4.0.0: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -9882,7 +9768,8 @@ snapshots: is-plain-object@5.0.0: {} - is-potential-custom-element-name@1.0.1: {} + is-potential-custom-element-name@1.0.1: + optional: true is-reference@1.2.1: dependencies: @@ -9960,7 +9847,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.5 + debug: 4.3.7 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -9983,48 +9870,6 @@ 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 @@ -10091,6 +9936,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true jsesc@0.5.0: {} @@ -10205,6 +10051,8 @@ snapshots: dependencies: get-func-name: 2.0.2 + loupe@3.1.2: {} + lru-cache@10.4.0: {} lru-cache@5.1.1: @@ -10225,10 +10073,14 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - magicast@0.3.4: + magic-string@0.30.12: dependencies: - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@jridgewell/sourcemap-codec': 1.5.0 + + magicast@0.3.5: + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 source-map-js: 1.2.0 make-dir@2.1.0: @@ -10401,13 +10253,14 @@ snapshots: ms@2.1.3: {} - msw@2.3.1(typescript@5.5.3): + msw@2.6.0(@types/node@20.14.10)(typescript@5.5.3): dependencies: '@bundled-es-modules/cookie': 2.0.0 '@bundled-es-modules/statuses': 1.0.1 - '@inquirer/confirm': 3.1.14 - '@mswjs/cookies': 1.1.1 - '@mswjs/interceptors': 0.29.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 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 '@types/statuses': 2.0.5 @@ -10416,14 +10269,16 @@ snapshots: headers-polyfill: 4.0.3 is-node-process: 1.2.0 outvariant: 1.4.3 - path-to-regexp: 6.2.2 + path-to-regexp: 6.3.0 strict-event-emitter: 0.5.1 - type-fest: 4.21.0 + type-fest: 4.26.1 yargs: 17.7.2 optionalDependencies: typescript: 5.5.3 + transitivePeerDependencies: + - '@types/node' - mute-stream@1.0.0: {} + mute-stream@2.0.0: {} mz@2.7.0: dependencies: @@ -10512,7 +10367,8 @@ snapshots: number-is-nan@1.0.1: {} - nwsapi@2.2.10: {} + nwsapi@2.2.10: + optional: true nypm@0.3.9: dependencies: @@ -10632,6 +10488,7 @@ snapshots: parse5@7.1.2: dependencies: entities: 4.5.0 + optional: true parseurl@1.3.3: {} @@ -10656,7 +10513,7 @@ snapshots: path-to-regexp@0.1.7: {} - path-to-regexp@6.2.2: {} + path-to-regexp@6.3.0: {} path-type@3.0.0: dependencies: @@ -10957,13 +10814,6 @@ 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: {} @@ -11059,9 +10909,6 @@ snapshots: react-is@18.1.0: {} - react-is@18.3.1: - optional: true - react-refresh@0.14.2: {} react@18.3.1: @@ -11096,11 +10943,6 @@ 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 @@ -11289,9 +11131,11 @@ snapshots: fsevents: 2.3.3 optional: true - rrweb-cssom@0.6.0: {} + rrweb-cssom@0.6.0: + optional: true - rrweb-cssom@0.7.1: {} + rrweb-cssom@0.7.1: + optional: true run-parallel@1.2.0: dependencies: @@ -11316,13 +11160,12 @@ 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: {} @@ -11418,7 +11261,7 @@ snapshots: simple-git-hooks@2.11.1: {} - sirv@2.0.4: + sirv@3.0.0: dependencies: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 @@ -11489,11 +11332,6 @@ 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: {} @@ -11611,10 +11449,6 @@ 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 @@ -11666,7 +11500,8 @@ snapshots: picocolors: 1.0.1 stable: 0.1.8 - symbol-tree@3.2.4: {} + symbol-tree@3.2.4: + optional: true tailwindcss@3.4.4: dependencies: @@ -11757,13 +11592,15 @@ snapshots: tiny-invariant@1.3.3: {} - tinybench@2.8.0: {} + tinybench@2.9.0: {} - tinypool@1.0.0: {} + tinyexec@0.3.1: {} + + tinypool@1.0.1: {} tinyrainbow@1.2.0: {} - tinyspy@3.0.0: {} + tinyspy@3.0.2: {} to-fast-properties@2.0.0: {} @@ -11789,6 +11626,7 @@ snapshots: tr46@5.0.0: dependencies: punycode: 2.3.1 + optional: true tree-kill@1.2.2: {} @@ -11839,7 +11677,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.21.0: {} + type-fest@4.26.1: {} type-is@1.6.18: dependencies: @@ -11968,12 +11806,11 @@ snapshots: vary@1.1.2: {} - vite-node@2.0.2(@types/node@20.14.10)(terser@5.31.2): + vite-node@2.1.4(@types/node@20.14.10)(terser@5.31.2): dependencies: cac: 6.7.14 - debug: 4.3.5 + debug: 4.3.7 pathe: 1.1.2 - tinyrainbow: 1.2.0 vite: 5.3.3(@types/node@20.14.10)(terser@5.31.2) transitivePeerDependencies: - '@types/node' @@ -11995,34 +11832,46 @@ snapshots: fsevents: 2.3.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): + 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)): dependencies: - '@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 + '@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 pathe: 1.1.2 std-env: 3.7.0 - tinybench: 2.8.0 - tinypool: 1.0.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.3.3(@types/node@20.14.10)(terser@5.31.2) - vite-node: 2.0.2(@types/node@20.14.10)(terser@5.31.2) - why-is-node-running: 2.2.2 + vite-node: 2.1.4(@types/node@20.14.10)(terser@5.31.2) + why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.14.10 - '@vitest/browser': 2.0.2(playwright@1.45.1)(typescript@5.5.3)(vitest@2.0.2) + '@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) jsdom: 24.1.0 transitivePeerDependencies: - less - lightningcss + - msw - sass - stylus - sugarss @@ -12032,6 +11881,7 @@ snapshots: w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 + optional: true walk-up-path@3.0.1: {} @@ -12041,7 +11891,8 @@ snapshots: webidl-conversions@4.0.2: {} - webidl-conversions@7.0.0: {} + webidl-conversions@7.0.0: + optional: true webpack-sources@3.2.3: {} @@ -12050,13 +11901,16 @@ snapshots: whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 + optional: true - whatwg-mimetype@4.0.0: {} + whatwg-mimetype@4.0.0: + optional: true whatwg-url@14.0.0: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 + optional: true whatwg-url@7.1.0: dependencies: @@ -12105,7 +11959,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.2.2: + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 stackback: 0.0.2 @@ -12144,9 +11998,11 @@ snapshots: ws@8.18.0: {} - xml-name-validator@5.0.0: {} + xml-name-validator@5.0.0: + optional: true - xmlchars@2.2.0: {} + xmlchars@2.2.0: + optional: true y18n@5.0.8: {} diff --git a/src/__tests__/InView.test.tsx b/src/__tests__/InView.test.tsx index 46b12e38..13b3f996 100644 --- a/src/__tests__/InView.test.tsx +++ b/src/__tests__/InView.test.tsx @@ -1,5 +1,6 @@ -import { fireEvent, render, screen } from "@testing-library/react"; +import { userEvent } from "@vitest/browser/context"; import React from "react"; +import { render } from "vitest-browser-react"; import { InView } from "../InView"; import { defaultFallbackInView } from "../observe"; import { intersectionMockInstance, mockAllIsIntersecting } from "../test-utils"; @@ -26,7 +27,7 @@ test("Should render intersecting", () => { }); test("should render plain children", () => { - render(inner); + const screen = render(inner); screen.getByText("inner"); }); @@ -55,7 +56,7 @@ test("Should respect skip", () => { test("Should handle initialInView", () => { const cb = vi.fn(); - render( + const screen = render( {({ inView }) => InView: {inView.toString()}} , @@ -142,7 +143,7 @@ test("Should unobserve when unmounted", () => { expect(instance.unobserve).toHaveBeenCalled(); }); -test("plain children should not catch bubbling onChange event", () => { +test("plain children should not catch bubbling onChange event", async () => { const onChange = vi.fn(); const { getByLabelText } = render( @@ -153,7 +154,7 @@ test("plain children should not catch bubbling onChange event", () => { , ); const input = getByLabelText("input"); - fireEvent.change(input, { target: { value: "changed value" } }); + await userEvent.type(input, "changed value"); expect(onChange).not.toHaveBeenCalled(); }); diff --git a/src/__tests__/browser/browser.test.tsx b/src/__tests__/browser.test.tsx similarity index 67% rename from src/__tests__/browser/browser.test.tsx rename to src/__tests__/browser.test.tsx index c6a95460..04f7ab08 100644 --- a/src/__tests__/browser/browser.test.tsx +++ b/src/__tests__/browser.test.tsx @@ -1,11 +1,13 @@ -import { cleanup, render, screen } from "@testing-library/react/pure"; import React from "react"; -import type { IntersectionOptions } from "../../index"; -import { useInView } from "../../useInView"; +import { render } from "vitest-browser-react"; +import type { IntersectionOptions } from "../index"; +import { useInView } from "../useInView"; -afterEach(() => { - cleanup(); -}); +/** + * Test the real Intersection Observer API, without using the mocked version from `test-utils` + * @param options + * @constructor + */ const HookComponent = ({ options }: { options?: IntersectionOptions }) => { const [ref, inView] = useInView(options); @@ -23,13 +25,13 @@ const HookComponent = ({ options }: { options?: IntersectionOptions }) => { }; test("should come into view on after rendering", async () => { - render(); + const screen = render(); const wrapper = screen.getByTestId("wrapper"); await expect.element(wrapper).toHaveAttribute("data-inview", "true"); }); test("should come into view after scrolling", async () => { - render( + const screen = render( <>
@@ -39,12 +41,12 @@ test("should come into view after scrolling", async () => { const wrapper = screen.getByTestId("wrapper"); // Should not be inside the view - expect(wrapper).toHaveAttribute("data-inview", "false"); + await expect.element(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 - expect(wrapper).toHaveAttribute("data-inview", "false"); + await expect.element(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 6c3c5107..72da5e66 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"); + const wrapper = getByTestId("wrapper").element(); 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"); + const wrapper = getByTestId("wrapper").element(); 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"); + const wrapper = getByTestId("wrapper").element(); const instance = intersectionMockInstance(wrapper); expect(instance.observe).toHaveBeenCalledWith(wrapper); @@ -72,7 +72,7 @@ test("should create a hook inView", () => { }); test("should mock thresholds", () => { - render(); + const screen = 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"); + const wrapper = getByTestId("wrapper").element(); 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(item1.getAttribute("data-inview")).toBe("true"); - expect(item2.getAttribute("data-inview")).toBe("false"); + expect.element(item1).toHaveAttribute("data-inview", "true"); + expect.element(item2).toHaveAttribute("data-inview", "false"); rerender(); mockAllIsIntersecting(true); // Item2 should be inView - expect(item1.getAttribute("data-inview")).toBe("false"); - expect(item2.getAttribute("data-inview")).toBe("true"); + expect.element(item1).toHaveAttribute("data-inview", "false"); + expect.element(item2).toHaveAttribute("data-inview", "true"); rerender(); // Nothing should be inView - expect(item1.getAttribute("data-inview")).toBe("false"); - expect(item2.getAttribute("data-inview")).toBe("false"); + expect.element(item1).toHaveAttribute("data-inview", "false"); + expect.element(item2).toHaveAttribute("data-inview", "false"); // Add the ref back rerender(); mockAllIsIntersecting(true); - expect(item1.getAttribute("data-inview")).toBe("true"); - expect(item2.getAttribute("data-inview")).toBe("false"); + expect.element(item1).toHaveAttribute("data-inview", "true"); + expect.element(item2).toHaveAttribute("data-inview", "false"); }); const MergeRefsComponent = ({ options }: { options?: IntersectionOptions }) => { @@ -248,7 +248,7 @@ test("should handle ref merged", () => { mockAllIsIntersecting(true); rerender(); - expect(getByTestId("inview").getAttribute("data-inview")).toBe("true"); + expect.element(getByTestId("inview")).toHaveAttribute("data-inview", "true"); }); const MultipleHookComponent = ({ @@ -289,14 +289,14 @@ test("should handle multiple hooks on the same element", () => { , ); mockAllIsIntersecting(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"); + 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"); }); test("should handle thresholds missing on observer instance", () => { - render(); - const wrapper = screen.getByTestId("wrapper"); + const screen = render(); + const wrapper = screen.getByTestId("wrapper").element(); 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", () => { - render(); - const wrapper = screen.getByTestId("wrapper"); + const screen = render(); + const wrapper = screen.getByTestId("wrapper").element(); 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", () => { - render( + const screen = render( , ); - const wrapper = screen.getByTestId("wrapper"); + const wrapper = screen.getByTestId("wrapper").element(); mockIsIntersecting(wrapper, 0.5); screen.getByText(/intersectionRatio: 0.5/); @@ -344,17 +344,15 @@ test("should set intersection ratio as the largest threshold smaller than trigge test("should handle fallback if unsupported", () => { // @ts-ignore window.IntersectionObserver = undefined; - const { rerender } = render( - , - ); + const screen = render(); screen.getByText("true"); - rerender(); + screen.rerender(); screen.getByText("false"); expect(() => { vi.spyOn(console, "error").mockImplementation(() => {}); - rerender(); + screen.rerender(); // @ts-ignore console.error.mockRestore(); }).toThrowErrorMatchingInlineSnapshot( @@ -366,17 +364,17 @@ test("should handle defaultFallbackInView if unsupported", () => { // @ts-ignore window.IntersectionObserver = undefined; defaultFallbackInView(true); - const { rerender } = render(); + const screen = render(); screen.getByText("true"); defaultFallbackInView(false); - rerender(); + screen.rerender(); screen.getByText("false"); defaultFallbackInView(undefined); expect(() => { vi.spyOn(console, "error").mockImplementation(() => {}); - rerender(); + screen.rerender(); // @ts-ignore console.error.mockRestore(); }).toThrowErrorMatchingInlineSnapshot( diff --git a/src/__tests__/setup.test.ts b/src/__tests__/setup.test.ts index e5eb64ac..c2ccbfc8 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 `beforeEach` from global, so we can detect if this is a test env + // Clear the `vi` from global, so we can detect if this is a test env // @ts-ignore - global.vi = undefined; + window.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 4945f76f..d66c0c85 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) { - global.IntersectionObserver = mockFn((cb, options = {}) => { + window.IntersectionObserver = mockFn((cb, options = {}) => { const item = { callback: cb, elements: new Set(), @@ -98,17 +98,19 @@ export function setupIntersectionMocking(mockFn: typeof vi.fn) { */ export function resetIntersectionMocking() { if ( - global.IntersectionObserver && - "mockClear" in global.IntersectionObserver && - typeof global.IntersectionObserver.mockClear === "function" + window.IntersectionObserver && + "mockClear" in window.IntersectionObserver && + typeof window.IntersectionObserver.mockClear === "function" ) { - global.IntersectionObserver.mockClear(); + window.IntersectionObserver.mockClear(); } observers.clear(); } function getIsReactActEnvironment() { - return Boolean(global.IS_REACT_ACT_ENVIRONMENT); + return Boolean( + typeof window !== "undefined" && window.IS_REACT_ACT_ENVIRONMENT, + ); } function triggerIntersection( diff --git a/vitest.config.mts b/vitest.config.mts index 972428be..32e7e5c3 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -2,12 +2,22 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ optimizeDeps: { - include: ["@vitest/coverage-istanbul"], + include: [ + "@vitest/coverage-istanbul", + "react", + "vitest-browser-react", + "react-dom/test-utils", + ], }, test: { - environment: "jsdom", + environment: "node", 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 deleted file mode 100644 index 31934b64..00000000 --- a/vitest.workspace.ts +++ /dev/null @@ -1,30 +0,0 @@ -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, - }, - }, - }, -]);