From adc23f7d4a951815efe6c7f5c975d44d6892145a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Sep 2026 16:57:24 +0000 Subject: [PATCH 1/2] chore(deps): update dependency vitest to v4 [security] --- bun.lock | 103 ++++++++++------------- package.json | 2 +- packages/cli/package.json | 2 +- packages/core/package.json | 2 +- packages/engine/package.json | 2 +- packages/lint/package.json | 2 +- packages/parsers/package.json | 2 +- packages/player/package.json | 2 +- packages/producer/package.json | 2 +- packages/sdk-playground/package.json | 2 +- packages/sdk/package.json | 2 +- packages/shader-transitions/package.json | 2 +- packages/studio-server/package.json | 2 +- packages/studio/package.json | 2 +- 14 files changed, 58 insertions(+), 71 deletions(-) diff --git a/bun.lock b/bun.lock index 7697f43c3c..804abbc8ba 100644 --- a/bun.lock +++ b/bun.lock @@ -18,13 +18,13 @@ "oxlint": "^1.56.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", "yaml": "^2.9.0", }, }, "packages/aws-lambda": { "name": "@hyperframes/aws-lambda", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@aws-sdk/client-s3": "^3.700.0", "@aws-sdk/client-sfn": "^3.700.0", @@ -57,9 +57,10 @@ }, "packages/cli": { "name": "@hyperframes/cli", - "version": "0.8.14", + "version": "0.8.33", "bin": { "hyperframes": "./bin/hyperframes.mjs", + "hyperframes-localize-fonts": "./bin/hyperframes-localize-fonts.mjs", }, "dependencies": { "@hono/node-server": "^2.0.5", @@ -102,7 +103,7 @@ "tsup": "^8.0.0", "tsx": "^4.0.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, "optionalDependencies": { "@google/genai": "^1.50.1", @@ -110,7 +111,7 @@ }, "packages/core": { "name": "@hyperframes/core", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@chenglou/pretext": "^0.0.5", "@hyperframes/lint": "workspace:*", @@ -127,7 +128,7 @@ "jsdom": "^29.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, "optionalDependencies": { "esbuild": "^0.25.12", @@ -135,7 +136,7 @@ }, "packages/engine": { "name": "@hyperframes/engine", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@hono/node-server": "^2.0.5", "@hyperframes/core": "workspace:^", @@ -149,12 +150,12 @@ "@types/node": "^25.0.10", "@webgpu/types": "^0.1.69", "typescript": "^5.7.2", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/gcp-cloud-run": { "name": "@hyperframes/gcp-cloud-run", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@google-cloud/storage": "^7.14.0", "@google-cloud/workflows": "^4.2.0", @@ -175,7 +176,7 @@ }, "packages/lint": { "name": "@hyperframes/lint", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@hyperframes/parsers": "workspace:*", "htmlparser2": "^10.1.0", @@ -188,12 +189,12 @@ "tsup": "^8.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/parsers": { "name": "@hyperframes/parsers", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@babel/parser": "^7.27.0", "acorn": "^8.17.0", @@ -208,12 +209,12 @@ "tsup": "^8.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/player": { "name": "@hyperframes/player", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@hyperframes/core": "workspace:*", }, @@ -223,12 +224,12 @@ "puppeteer-core": "^25.2.1", "tsup": "^8.0.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/producer": { "name": "@hyperframes/producer", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@fontsource/archivo-black": "^5.2.8", "@fontsource/eb-garamond": "^5.2.7", @@ -268,12 +269,12 @@ "esbuild": "^0.25.12", "tsx": "^4.21.0", "typescript": "^5.7.2", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/sdk": { "name": "@hyperframes/sdk", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@hyperframes/core": "workspace:*", "@hyperframes/parsers": "workspace:*", @@ -283,7 +284,7 @@ "@types/node": "^25.0.10", "happy-dom": "^20.9.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/sdk-playground": { @@ -298,24 +299,24 @@ "@types/node": "^25.0.10", "typescript": "^5.0.0", "vite": "^6.4.2", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/shader-transitions": { "name": "@hyperframes/shader-transitions", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "html2canvas": "^1.4.1", }, "devDependencies": { "tsup": "^8.0.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, "packages/studio": { "name": "@hyperframes/studio", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@codemirror/autocomplete": "^6.20.1", "@codemirror/commands": "^6.10.3", @@ -356,7 +357,7 @@ "tsup": "^8.0.0", "typescript": "^5.0.0", "vite": "^6.4.2", - "vitest": "^3.2.4", + "vitest": "^4.1.11", "zustand": "^5.0.0", }, "peerDependencies": { @@ -367,7 +368,7 @@ }, "packages/studio-server": { "name": "@hyperframes/studio-server", - "version": "0.8.14", + "version": "0.8.33", "dependencies": { "@hyperframes/core": "workspace:*", "@hyperframes/parsers": "workspace:*", @@ -381,7 +382,7 @@ "tsup": "^8.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", }, }, }, @@ -1208,19 +1209,19 @@ "@vitest/coverage-v8": ["@vitest/coverage-v8@3.2.4", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", "ast-v8-to-istanbul": "^0.3.3", "debug": "^4.4.1", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", "magic-string": "^0.30.17", "magicast": "^0.3.5", "std-env": "^3.9.0", "test-exclude": "^7.0.1", "tinyrainbow": "^2.0.0" }, "peerDependencies": { "@vitest/browser": "3.2.4", "vitest": "3.2.4" }, "optionalPeers": ["@vitest/browser"] }, "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ=="], - "@vitest/expect": ["@vitest/expect@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig=="], + "@vitest/expect": ["@vitest/expect@4.1.11", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.11", "@vitest/utils": "4.1.11", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw=="], - "@vitest/mocker": ["@vitest/mocker@3.2.4", "", { "dependencies": { "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ=="], + "@vitest/mocker": ["@vitest/mocker@4.1.11", "", { "dependencies": { "@vitest/spy": "4.1.11", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ=="], - "@vitest/pretty-format": ["@vitest/pretty-format@3.2.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="], + "@vitest/pretty-format": ["@vitest/pretty-format@4.1.11", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw=="], - "@vitest/runner": ["@vitest/runner@3.2.4", "", { "dependencies": { "@vitest/utils": "3.2.4", "pathe": "^2.0.3", "strip-literal": "^3.0.0" } }, "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ=="], + "@vitest/runner": ["@vitest/runner@4.1.11", "", { "dependencies": { "@vitest/utils": "4.1.11", "pathe": "^2.0.3" } }, "sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw=="], - "@vitest/snapshot": ["@vitest/snapshot@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" } }, "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ=="], + "@vitest/snapshot": ["@vitest/snapshot@4.1.11", "", { "dependencies": { "@vitest/pretty-format": "4.1.11", "@vitest/utils": "4.1.11", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog=="], - "@vitest/spy": ["@vitest/spy@3.2.4", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw=="], + "@vitest/spy": ["@vitest/spy@4.1.11", "", {}, "sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA=="], - "@vitest/utils": ["@vitest/utils@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="], + "@vitest/utils": ["@vitest/utils@4.1.11", "", { "dependencies": { "@vitest/pretty-format": "4.1.11", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ=="], "@webgpu/types": ["@webgpu/types@0.1.70", "", {}, "sha512-LFiNHHKMvmAEvwVew3JLJmTdShhbdwRFSImUshGhE2mGE8ybQzIo63l5uRp+YKnNx+8Qno8Kf6gN+DKMreIJCA=="], @@ -1336,12 +1337,10 @@ "caseless": ["caseless@0.12.0", "", {}, "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="], - "chai": ["chai@5.3.3", "", { "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" } }, "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw=="], + "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "check-error": ["check-error@2.1.3", "", {}, "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA=="], - "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], @@ -1416,8 +1415,6 @@ "decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="], - "deep-eql": ["deep-eql@5.0.2", "", {}, "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q=="], - "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], @@ -1478,7 +1475,7 @@ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], + "es-module-lexer": ["es-module-lexer@2.3.2", "", {}, "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw=="], "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="], @@ -1756,8 +1753,6 @@ "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], - "loupe": ["loupe@3.2.1", "", {}, "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ=="], - "lru-cache": ["lru-cache@11.3.6", "", {}, "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A=="], "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], @@ -1824,6 +1819,8 @@ "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], + "obug": ["obug@2.2.1", "", {}, "sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q=="], + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], "onnxruntime-common": ["onnxruntime-common@1.21.1", "", {}, "sha512-E0q8+fMyJ+F8dvlwVsXcujrOc96lkPIDAZh3p6pjrZS4bzjowIcUMv48W5zOcFLtlWyycUlRPJWUUK2+3IL1eA=="], @@ -1866,8 +1863,6 @@ "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "pathval": ["pathval@2.0.1", "", {}, "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ=="], - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], @@ -1994,7 +1989,7 @@ "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], - "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], + "std-env": ["std-env@4.2.0", "", {}, "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw=="], "stream-events": ["stream-events@1.0.5", "", { "dependencies": { "stubs": "^3.0.0" } }, "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg=="], @@ -2014,8 +2009,6 @@ "strip-json-comments": ["strip-json-comments@5.0.3", "", {}, "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw=="], - "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], - "strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], "stubs": ["stubs@3.0.0", "", {}, "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw=="], @@ -2066,9 +2059,7 @@ "tinypool": ["tinypool@2.1.0", "", {}, "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw=="], - "tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], - - "tinyspy": ["tinyspy@4.0.4", "", {}, "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q=="], + "tinyrainbow": ["tinyrainbow@3.1.1", "", {}, "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw=="], "tldts": ["tldts@7.0.30", "", { "dependencies": { "tldts-core": "^7.0.30" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw=="], @@ -2124,9 +2115,7 @@ "vite": ["vite@6.4.2", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ=="], - "vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="], - - "vitest": ["vitest@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "^3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.4", "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="], + "vitest": ["vitest@4.1.11", "", { "dependencies": { "@vitest/expect": "4.1.11", "@vitest/mocker": "4.1.11", "@vitest/pretty-format": "4.1.11", "@vitest/runner": "4.1.11", "@vitest/snapshot": "4.1.11", "@vitest/spy": "4.1.11", "@vitest/utils": "4.1.11", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.11", "@vitest/browser-preview": "4.1.11", "@vitest/browser-webdriverio": "4.1.11", "@vitest/coverage-istanbul": "4.1.11", "@vitest/coverage-v8": "4.1.11", "@vitest/ui": "4.1.11", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw=="], "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], @@ -2214,6 +2203,10 @@ "@puppeteer/browsers/yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="], + "@vitest/coverage-v8/std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], + + "@vitest/coverage-v8/tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], + "anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "aws-cdk-lib/yaml": ["yaml@1.10.3", "", {}, "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA=="], @@ -2280,8 +2273,6 @@ "sharp/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], - "strip-literal/js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], - "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "tailwindcss/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], @@ -2298,10 +2289,6 @@ "tsx/esbuild": ["esbuild@0.27.7", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.7", "@esbuild/android-arm": "0.27.7", "@esbuild/android-arm64": "0.27.7", "@esbuild/android-x64": "0.27.7", "@esbuild/darwin-arm64": "0.27.7", "@esbuild/darwin-x64": "0.27.7", "@esbuild/freebsd-arm64": "0.27.7", "@esbuild/freebsd-x64": "0.27.7", "@esbuild/linux-arm": "0.27.7", "@esbuild/linux-arm64": "0.27.7", "@esbuild/linux-ia32": "0.27.7", "@esbuild/linux-loong64": "0.27.7", "@esbuild/linux-mips64el": "0.27.7", "@esbuild/linux-ppc64": "0.27.7", "@esbuild/linux-riscv64": "0.27.7", "@esbuild/linux-s390x": "0.27.7", "@esbuild/linux-x64": "0.27.7", "@esbuild/netbsd-arm64": "0.27.7", "@esbuild/netbsd-x64": "0.27.7", "@esbuild/openbsd-arm64": "0.27.7", "@esbuild/openbsd-x64": "0.27.7", "@esbuild/openharmony-arm64": "0.27.7", "@esbuild/sunos-x64": "0.27.7", "@esbuild/win32-arm64": "0.27.7", "@esbuild/win32-ia32": "0.27.7", "@esbuild/win32-x64": "0.27.7" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w=="], - "vitest/tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], - - "vitest/tinypool": ["tinypool@1.1.1", "", {}, "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg=="], - "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], "@google-cloud/storage/google-auth-library/gcp-metadata": ["gcp-metadata@6.1.1", "", { "dependencies": { "gaxios": "^6.1.1", "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" } }, "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A=="], diff --git a/package.json b/package.json index d3c3fce3a0..d430270fa6 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "oxlint": "^1.56.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4", + "vitest": "^4.1.11", "yaml": "^2.9.0" }, "resolutions": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 42f90d188b..276591e385 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -70,7 +70,7 @@ "tsup": "^8.0.0", "tsx": "^4.0.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" }, "optionalDependencies": { "@google/genai": "^1.50.1" diff --git a/packages/core/package.json b/packages/core/package.json index 7be5340e9c..0cf5aff89d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -700,7 +700,7 @@ "jsdom": "^29.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" }, "optionalDependencies": { "esbuild": "^0.25.12" diff --git a/packages/engine/package.json b/packages/engine/package.json index f1ce180cf4..9e1639bdf9 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -70,7 +70,7 @@ "@types/node": "^25.0.10", "@webgpu/types": "^0.1.69", "typescript": "^5.7.2", - "vitest": "^3.2.4" + "vitest": "^4.1.11" }, "engines": { "node": ">=22" diff --git a/packages/lint/package.json b/packages/lint/package.json index ea16986708..4d46ef155f 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -64,6 +64,6 @@ "tsup": "^8.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" } } diff --git a/packages/parsers/package.json b/packages/parsers/package.json index 639edb4073..8378cc3415 100644 --- a/packages/parsers/package.json +++ b/packages/parsers/package.json @@ -206,6 +206,6 @@ "tsup": "^8.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" } } diff --git a/packages/player/package.json b/packages/player/package.json index 0ad9a78ad7..a3f1a257c2 100644 --- a/packages/player/package.json +++ b/packages/player/package.json @@ -43,6 +43,6 @@ "puppeteer-core": "^25.2.1", "tsup": "^8.0.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" } } diff --git a/packages/producer/package.json b/packages/producer/package.json index 152c4313e2..dbe0298bcc 100644 --- a/packages/producer/package.json +++ b/packages/producer/package.json @@ -114,7 +114,7 @@ "esbuild": "^0.25.12", "tsx": "^4.21.0", "typescript": "^5.7.2", - "vitest": "^3.2.4" + "vitest": "^4.1.11" }, "engines": { "node": ">=22" diff --git a/packages/sdk-playground/package.json b/packages/sdk-playground/package.json index ed208000a4..8e8da2d5c6 100644 --- a/packages/sdk-playground/package.json +++ b/packages/sdk-playground/package.json @@ -18,6 +18,6 @@ "@types/node": "^25.0.10", "typescript": "^5.0.0", "vite": "^6.4.2", - "vitest": "^3.2.4" + "vitest": "^4.1.11" } } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 0aa082ff99..d99134a16d 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -92,6 +92,6 @@ "@types/node": "^25.0.10", "happy-dom": "^20.9.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" } } diff --git a/packages/shader-transitions/package.json b/packages/shader-transitions/package.json index f70c5a472b..afbf37080a 100644 --- a/packages/shader-transitions/package.json +++ b/packages/shader-transitions/package.json @@ -46,6 +46,6 @@ "devDependencies": { "tsup": "^8.0.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" } } diff --git a/packages/studio-server/package.json b/packages/studio-server/package.json index 96fd4a5340..f280a40af6 100644 --- a/packages/studio-server/package.json +++ b/packages/studio-server/package.json @@ -146,6 +146,6 @@ "tsup": "^8.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", - "vitest": "^3.2.4" + "vitest": "^4.1.11" } } diff --git a/packages/studio/package.json b/packages/studio/package.json index 09965441b5..662b9f3c5b 100644 --- a/packages/studio/package.json +++ b/packages/studio/package.json @@ -95,7 +95,7 @@ "tsup": "^8.0.0", "typescript": "^5.0.0", "vite": "^6.4.2", - "vitest": "^3.2.4", + "vitest": "^4.1.11", "zustand": "^5.0.0" }, "peerDependencies": { From e4fe6d7968280a43365e4b720f0cdf4739a5436c Mon Sep 17 00:00:00 2001 From: James Date: Thu, 10 Sep 2026 10:28:16 -0700 Subject: [PATCH 2/2] fix(test): preserve test behavior on Vitest 4 --- bun.lock | 28 ++++++++--------- packages/cli/src/registry/remote.test.ts | 7 +++-- packages/core/package.json | 2 +- .../core/src/runtime/captionOverrides.test.ts | 2 ++ packages/core/src/runtime/mediaProxy.test.ts | 3 +- .../player/src/hyperframes-player.test.ts | 30 +++++++++---------- .../components/editor/AnimationCard.test.tsx | 6 ++-- .../propertyPanelFlatEffectsSection.test.tsx | 4 +-- .../components/renders/RenderQueue.test.tsx | 4 +-- ...seGsapInteractionFailureTelemetry.test.tsx | 4 +-- .../TimelineAutomationLane.test.tsx | 18 +++++------ .../components/timelineDragDrop.test.tsx | 6 ++-- packages/studio/src/test-setup.ts | 8 +++++ .../studio/src/utils/studioHelpers.test.ts | 6 +++- packages/studio/tsconfig.json | 2 +- 15 files changed, 72 insertions(+), 58 deletions(-) diff --git a/bun.lock b/bun.lock index 804abbc8ba..52b060cc06 100644 --- a/bun.lock +++ b/bun.lock @@ -124,7 +124,7 @@ "devDependencies": { "@types/jsdom": "^28.0.0", "@types/node": "^25.0.10", - "@vitest/coverage-v8": "^3.2.4", + "@vitest/coverage-v8": "^4.1.11", "jsdom": "^29.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", @@ -395,8 +395,6 @@ "packages": { "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], - "@asamuzakjp/css-color": ["@asamuzakjp/css-color@5.1.11", "", { "dependencies": { "@asamuzakjp/generational-cache": "^1.0.1", "@csstools/css-calc": "^3.2.0", "@csstools/css-color-parser": "^4.1.0", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg=="], "@asamuzakjp/dom-selector": ["@asamuzakjp/dom-selector@7.1.1", "", { "dependencies": { "@asamuzakjp/generational-cache": "^1.0.1", "@asamuzakjp/nwsapi": "^2.3.9", "bidi-js": "^1.0.3", "css-tree": "^3.2.1", "is-potential-custom-element-name": "^1.0.1" } }, "sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ=="], @@ -819,8 +817,6 @@ "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], - "@istanbuljs/schema": ["@istanbuljs/schema@0.1.6", "", {}, "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw=="], - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], @@ -1207,7 +1203,7 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], - "@vitest/coverage-v8": ["@vitest/coverage-v8@3.2.4", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", "ast-v8-to-istanbul": "^0.3.3", "debug": "^4.4.1", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", "magic-string": "^0.30.17", "magicast": "^0.3.5", "std-env": "^3.9.0", "test-exclude": "^7.0.1", "tinyrainbow": "^2.0.0" }, "peerDependencies": { "@vitest/browser": "3.2.4", "vitest": "3.2.4" }, "optionalPeers": ["@vitest/browser"] }, "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ=="], + "@vitest/coverage-v8": ["@vitest/coverage-v8@4.1.11", "", { "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/utils": "4.1.11", "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.2", "obug": "^2.1.1", "std-env": "^4.0.0-rc.1", "tinyrainbow": "^3.1.0" }, "peerDependencies": { "@vitest/browser": "4.1.11", "vitest": "4.1.11" }, "optionalPeers": ["@vitest/browser"] }, "sha512-8MVGEFnJIcdGjcbfKmeq8z0pZHH0JlVtoVZH9Q/qwUp6wyFnEJUBMrw9DCaj+ra3vShGmhavjalMIhPNxZAUcw=="], "@vitest/expect": ["@vitest/expect@4.1.11", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.11", "@vitest/utils": "4.1.11", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw=="], @@ -1257,7 +1253,7 @@ "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], - "ast-v8-to-istanbul": ["ast-v8-to-istanbul@0.3.12", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", "js-tokens": "^10.0.0" } }, "sha512-BRRC8VRZY2R4Z4lFIL35MwNXmwVqBityvOIwETtsCSwvjl0IdgFsy9NhdaA6j74nUdtJJlIypeRhpDam19Wq3g=="], + "ast-v8-to-istanbul": ["ast-v8-to-istanbul@1.0.6", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", "js-tokens": "^10.0.0" } }, "sha512-fvpl29helSO2w/z7utIbrkNXILdrLwDwAMH2I/zPKlGf5244+gf+B4cyS1sANcrPY2h+hWCGSgC8N61s/+AF9A=="], "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="], @@ -1677,8 +1673,6 @@ "istanbul-lib-report": ["istanbul-lib-report@3.0.1", "", { "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" } }, "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw=="], - "istanbul-lib-source-maps": ["istanbul-lib-source-maps@5.0.6", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0" } }, "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A=="], - "istanbul-reports": ["istanbul-reports@3.2.0", "", { "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" } }, "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA=="], "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], @@ -1757,7 +1751,7 @@ "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="], + "magicast": ["magicast@0.5.4", "", { "dependencies": { "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7", "source-map-js": "^1.2.1" } }, "sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w=="], "make-dir": ["make-dir@4.0.0", "", { "dependencies": { "semver": "^7.5.3" } }, "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw=="], @@ -2037,8 +2031,6 @@ "teex": ["teex@1.0.1", "", { "dependencies": { "streamx": "^2.12.5" } }, "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg=="], - "test-exclude": ["test-exclude@7.0.2", "", { "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^10.4.1", "minimatch": "^10.2.2" } }, "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw=="], - "text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="], "text-segmentation": ["text-segmentation@1.0.3", "", { "dependencies": { "utrie": "^1.0.2" } }, "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw=="], @@ -2203,10 +2195,6 @@ "@puppeteer/browsers/yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="], - "@vitest/coverage-v8/std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], - - "@vitest/coverage-v8/tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], - "anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "aws-cdk-lib/yaml": ["yaml@1.10.3", "", {}, "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA=="], @@ -2251,6 +2239,10 @@ "jsdom/whatwg-mimetype": ["whatwg-mimetype@5.0.0", "", {}, "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw=="], + "magicast/@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], + + "magicast/@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], + "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "minizlib/minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], @@ -2323,6 +2315,10 @@ "google-gax/retry-request/teeny-request": ["teeny-request@10.1.3", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2", "stream-events": "^1.0.5" } }, "sha512-5yDliI1uWkYPo7W+Zvrxg6YmoWuj5iC5EydewqrRTvc68nyMTZhlPPlLg6cptUGfbQAb+N9XDPDPzF6N081lug=="], + "magicast/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + + "magicast/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], + "node-fetch/whatwg-url/tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], "node-fetch/whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], diff --git a/packages/cli/src/registry/remote.test.ts b/packages/cli/src/registry/remote.test.ts index e667a21ba9..a40c25bbeb 100644 --- a/packages/cli/src/registry/remote.test.ts +++ b/packages/cli/src/registry/remote.test.ts @@ -56,7 +56,10 @@ async function staleAfterPriming( vi.useFakeTimers({ shouldAdvanceTime: true }); vi.setSystemTime(new Date(Date.now() + ONE_DAY_MS + 60_000)); - return vi.spyOn(globalThis, "fetch").mockRejectedValue(new Error("The operation was aborted")); + return vi + .spyOn(globalThis, "fetch") + .mockClear() + .mockRejectedValue(new Error("The operation was aborted")); } beforeEach(() => { @@ -119,7 +122,7 @@ describe("fetchRegistryManifest", () => { vi.spyOn(globalThis, "fetch").mockResolvedValueOnce(ok(null)); await fetchRegistryManifest(DEFAULT_REGISTRY_URL); - const fetchSpy = vi.spyOn(globalThis, "fetch").mockResolvedValue(ok(MANIFEST)); + const fetchSpy = vi.spyOn(globalThis, "fetch").mockClear().mockResolvedValue(ok(MANIFEST)); await expect(fetchRegistryManifest(DEFAULT_REGISTRY_URL)).resolves.toEqual(MANIFEST); expect(fetchSpy).toHaveBeenCalledTimes(1); diff --git a/packages/core/package.json b/packages/core/package.json index 0cf5aff89d..54cda84ffb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -696,7 +696,7 @@ "devDependencies": { "@types/jsdom": "^28.0.0", "@types/node": "^25.0.10", - "@vitest/coverage-v8": "^3.2.4", + "@vitest/coverage-v8": "^4.1.11", "jsdom": "^29.0.0", "tsx": "^4.21.0", "typescript": "^5.0.0", diff --git a/packages/core/src/runtime/captionOverrides.test.ts b/packages/core/src/runtime/captionOverrides.test.ts index d0a941e5d2..24eab59224 100644 --- a/packages/core/src/runtime/captionOverrides.test.ts +++ b/packages/core/src/runtime/captionOverrides.test.ts @@ -54,6 +54,8 @@ async function flushCaptionOverrides() { } afterEach(() => { + vi.clearAllMocks(); + vi.restoreAllMocks(); vi.unstubAllGlobals(); document.body.innerHTML = ""; Reflect.deleteProperty(window, "gsap"); diff --git a/packages/core/src/runtime/mediaProxy.test.ts b/packages/core/src/runtime/mediaProxy.test.ts index 74294e1b37..8d2e7286a7 100644 --- a/packages/core/src/runtime/mediaProxy.test.ts +++ b/packages/core/src/runtime/mediaProxy.test.ts @@ -58,11 +58,12 @@ function isProxied(el: HTMLMediaElement): boolean { } afterEach(() => { + vi.clearAllMocks(); + vi.restoreAllMocks(); document.body.innerHTML = ""; document.head.innerHTML = ""; delete (window as { __HF_MEDIA_CODEC_MAP__?: unknown }).__HF_MEDIA_CODEC_MAP__; delete (window as { __HF_EXPORT_RENDER_SEEK_CONFIG?: unknown }).__HF_EXPORT_RENDER_SEEK_CONFIG; - vi.restoreAllMocks(); }); describe("maybeProxyProactively", () => { diff --git a/packages/player/src/hyperframes-player.test.ts b/packages/player/src/hyperframes-player.test.ts index e4755c0fae..bac3a3e0c1 100644 --- a/packages/player/src/hyperframes-player.test.ts +++ b/packages/player/src/hyperframes-player.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; +import { describe, it, expect, vi, beforeEach, afterEach, type MockInstance } from "vitest"; import { formatTime, formatSpeed, SPEED_PRESETS } from "./controls.js"; // Install a stubbed contentDocument getter on the given iframe element. The @@ -152,9 +152,9 @@ describe("HyperframesPlayer parent-frame media", () => { load: vi.fn(), }; - vi.spyOn(globalThis, "Audio").mockImplementation( - () => mockAudio as unknown as HTMLAudioElement, - ); + vi.spyOn(globalThis, "Audio").mockImplementation(function () { + return mockAudio as unknown as HTMLAudioElement; + }); player = document.createElement("hyperframes-player") as PlayerElement; }); @@ -828,9 +828,9 @@ describe("HyperframesPlayer parent-proxy time-mirror coalescing", () => { pause: vi.fn(), load: vi.fn(), }; - vi.spyOn(globalThis, "Audio").mockImplementation( - () => mockAudio as unknown as HTMLAudioElement, - ); + vi.spyOn(globalThis, "Audio").mockImplementation(function () { + return mockAudio as unknown as HTMLAudioElement; + }); const fresh = document.createElement("hyperframes-player") as PlayerInternal; fresh.setAttribute("audio-src", "https://cdn.example.com/narration.mp3"); @@ -1702,9 +1702,9 @@ describe("HyperframesPlayer volume and mute", () => { play: vi.fn().mockResolvedValue(undefined), pause: vi.fn(), }; - vi.spyOn(globalThis, "Audio").mockImplementation( - () => mockAudio as unknown as HTMLAudioElement, - ); + vi.spyOn(globalThis, "Audio").mockImplementation(function () { + return mockAudio as unknown as HTMLAudioElement; + }); player = document.createElement("hyperframes-player") as typeof player; }); @@ -2012,7 +2012,7 @@ describe("HyperframesPlayer runtime ready handshake", () => { let player: PlayerInternal; let frameWindow: Window; - let postSpy: ReturnType; + let postSpy: MockInstance; function readyMessage() { return new MessageEvent("message", { @@ -2372,9 +2372,9 @@ describe("HyperframesPlayer playback rate", () => { play: vi.fn().mockResolvedValue(undefined), pause: vi.fn(), }; - vi.spyOn(globalThis, "Audio").mockImplementation( - () => mockAudio as unknown as HTMLAudioElement, - ); + vi.spyOn(globalThis, "Audio").mockImplementation(function () { + return mockAudio as unknown as HTMLAudioElement; + }); player = document.createElement("hyperframes-player") as typeof player; }); @@ -2526,7 +2526,7 @@ describe("HyperframesPlayer retained runtime data", () => { } let player: RuntimeDataPlayer; - let postSpy: ReturnType; + let postSpy: MockInstance; const readyMessage = () => new MessageEvent("message", { diff --git a/packages/studio/src/components/editor/AnimationCard.test.tsx b/packages/studio/src/components/editor/AnimationCard.test.tsx index 65cf0658b6..e0e96ab0aa 100644 --- a/packages/studio/src/components/editor/AnimationCard.test.tsx +++ b/packages/studio/src/components/editor/AnimationCard.test.tsx @@ -3,7 +3,7 @@ import React, { act } from "react"; import { createRoot } from "react-dom/client"; import type { GsapAnimation } from "@hyperframes/core/gsap-parser"; -import { afterEach, describe, expect, it, vi } from "vitest"; +import { afterEach, describe, expect, it, vi, type Mock } from "vitest"; import { AnimationCard } from "./AnimationCard"; import { EASE_PRESETS } from "./easePresetLibrary"; import type { AnimationKeyframeTarget } from "../../hooks/gsapTweenSynth"; @@ -118,8 +118,8 @@ function renderCard({ animation?: GsapAnimation; defaultExpanded?: boolean; flat?: boolean; - onUpdateMeta?: ReturnType; - onUpdateKeyframeEase?: ReturnType; + onUpdateMeta?: Mock; + onUpdateKeyframeEase?: Mock; onDeleteAnimation?: (id: string) => void; } = {}) { const host = document.createElement("div"); diff --git a/packages/studio/src/components/editor/propertyPanelFlatEffectsSection.test.tsx b/packages/studio/src/components/editor/propertyPanelFlatEffectsSection.test.tsx index 3b10d5eb11..8b993b2f0f 100644 --- a/packages/studio/src/components/editor/propertyPanelFlatEffectsSection.test.tsx +++ b/packages/studio/src/components/editor/propertyPanelFlatEffectsSection.test.tsx @@ -2,7 +2,7 @@ import React, { act } from "react"; import { createRoot } from "react-dom/client"; -import { afterEach, describe, expect, it, vi } from "vitest"; +import { afterEach, describe, expect, it, vi, type Mock } from "vitest"; import { HF_COLOR_GRADING_ACTIVE_EFFECT_KEYS, HF_COLOR_GRADING_EFFECT_APPLY_DEFAULTS, @@ -38,7 +38,7 @@ function renderInto(node: React.ReactElement) { function sectionProps( grading: ReturnType, - onCommitColorGrading: ReturnType = vi.fn(), + onCommitColorGrading: Mock = vi.fn(), ) { return { grading, diff --git a/packages/studio/src/components/renders/RenderQueue.test.tsx b/packages/studio/src/components/renders/RenderQueue.test.tsx index dee603c965..791b600730 100644 --- a/packages/studio/src/components/renders/RenderQueue.test.tsx +++ b/packages/studio/src/components/renders/RenderQueue.test.tsx @@ -2,7 +2,7 @@ import { act } from "react"; import { createRoot, type Root } from "react-dom/client"; -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { afterEach, beforeEach, describe, expect, it, vi, type Mock } from "vitest"; import { RenderQueue } from "./RenderQueue"; import type { FfmpegStatus } from "./useFfmpegStatus"; @@ -26,7 +26,7 @@ afterEach(() => { document.body.innerHTML = ""; }); -function mountRenderQueue(onStartRender: ReturnType) { +function mountRenderQueue(onStartRender: Mock) { const host = document.createElement("div"); document.body.append(host); root = createRoot(host); diff --git a/packages/studio/src/hooks/useGsapInteractionFailureTelemetry.test.tsx b/packages/studio/src/hooks/useGsapInteractionFailureTelemetry.test.tsx index 34e1ef06e2..39252bbcdc 100644 --- a/packages/studio/src/hooks/useGsapInteractionFailureTelemetry.test.tsx +++ b/packages/studio/src/hooks/useGsapInteractionFailureTelemetry.test.tsx @@ -1,7 +1,7 @@ // @vitest-environment happy-dom import React, { act } from "react"; -import { beforeEach, describe, expect, it, vi } from "vitest"; +import { beforeEach, describe, expect, it, vi, type Mock } from "vitest"; import type { DomEditSelection } from "../components/editor/domEditingTypes"; import { mountReactHarness } from "./domSelectionTestHarness"; import { GsapEditBlockedError } from "./gsapEditOutcome"; @@ -25,7 +25,7 @@ const selection = { element: document.createElement("div"), } as unknown as DomEditSelection; -function mountFailureTelemetry(showToast: ReturnType) { +function mountFailureTelemetry(showToast: Mock) { let report!: ReturnType; function Harness() { report = useGsapInteractionFailureTelemetry("index.html", showToast); diff --git a/packages/studio/src/player/components/TimelineAutomationLane.test.tsx b/packages/studio/src/player/components/TimelineAutomationLane.test.tsx index a869d4a496..86fe9f0607 100644 --- a/packages/studio/src/player/components/TimelineAutomationLane.test.tsx +++ b/packages/studio/src/player/components/TimelineAutomationLane.test.tsx @@ -1,6 +1,6 @@ // @vitest-environment happy-dom import { act } from "react"; -import { describe, expect, it, vi } from "vitest"; +import { describe, expect, it, vi, type Mock } from "vitest"; import { createRoot } from "react-dom/client"; import { TimelineAutomationLane } from "./TimelineAutomationLane"; import { PAD_X } from "./automationLaneGeometry"; @@ -602,8 +602,8 @@ const mount = (automation: HfAutomation, over: Record = {}) => // assertion below reads the calls the lane made. const props = { ...base, - onPreview: base.onPreview as ReturnType, - onCommit: base.onCommit as ReturnType, + onPreview: base.onPreview as Mock, + onCommit: base.onCommit as Mock, }; const { container } = render(); const svg = container.querySelector("svg")!; @@ -685,7 +685,7 @@ describe("TimelineAutomationLane segment drag", () => { ], }; - const previewedPoints = (props: { onPreview: ReturnType }) => + const previewedPoints = (props: { onPreview: Mock }) => props.onPreview.mock.calls.at(-1)?.[0].lanes[0].points as { t: number; v: number; @@ -787,8 +787,8 @@ const mountRerenderable = (automation: HfAutomation, over: Record, - onCommit: base.onCommit as ReturnType, + onPreview: base.onPreview as Mock, + onCommit: base.onCommit as Mock, }; const { container, rerender } = renderRerenderable(); const svg = container.querySelector("svg")!; @@ -944,7 +944,7 @@ describe("TimelineAutomationLane modifiers", () => { }, ], }; - const draggedTimes = (props: { onPreview: ReturnType }) => { + const draggedTimes = (props: { onPreview: Mock }) => { const points = props.onPreview.mock.calls.at(-1)?.[0].lanes[0].points as | { t: number }[] | undefined; @@ -1204,7 +1204,7 @@ describe("TimelineAutomationLane group drag", () => { }, ], }; - const pointsOf = (props: { onPreview: ReturnType }) => + const pointsOf = (props: { onPreview: Mock }) => props.onPreview.mock.calls.at(-1)?.[0].lanes[0].points as { t: number; v: number }[]; it("moves every selected point by the same distance", () => { @@ -1346,7 +1346,7 @@ describe("TimelineAutomationLane shift axis lock", () => { }, ], }; - const lastPoints = (props: { onPreview: ReturnType }) => + const lastPoints = (props: { onPreview: Mock }) => props.onPreview.mock.calls.at(-1)?.[0].lanes[0].points as { t: number; v: number }[]; it("holds the value when the pointer travels mostly sideways", () => { diff --git a/packages/studio/src/player/components/timelineDragDrop.test.tsx b/packages/studio/src/player/components/timelineDragDrop.test.tsx index cde1a319c5..b98a91041d 100644 --- a/packages/studio/src/player/components/timelineDragDrop.test.tsx +++ b/packages/studio/src/player/components/timelineDragDrop.test.tsx @@ -2,7 +2,7 @@ import React, { act } from "react"; import { createRoot } from "react-dom/client"; -import { afterEach, describe, expect, it, vi } from "vitest"; +import { afterEach, describe, expect, it, vi, type Mock } from "vitest"; import { TIMELINE_ASSET_MIME, TIMELINE_BLOCK_MIME } from "../../utils/timelineAssetDrop"; import { usePlayerStore } from "../store/playerStore"; import { createTimelineRowGeometry } from "./timelineLayout"; @@ -37,9 +37,9 @@ function assetTransfer(payload: string): DropTransfer { } function renderHarness( - onAssetDrop: ReturnType, + onAssetDrop: Mock, sessionEpoch = 1, - options: { onBlockDrop?: ReturnType; strict?: boolean } = {}, + options: { onBlockDrop?: Mock; strict?: boolean } = {}, ) { const tracks = Array.from({ length: 100 }, (_, index) => index); const geometry = createTimelineRowGeometry( diff --git a/packages/studio/src/test-setup.ts b/packages/studio/src/test-setup.ts index ac3c7debc0..101ae40f1c 100644 --- a/packages/studio/src/test-setup.ts +++ b/packages/studio/src/test-setup.ts @@ -4,3 +4,11 @@ if (typeof globalThis.CSS === "undefined") { if (typeof CSS.escape !== "function") { CSS.escape = (value: string) => value.replace(/([^\w-])/g, "\\$1"); } + +// happy-dom does not implement `window.confirm`. Vitest 3 let `vi.spyOn` invent +// a missing property; Vitest 4 refuses with "can only spy on a function", so the +// environment has to supply a real one for the guard tests to replace. Declining +// is the safe default: no test calls it without stubbing a return value first. +if (typeof globalThis.confirm !== "function") { + (globalThis as Record).confirm = () => false; +} diff --git a/packages/studio/src/utils/studioHelpers.test.ts b/packages/studio/src/utils/studioHelpers.test.ts index e14eb85b14..9e16a8c8ea 100644 --- a/packages/studio/src/utils/studioHelpers.test.ts +++ b/packages/studio/src/utils/studioHelpers.test.ts @@ -165,9 +165,13 @@ describe("resolveDroppedAssetDimensions", () => { naturalWidth: 0, src: "", }; + // Vitest 4 refuses to `new` an arrow-function mock, and the code under test + // constructs the probe with `new Image()`. vi.stubGlobal( "Image", - vi.fn(() => probe), + vi.fn(function () { + return probe; + }), ); const result = resolveDroppedAssetDimensions("demo", "assets/hung.png", "image"); diff --git a/packages/studio/tsconfig.json b/packages/studio/tsconfig.json index 52c0e2b2d1..a90d11223e 100644 --- a/packages/studio/tsconfig.json +++ b/packages/studio/tsconfig.json @@ -17,7 +17,7 @@ "sourceMap": true, "outDir": "dist", "rootDir": "..", - "types": ["vite/client"], + "types": ["vite/client", "node"], "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "noEmit": true,