diff --git a/.claude/skills/pr/SKILL.md b/.claude/skills/pr/SKILL.md index f814d9adfdf..305aadc4b11 100644 --- a/.claude/skills/pr/SKILL.md +++ b/.claude/skills/pr/SKILL.md @@ -7,7 +7,7 @@ Ensure we are not on the main branch, make a branch if necessary. For all packages affected, run Prettier to format the code: ``` -bunx prettier --experimental-cli src --write +bunx prettier src --write ``` Commit the changes, use the following format: diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index f35295d9d1f..974a0b4330b 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -8,7 +8,7 @@ The **package name** for each folder is `@remotion/[folder-name]`, except for th - `bun` is the package manager for the project. - To build the project after you made changes, run `bunx turbo make --filter="[package-name]"` and only include the package you are working on. Refer to package naming convention above. For example, the command to build the package in `packages/shapes` is `bunx turbo make --filter="@remotion/shapes"`. -- After making code changes, run `bunx prettier --experimental-cli src --write` to format the code. Do not run the formatted on the docs. +- After making code changes, run `bunx prettier src --write` to format the code. Do not run the formatted on the docs. ## Documentation diff --git a/bun.lock b/bun.lock index 7361162aedf..cf2a716f64e 100644 --- a/bun.lock +++ b/bun.lock @@ -425,6 +425,7 @@ "@remotion/whisper-web": "workspace:*", "@remotion/zod-types": "workspace:*", "@rive-app/canvas-advanced": "2.31.5", + "@shikijs/twoslash": "3.22.0", "@shopify/react-native-skia": "2.0.0", "@swc/core": "^1.3.80", "@turf/turf": "7.3.2", @@ -452,7 +453,9 @@ "react-dom": "catalog:", "remark-shiki-twoslash": "^3.1.3", "remotion": "workspace:*", + "shiki": "3.22.0", "three": "catalog:", + "twoslash": "0.3.6", "uuid": "^8.3.2", "zod": "catalog:", }, @@ -475,11 +478,11 @@ "version": "4.0.424", "dependencies": { "@docusaurus/types": "3.6.0", + "@shikijs/twoslash": "3.22.0", "@types/dom-webcodecs": "catalog:", - "@typescript/twoslash": "3.2.1", "fenceparser": "^2.2.0", - "shiki": "0.10.1", - "shiki-twoslash": "3.1.2", + "shiki": "3.22.0", + "twoslash": "0.3.6", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", }, @@ -1940,8 +1943,8 @@ "@types/react-dom": "19.2.3", "@types/web": "0.0.187", "@types/webrtc": "0.0.44", - "@vitejs/plugin-react": "4.1.0", - "@vitejs/plugin-react-swc": "3.0.0", + "@vitejs/plugin-react": "4.3.4", + "@vitejs/plugin-react-swc": "3.11.0", "autoprefixer": "10.4.16", "postcss": "8.4.31", "prettier": "3.8.1", @@ -2174,7 +2177,7 @@ "@types/bun": "1.3.3", "@vercel/blob": "2.0.1", "@vercel/functions": "^3.4.1", - "@vercel/sandbox": "1.3.1", + "@vercel/sandbox": "1.6.0", "clsx": "2.1.1", "next": "16.1.5", "react": "19.2.3", @@ -2375,7 +2378,7 @@ "@types/three": "0.170.0", "@types/web": "0.0.166", "@typescript/native-preview": "7.0.0-dev.20260217.1", - "@vitejs/plugin-react": "4.1.0", + "@vitejs/plugin-react": "4.3.4", "@vitest/browser-playwright": "4.0.9", "eslint": "9.19.0", "mediabunny": "1.34.4", @@ -2753,9 +2756,9 @@ "@babel/plugin-transform-react-jsx-development": ["@babel/plugin-transform-react-jsx-development@7.25.9", "", { "dependencies": { "@babel/plugin-transform-react-jsx": "7.25.9" }, "peerDependencies": { "@babel/core": "7.23.2" } }, "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw=="], - "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "7.27.1" }, "peerDependencies": { "@babel/core": "7.23.2" } }, "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw=="], + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "7.25.9" }, "peerDependencies": { "@babel/core": "7.26.0" } }, "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg=="], - "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "7.27.1" }, "peerDependencies": { "@babel/core": "7.23.2" } }, "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw=="], + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "7.25.9" }, "peerDependencies": { "@babel/core": "7.26.0" } }, "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg=="], "@babel/plugin-transform-react-pure-annotations": ["@babel/plugin-transform-react-pure-annotations@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-plugin-utils": "7.25.9" }, "peerDependencies": { "@babel/core": "7.23.2" } }, "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg=="], @@ -3753,6 +3756,8 @@ "@rive-app/canvas-advanced": ["@rive-app/canvas-advanced@2.31.5", "", {}, "sha512-zwqLIc5wRF+zFKgDSTJn21+r4N4KWqAe6iVrjDGFzfxxeKDoESrwK7GQ9qVyS6UH2W4SsDRzO6q6jrlw33+yIg=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], + "@rollup/pluginutils": ["@rollup/pluginutils@5.2.0", "", { "dependencies": { "@types/estree": "1.0.7", "estree-walker": "2.0.2", "picomatch": "4.0.2" } }, "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw=="], "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.40.1", "", { "os": "android", "cpu": "arm" }, "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw=="], @@ -3825,17 +3830,19 @@ "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.10.4", "", {}, "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA=="], - "@shikijs/core": ["@shikijs/core@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4", "hast-util-to-html": "9.0.5" } }, "sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g=="], + "@shikijs/core": ["@shikijs/core@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA=="], + + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw=="], - "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2", "oniguruma-to-es": "4.3.3" } }, "sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA=="], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA=="], - "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2" } }, "sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw=="], + "@shikijs/langs": ["@shikijs/langs@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA=="], - "@shikijs/langs": ["@shikijs/langs@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0" } }, "sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw=="], + "@shikijs/themes": ["@shikijs/themes@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g=="], - "@shikijs/themes": ["@shikijs/themes@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0" } }, "sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q=="], + "@shikijs/twoslash": ["@shikijs/twoslash@3.22.0", "", { "dependencies": { "@shikijs/core": "3.22.0", "@shikijs/types": "3.22.0", "twoslash": "^0.3.6" }, "peerDependencies": { "typescript": ">=5.5.0" } }, "sha512-GO27UPN+kegOMQvC+4XcLt0Mttyg+n16XKjmoKjdaNZoW+sOJV7FLdv2QKauqUDws6nE3EQPD+TFHEdyyoUBDw=="], - "@shikijs/types": ["@shikijs/types@3.11.0", "", { "dependencies": { "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4" } }, "sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q=="], + "@shikijs/types": ["@shikijs/types@3.22.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg=="], "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], @@ -4607,9 +4614,9 @@ "@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20260217.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bje8xm+b0q3OSCY01/MZdDBnVISURunL9rCAob8pAu8qtRMvKYGWUsYwTH+fXGUViPAmdlafFd2E82K9VJYmHA=="], - "@typescript/twoslash": ["@typescript/twoslash@3.2.1", "", { "dependencies": { "@typescript/vfs": "1.4.0", "debug": "4.4.0", "lz-string": "1.5.0" } }, "sha512-tS4gLwOe1WCDspqBXhQCb2ESUqzEd1tOkmKpiZ1O+W1x+9l+9njETuXFkLErtH9is/uD1GSvClDjk/tEOJktjQ=="], + "@typescript/twoslash": ["@typescript/twoslash@3.1.0", "", { "dependencies": { "@typescript/vfs": "1.3.5", "debug": "4.4.0", "lz-string": "1.5.0" } }, "sha512-kTwMUQ8xtAZaC4wb2XuLkPqFVBj2dNBueMQ89NWEuw87k2nLBbuafeG5cob/QEr6YduxIdTVUjix0MtC7mPlmg=="], - "@typescript/vfs": ["@typescript/vfs@1.4.0", "", { "dependencies": { "debug": "4.4.0" } }, "sha512-Pood7yv5YWMIX+yCHo176OnF8WUlKGImFG7XlsuH14Zb1YN5+dYD3uUtS7lqZtsH7tAveNUi2NzdpQCN0yRbaw=="], + "@typescript/vfs": ["@typescript/vfs@1.6.3", "", { "dependencies": { "debug": "^4.1.1" }, "peerDependencies": { "typescript": "*" } }, "sha512-8Qs6/Tj2B8Uyo4lYJkopdCtrsfpF/ZlbTXK13Nq6JKN+Ih8FF9Oxg97gEp+zIS96wmkMdWUIETl35Yt9BITeiw=="], "@ungap/structured-clone": ["@ungap/structured-clone@1.2.0", "", {}, "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="], @@ -4635,15 +4642,15 @@ "@vercel/remix": ["@vercel/remix@2.15.2", "", { "dependencies": { "@vercel/static-config": "3.0.0", "isbot": "3.8.0", "ts-morph": "12.0.0" }, "peerDependencies": { "@remix-run/dev": "2.15.2", "@remix-run/node": "2.15.2", "@remix-run/server-runtime": "2.15.2", "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-JZJmuM/pZl5zLACRHzq2uOamzTOeiKRnco0o07A+hUxTKemhS1tqc2R9PdQ6Mf/8ZcXY5ZxW5tah3zjBea6D4w=="], - "@vercel/sandbox": ["@vercel/sandbox@1.3.1", "", { "dependencies": { "@vercel/oidc": "^3.1.0", "async-retry": "1.3.3", "jsonlines": "0.1.1", "ms": "2.1.3", "picocolors": "^1.1.1", "tar-stream": "3.1.7", "undici": "^7.16.0", "xdg-app-paths": "5.1.0", "zod": "3.24.4" } }, "sha512-FFeeJgb4mcm89LSS2ta5kUlAbJ4FsjBbi6otK6Au50GJh9ubzdZuaxiVhWas9NlQ9EnE3FZsIslLLLvjN7Onlw=="], + "@vercel/sandbox": ["@vercel/sandbox@1.6.0", "", { "dependencies": { "@vercel/oidc": "^3.1.0", "async-retry": "1.3.3", "jsonlines": "0.1.1", "ms": "2.1.3", "picocolors": "^1.1.1", "tar-stream": "3.1.7", "undici": "^7.16.0", "xdg-app-paths": "5.1.0", "zod": "3.24.4" } }, "sha512-T204S3RZIdo+BCR5gpErTQBYz+ruXjTMRiZyf+HV/UQeKjPKAVKWu27T65kahDvVvJrbadHhxR2Cds28rXXF/Q=="], "@vercel/static-config": ["@vercel/static-config@3.0.0", "", { "dependencies": { "ajv": "8.6.3", "json-schema-to-ts": "1.6.4", "ts-morph": "12.0.0" } }, "sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw=="], "@vidstack/react": ["@vidstack/react@1.12.13", "", { "dependencies": { "@floating-ui/dom": "^1.6.10", "media-captions": "^1.0.4" }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0" } }, "sha512-zyNydy1+HtoK6cJ8EmqFNkPPGHIFMrr2KH+ef3654EqXx4IcJ8A5LCNMXBuALQE8IMxtk040JMoR9OKyeXjBOQ=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@4.1.0", "", { "dependencies": { "@babel/core": "7.23.2", "@babel/plugin-transform-react-jsx-self": "7.27.1", "@babel/plugin-transform-react-jsx-source": "7.27.1", "@types/babel__core": "7.20.5", "react-refresh": "0.14.2" }, "peerDependencies": { "vite": "5.4.20" } }, "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@4.3.4", "", { "dependencies": { "@babel/core": "7.26.0", "@babel/plugin-transform-react-jsx-self": "7.25.9", "@babel/plugin-transform-react-jsx-source": "7.25.9", "@types/babel__core": "7.20.5", "react-refresh": "0.14.2" }, "peerDependencies": { "vite": "6.0.3" } }, "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug=="], - "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.0.0", "", { "dependencies": { "@swc/core": "1.12.1" }, "peerDependencies": { "vite": "5.4.20" } }, "sha512-vYlodz/mjYRbxMGbHzDgR8aPR+z8n7K/enWkyBGH096xrL2DIPCuTvQVRYPTXGyy6wO7OFiMxZ3r4nKQD1sH0A=="], + "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.11.0", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-beta.27", "@swc/core": "^1.12.11" }, "peerDependencies": { "vite": "^4 || ^5 || ^6 || ^7" } }, "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w=="], "@vitest/browser": ["@vitest/browser@4.0.9", "", { "dependencies": { "@vitest/mocker": "4.0.9", "@vitest/utils": "4.0.9", "magic-string": "^0.30.21", "pixelmatch": "7.1.0", "pngjs": "^7.0.0", "sirv": "^3.0.2", "tinyrainbow": "^3.0.3", "ws": "^8.18.3" }, "peerDependencies": { "vitest": "4.0.9" } }, "sha512-OWN4ZgOIV2+T9cR4qfoajtjZDFoxcLa6qUpgDkviXZFUNkZ7XTVKvL/16X+gz5dtpqdZwXf3m0qIj72Ge/vytw=="], @@ -6473,7 +6480,7 @@ "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], - "oniguruma-to-es": ["oniguruma-to-es@4.3.3", "", { "dependencies": { "oniguruma-parser": "0.12.1", "regex": "6.0.1", "regex-recursion": "6.0.2" } }, "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg=="], + "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], "open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "2.0.0", "is-docker": "2.2.1", "is-wsl": "2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], @@ -7121,7 +7128,7 @@ "shell-quote": ["shell-quote@1.8.1", "", {}, "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA=="], - "shiki": ["shiki@0.10.1", "", { "dependencies": { "jsonc-parser": "3.2.0", "vscode-oniguruma": "1.7.0", "vscode-textmate": "5.2.0" } }, "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng=="], + "shiki": ["shiki@3.22.0", "", { "dependencies": { "@shikijs/core": "3.22.0", "@shikijs/engine-javascript": "3.22.0", "@shikijs/engine-oniguruma": "3.22.0", "@shikijs/langs": "3.22.0", "@shikijs/themes": "3.22.0", "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g=="], "shiki-twoslash": ["shiki-twoslash@3.1.2", "", { "dependencies": { "@typescript/twoslash": "3.1.0", "@typescript/vfs": "1.3.4", "fenceparser": "1.1.1", "shiki": "0.10.1" }, "peerDependencies": { "typescript": "5.8.2" } }, "sha512-JBcRIIizi+exIA/OUhYkV6jtyeZco0ykCkIRd5sgwIt1Pm4pz+maoaRZpm6SkhPwvif4fCA7xOtJOykhpIV64Q=="], @@ -7501,11 +7508,11 @@ "tw-animate-css": ["tw-animate-css@1.4.0", "", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="], - "twoslash": ["twoslash@0.3.1", "", { "dependencies": { "@typescript/vfs": "1.6.1", "twoslash-protocol": "0.3.1" }, "peerDependencies": { "typescript": "5.8.2" } }, "sha512-OGqMTGvqXTcb92YQdwGfEdK0nZJA64Aj/ChLOelbl3TfYch2IoBST0Yx4C0LQ7Lzyqm9RpgcpgDxeXQIz4p2Kg=="], + "twoslash": ["twoslash@0.3.6", "", { "dependencies": { "@typescript/vfs": "^1.6.2", "twoslash-protocol": "0.3.6" }, "peerDependencies": { "typescript": "^5.5.0" } }, "sha512-VuI5OKl+MaUO9UIW3rXKoPgHI3X40ZgB/j12VY6h98Ae1mCBihjPvhOPeJWlxCYcmSbmeZt5ZKkK0dsVtp+6pA=="], "twoslash-cdn": ["twoslash-cdn@0.3.1", "", { "dependencies": { "twoslash": "0.3.1" }, "peerDependencies": { "typescript": "5.8.2" } }, "sha512-JbYbEIG82SlBVD03s7PW+VC5cV9zgWHCtdVkBEc38Kqz8D8ZAgPkthzPAj3isaiJo5xTu/Q/R4NYgihcMVmFXQ=="], - "twoslash-protocol": ["twoslash-protocol@0.3.1", "", {}, "sha512-BMePTL9OkuNISSyyMclBBhV2s9++DiOCyhhCoV5Kaht6eaWLwVjCCUJHY33eZJPsyKeZYS8Wzz0h+XI01VohVw=="], + "twoslash-protocol": ["twoslash-protocol@0.3.6", "", {}, "sha512-FHGsJ9Q+EsNr5bEbgG3hnbkvEBdW5STgPU824AHUjB4kw0Dn4p8tABT7Ncg1Ie6V0+mDg3Qpy41VafZXcQhWMA=="], "type": ["type@1.2.0", "", {}, "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="], @@ -7827,8 +7834,6 @@ "@astrojs/markdown-remark/shiki": ["shiki@3.11.0", "", { "dependencies": { "@shikijs/core": "3.11.0", "@shikijs/engine-javascript": "3.11.0", "@shikijs/engine-oniguruma": "3.11.0", "@shikijs/langs": "3.11.0", "@shikijs/themes": "3.11.0", "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4" } }, "sha512-VgKumh/ib38I1i3QkMn6mAQA6XjjQubqaAYhfge71glAll0/4xnt8L2oSuC45Qcr/G5Kbskj4RliMQddGmy/Og=="], - "@astrojs/react/@vitejs/plugin-react": ["@vitejs/plugin-react@4.3.4", "", { "dependencies": { "@babel/core": "7.26.0", "@babel/plugin-transform-react-jsx-self": "7.25.9", "@babel/plugin-transform-react-jsx-source": "7.25.9", "@types/babel__core": "7.20.5", "react-refresh": "0.14.2" }, "peerDependencies": { "vite": "6.0.3" } }, "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug=="], - "@astrojs/react/react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], "@astrojs/react/react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "0.25.0" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], @@ -8021,9 +8026,9 @@ "@babel/plugin-transform-react-jsx/@babel/types": ["@babel/types@7.26.0", "", { "dependencies": { "@babel/helper-string-parser": "7.25.9", "@babel/helper-validator-identifier": "7.25.9" } }, "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA=="], - "@babel/plugin-transform-react-jsx-self/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/plugin-transform-react-jsx-self/@babel/core": ["@babel/core@7.26.0", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@babel/code-frame": "7.26.2", "@babel/generator": "7.26.2", "@babel/helper-compilation-targets": "7.25.9", "@babel/helper-module-transforms": "7.26.0", "@babel/helpers": "7.26.0", "@babel/parser": "7.26.2", "@babel/template": "7.25.9", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0", "convert-source-map": "2.0.0", "debug": "4.4.1", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg=="], - "@babel/plugin-transform-react-jsx-source/@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + "@babel/plugin-transform-react-jsx-source/@babel/core": ["@babel/core@7.26.0", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@babel/code-frame": "7.26.2", "@babel/generator": "7.26.2", "@babel/helper-compilation-targets": "7.25.9", "@babel/helper-module-transforms": "7.26.0", "@babel/helpers": "7.26.0", "@babel/parser": "7.26.2", "@babel/template": "7.25.9", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0", "convert-source-map": "2.0.0", "debug": "4.4.1", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg=="], "@babel/plugin-transform-regexp-modifiers/@babel/core": ["@babel/core@7.26.0", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@babel/code-frame": "7.26.2", "@babel/generator": "7.26.2", "@babel/helper-compilation-targets": "7.25.9", "@babel/helper-module-transforms": "7.26.0", "@babel/helpers": "7.26.0", "@babel/parser": "7.26.2", "@babel/template": "7.25.9", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0", "convert-source-map": "2.0.0", "debug": "4.4.1", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg=="], @@ -9361,6 +9366,10 @@ "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + "@typescript/twoslash/@typescript/vfs": ["@typescript/vfs@1.3.5", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-pI8Saqjupf9MfLw7w2+og+fmb0fZS0J6vsKXXrp4/PDXEFvntgzXmChCXC/KefZZS0YGS6AT8e0hGAJcTsdJlg=="], + + "@typescript/vfs/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "@use-gesture/react/react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], "@vanilla-extract/babel-plugin-debug-ids/@babel/core": ["@babel/core@7.27.4", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@babel/code-frame": "7.27.1", "@babel/generator": "7.27.5", "@babel/helper-compilation-targets": "7.27.2", "@babel/helper-module-transforms": "7.27.3", "@babel/helpers": "7.27.6", "@babel/parser": "7.27.5", "@babel/template": "7.27.2", "@babel/traverse": "7.27.4", "@babel/types": "7.27.6", "convert-source-map": "2.0.0", "debug": "4.4.1", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g=="], @@ -9391,13 +9400,11 @@ "@vercel/static-config/ajv": ["ajv@8.6.3", "", { "dependencies": { "fast-deep-equal": "3.1.3", "json-schema-traverse": "1.0.0", "require-from-string": "2.0.2", "uri-js": "4.4.1" } }, "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw=="], - "@vitejs/plugin-react/react-refresh": ["react-refresh@0.14.2", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="], - - "@vitejs/plugin-react/vite": ["vite@5.4.20", "", { "dependencies": { "esbuild": "0.21.5", "postcss": "8.5.1", "rollup": "4.40.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@types/node": "20.12.14" }, "optionalPeers": ["@types/node"], "bin": { "vite": "bin/vite.js" } }, "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g=="], + "@vitejs/plugin-react/@babel/core": ["@babel/core@7.26.0", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@babel/code-frame": "7.26.2", "@babel/generator": "7.26.2", "@babel/helper-compilation-targets": "7.25.9", "@babel/helper-module-transforms": "7.26.0", "@babel/helpers": "7.26.0", "@babel/parser": "7.26.2", "@babel/template": "7.25.9", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0", "convert-source-map": "2.0.0", "debug": "4.4.1", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg=="], - "@vitejs/plugin-react-swc/@swc/core": ["@swc/core@1.12.1", "", { "dependencies": { "@swc/counter": "0.1.3", "@swc/types": "0.1.23" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.12.1", "@swc/core-darwin-x64": "1.12.1", "@swc/core-linux-arm-gnueabihf": "1.12.1", "@swc/core-linux-arm64-gnu": "1.12.1", "@swc/core-linux-arm64-musl": "1.12.1", "@swc/core-linux-x64-gnu": "1.12.1", "@swc/core-linux-x64-musl": "1.12.1", "@swc/core-win32-arm64-msvc": "1.12.1", "@swc/core-win32-ia32-msvc": "1.12.1", "@swc/core-win32-x64-msvc": "1.12.1" } }, "sha512-aKXdDTqxTVFl/bKQZ3EQUjEMBEoF6JBv29moMZq0kbVO43na6u/u+3Vcbhbrh+A2N0X5OL4RaveuWfAjEgOmeA=="], + "@vitejs/plugin-react/react-refresh": ["react-refresh@0.14.2", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="], - "@vitejs/plugin-react-swc/vite": ["vite@5.4.20", "", { "dependencies": { "esbuild": "0.21.5", "postcss": "8.5.1", "rollup": "4.40.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@types/node": "20.12.14" }, "optionalPeers": ["@types/node"], "bin": { "vite": "bin/vite.js" } }, "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g=="], + "@vitejs/plugin-react/vite": ["vite@6.0.3", "", { "dependencies": { "esbuild": "0.24.2", "postcss": "8.5.1", "rollup": "4.40.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "bin": { "vite": "bin/vite.js" } }, "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw=="], "@vitest/browser/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], @@ -10313,12 +10320,12 @@ "remark-shiki-twoslash/@types/unist": ["@types/unist@2.0.6", "", {}, "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="], - "remark-shiki-twoslash/@typescript/twoslash": ["@typescript/twoslash@3.1.0", "", { "dependencies": { "@typescript/vfs": "1.3.5", "debug": "4.4.0", "lz-string": "1.5.0" } }, "sha512-kTwMUQ8xtAZaC4wb2XuLkPqFVBj2dNBueMQ89NWEuw87k2nLBbuafeG5cob/QEr6YduxIdTVUjix0MtC7mPlmg=="], - "remark-shiki-twoslash/@typescript/vfs": ["@typescript/vfs@1.3.4", "", { "dependencies": { "debug": "4.4.0" } }, "sha512-RbyJiaAGQPIcAGWFa3jAXSuAexU4BFiDRF1g3hy7LmRqfNpYlTQWGXjcrOaVZjJ8YkkpuwG0FcsYvtWQpd9igQ=="], "remark-shiki-twoslash/fenceparser": ["fenceparser@1.1.1", "", {}, "sha512-VdkTsK7GWLT0VWMK5S5WTAPn61wJ98WPFwJiRHumhg4ESNUO/tnkU8bzzzc62o6Uk1SVhuZFLnakmDA4SGV7wA=="], + "remark-shiki-twoslash/shiki": ["shiki@0.10.1", "", { "dependencies": { "jsonc-parser": "3.2.0", "vscode-oniguruma": "1.7.0", "vscode-textmate": "5.2.0" } }, "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng=="], + "remark-shiki-twoslash/tslib": ["tslib@2.1.0", "", {}, "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="], "remark-shiki-twoslash/unist-util-visit": ["unist-util-visit@2.0.3", "", { "dependencies": { "@types/unist": "2.0.6", "unist-util-is": "4.1.0", "unist-util-visit-parents": "3.1.1" } }, "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q=="], @@ -10369,12 +10376,12 @@ "sharp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "shiki-twoslash/@typescript/twoslash": ["@typescript/twoslash@3.1.0", "", { "dependencies": { "@typescript/vfs": "1.3.5", "debug": "4.4.0", "lz-string": "1.5.0" } }, "sha512-kTwMUQ8xtAZaC4wb2XuLkPqFVBj2dNBueMQ89NWEuw87k2nLBbuafeG5cob/QEr6YduxIdTVUjix0MtC7mPlmg=="], - "shiki-twoslash/@typescript/vfs": ["@typescript/vfs@1.3.4", "", { "dependencies": { "debug": "4.4.0" } }, "sha512-RbyJiaAGQPIcAGWFa3jAXSuAexU4BFiDRF1g3hy7LmRqfNpYlTQWGXjcrOaVZjJ8YkkpuwG0FcsYvtWQpd9igQ=="], "shiki-twoslash/fenceparser": ["fenceparser@1.1.1", "", {}, "sha512-VdkTsK7GWLT0VWMK5S5WTAPn61wJ98WPFwJiRHumhg4ESNUO/tnkU8bzzzc62o6Uk1SVhuZFLnakmDA4SGV7wA=="], + "shiki-twoslash/shiki": ["shiki@0.10.1", "", { "dependencies": { "jsonc-parser": "3.2.0", "vscode-oniguruma": "1.7.0", "vscode-textmate": "5.2.0" } }, "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng=="], + "simple-swizzle/is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], "sitemap/@types/node": ["@types/node@17.0.17", "", {}, "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw=="], @@ -10577,7 +10584,7 @@ "tunnel-rat/zustand": ["zustand@4.5.5", "", { "dependencies": { "use-sync-external-store": "1.2.2" }, "peerDependencies": { "@types/react": "19.0.0", "react": "19.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q=="], - "twoslash/@typescript/vfs": ["@typescript/vfs@1.6.1", "", { "dependencies": { "debug": "4.4.1" }, "peerDependencies": { "typescript": "5.8.2" } }, "sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA=="], + "twoslash-cdn/twoslash": ["twoslash@0.3.1", "", { "dependencies": { "@typescript/vfs": "1.6.1", "twoslash-protocol": "0.3.1" }, "peerDependencies": { "typescript": "5.8.2" } }, "sha512-OGqMTGvqXTcb92YQdwGfEdK0nZJA64Aj/ChLOelbl3TfYch2IoBST0Yx4C0LQ7Lzyqm9RpgcpgDxeXQIz4p2Kg=="], "typescript-eslint/@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.21.0", "", { "dependencies": { "@eslint-community/regexpp": "4.12.1", "@typescript-eslint/scope-manager": "8.21.0", "@typescript-eslint/type-utils": "8.21.0", "@typescript-eslint/utils": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "graphemer": "1.4.0", "ignore": "5.3.2", "natural-compare": "1.4.0", "ts-api-utils": "2.0.1" }, "peerDependencies": { "@typescript-eslint/parser": "8.21.0", "eslint": "9.19.0", "typescript": "5.7.3" } }, "sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA=="], @@ -10813,13 +10820,17 @@ "@algolia/autocomplete-shared/algoliasearch/@algolia/requester-node-http": ["@algolia/requester-node-http@5.18.0", "", { "dependencies": { "@algolia/client-common": "5.18.0" } }, "sha512-tZCqDrqJ2YE2I5ukCQrYN8oiF6u3JIdCxrtKq+eniuLkjkO78TKRnXrVcKZTmfFJyyDK8q47SfDcHzAA3nHi6w=="], - "@astrojs/react/@vitejs/plugin-react/@babel/core": ["@babel/core@7.26.0", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@babel/code-frame": "7.26.2", "@babel/generator": "7.26.2", "@babel/helper-compilation-targets": "7.25.9", "@babel/helper-module-transforms": "7.26.0", "@babel/helpers": "7.26.0", "@babel/parser": "7.26.2", "@babel/template": "7.25.9", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0", "convert-source-map": "2.0.0", "debug": "4.4.1", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg=="], + "@astrojs/markdown-remark/shiki/@shikijs/core": ["@shikijs/core@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4", "hast-util-to-html": "9.0.5" } }, "sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g=="], + + "@astrojs/markdown-remark/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2", "oniguruma-to-es": "4.3.3" } }, "sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA=="], + + "@astrojs/markdown-remark/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2" } }, "sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw=="], - "@astrojs/react/@vitejs/plugin-react/@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "7.25.9" }, "peerDependencies": { "@babel/core": "7.26.0" } }, "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg=="], + "@astrojs/markdown-remark/shiki/@shikijs/langs": ["@shikijs/langs@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0" } }, "sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw=="], - "@astrojs/react/@vitejs/plugin-react/@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "7.25.9" }, "peerDependencies": { "@babel/core": "7.26.0" } }, "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg=="], + "@astrojs/markdown-remark/shiki/@shikijs/themes": ["@shikijs/themes@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0" } }, "sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q=="], - "@astrojs/react/@vitejs/plugin-react/react-refresh": ["react-refresh@0.14.2", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="], + "@astrojs/markdown-remark/shiki/@shikijs/types": ["@shikijs/types@3.11.0", "", { "dependencies": { "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4" } }, "sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q=="], "@astrojs/react/react-dom/scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], @@ -10895,6 +10906,22 @@ "@babel/plugin-transform-modules-commonjs/@babel/helper-module-transforms/@babel/traverse": ["@babel/traverse@7.27.4", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/generator": "7.27.5", "@babel/parser": "7.27.5", "@babel/template": "7.27.2", "@babel/types": "7.27.6", "debug": "4.4.1", "globals": "11.12.0" } }, "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA=="], + "@babel/plugin-transform-react-jsx-self/@babel/core/@babel/parser": ["@babel/parser@7.26.2", "", { "dependencies": { "@babel/types": "7.26.0" }, "bin": "./bin/babel-parser.js" }, "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ=="], + + "@babel/plugin-transform-react-jsx-self/@babel/core/@babel/types": ["@babel/types@7.26.0", "", { "dependencies": { "@babel/helper-string-parser": "7.25.9", "@babel/helper-validator-identifier": "7.25.9" } }, "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA=="], + + "@babel/plugin-transform-react-jsx-self/@babel/core/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + + "@babel/plugin-transform-react-jsx-self/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/plugin-transform-react-jsx-source/@babel/core/@babel/parser": ["@babel/parser@7.26.2", "", { "dependencies": { "@babel/types": "7.26.0" }, "bin": "./bin/babel-parser.js" }, "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ=="], + + "@babel/plugin-transform-react-jsx-source/@babel/core/@babel/types": ["@babel/types@7.26.0", "", { "dependencies": { "@babel/helper-string-parser": "7.25.9", "@babel/helper-validator-identifier": "7.25.9" } }, "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA=="], + + "@babel/plugin-transform-react-jsx-source/@babel/core/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + + "@babel/plugin-transform-react-jsx-source/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@babel/plugin-transform-regexp-modifiers/@babel/core/@babel/parser": ["@babel/parser@7.26.2", "", { "dependencies": { "@babel/types": "7.26.0" }, "bin": "./bin/babel-parser.js" }, "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ=="], "@babel/plugin-transform-regexp-modifiers/@babel/core/@babel/types": ["@babel/types@7.26.0", "", { "dependencies": { "@babel/helper-string-parser": "7.25.9", "@babel/helper-validator-identifier": "7.25.9" } }, "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA=="], @@ -12335,6 +12362,8 @@ "@typescript-eslint/utils/eslint-scope/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], + "@typescript/twoslash/@typescript/vfs/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "7.27.1", "js-tokens": "4.0.0", "picocolors": "1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/generator": ["@babel/generator@7.27.5", "", { "dependencies": { "@babel/parser": "7.27.5", "@babel/types": "7.27.6", "@jridgewell/gen-mapping": "0.3.5", "@jridgewell/trace-mapping": "0.3.25", "jsesc": "3.0.2" } }, "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw=="], @@ -12409,33 +12438,15 @@ "@vercel/static-config/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - "@vitejs/plugin-react-swc/@swc/core/@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.12.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-nUjWVcJ3YS2N40ZbKwYO2RJ4+o2tWYRzNOcIQp05FqW0+aoUCVMdAUUzQinPDynfgwVshDAXCKemY8X7nN5MaA=="], - - "@vitejs/plugin-react-swc/@swc/core/@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.12.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-OGm4a4d3OeJn+tRt8H/eiHgTFrJbS6r8mi/Ob65tAEXZGHN900T2kR7c5ALr0V2hBOQ8BfhexwPoQlGQP/B95w=="], - - "@vitejs/plugin-react-swc/@swc/core/@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.12.1", "", { "os": "linux", "cpu": "arm" }, "sha512-76YeeQKyK0EtNkQiNBZ0nbVGooPf9IucY0WqVXVpaU4wuG7ZyLEE2ZAIgXafIuzODGQoLfetue7I8boMxh1/MA=="], - - "@vitejs/plugin-react-swc/@swc/core/@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.12.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-BxJDIJPq1+aCh9UsaSAN6wo3tuln8UhNXruOrzTI8/ElIig/3sAueDM6Eq7GvZSGGSA7ljhNATMJ0elD7lFatQ=="], - - "@vitejs/plugin-react-swc/@swc/core/@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.12.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-NhLdbffSXvY0/FwUSAl4hKBlpe5GHQGXK8DxTo3HHjLsD9sCPYieo3vG0NQoUYAy4ZUY1WeGjyxeq4qZddJzEQ=="], + "@vitejs/plugin-react/@babel/core/@babel/parser": ["@babel/parser@7.26.2", "", { "dependencies": { "@babel/types": "7.26.0" }, "bin": "./bin/babel-parser.js" }, "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ=="], - "@vitejs/plugin-react-swc/@swc/core/@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.12.1", "", { "os": "linux", "cpu": "x64" }, "sha512-CrYnV8SZIgArQ9LKH0xEF95PKXzX9WkRSc5j55arOSBeDCeDUQk1Bg/iKdnDiuj5HC1hZpvzwMzSBJjv+Z70jA=="], + "@vitejs/plugin-react/@babel/core/@babel/types": ["@babel/types@7.26.0", "", { "dependencies": { "@babel/helper-string-parser": "7.25.9", "@babel/helper-validator-identifier": "7.25.9" } }, "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA=="], - "@vitejs/plugin-react-swc/@swc/core/@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.12.1", "", { "os": "linux", "cpu": "x64" }, "sha512-BQMl3d0HaGB0/h2xcKlGtjk/cGRn2tnbsaChAKcjFdCepblKBCz1pgO/mL7w5iXq3s57wMDUn++71/a5RAkZOA=="], + "@vitejs/plugin-react/@babel/core/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], - "@vitejs/plugin-react-swc/@swc/core/@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.12.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-b7NeGnpqTfmIGtUqXBl0KqoSmOnH64nRZoT5l4BAGdvwY7nxitWR94CqZuwyLPty/bLywmyDA9uO12Kvgb3+gg=="], + "@vitejs/plugin-react/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@vitejs/plugin-react-swc/@swc/core/@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.12.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-iU/29X2D7cHBp1to62cUg/5Xk8K+lyOJiKIGGW5rdzTW/c2zz3d/ehgpzVP/rqC4NVr88MXspqHU4il5gmDajw=="], - - "@vitejs/plugin-react-swc/@swc/core/@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.12.1", "", { "os": "win32", "cpu": "x64" }, "sha512-+Zh+JKDwiFqV5N9yAd2DhYVGPORGh9cfenu1ptr9yge+eHAf7vZJcC3rnj6QMR1QJh0Y5VC9+YBjRFjZVA7XDw=="], - - "@vitejs/plugin-react-swc/@swc/core/@swc/types": ["@swc/types@0.1.23", "", { "dependencies": { "@swc/counter": "0.1.3" } }, "sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw=="], - - "@vitejs/plugin-react-swc/vite/esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], - - "@vitejs/plugin-react-swc/vite/postcss": ["postcss@8.5.1", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ=="], - - "@vitejs/plugin-react/vite/esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], + "@vitejs/plugin-react/vite/esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], "@vitejs/plugin-react/vite/postcss": ["postcss@8.5.1", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ=="], @@ -12495,6 +12506,18 @@ "astro/sharp/detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], + "astro/shiki/@shikijs/core": ["@shikijs/core@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4", "hast-util-to-html": "9.0.5" } }, "sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g=="], + + "astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2", "oniguruma-to-es": "4.3.3" } }, "sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA=="], + + "astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0", "@shikijs/vscode-textmate": "10.0.2" } }, "sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw=="], + + "astro/shiki/@shikijs/langs": ["@shikijs/langs@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0" } }, "sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw=="], + + "astro/shiki/@shikijs/themes": ["@shikijs/themes@3.11.0", "", { "dependencies": { "@shikijs/types": "3.11.0" } }, "sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q=="], + + "astro/shiki/@shikijs/types": ["@shikijs/types@3.11.0", "", { "dependencies": { "@shikijs/vscode-textmate": "10.0.2", "@types/hast": "3.0.4" } }, "sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q=="], + "astro/vite/postcss": ["postcss@8.5.5", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg=="], "autoprefixer/browserslist/electron-to-chromium": ["electron-to-chromium@1.5.167", "", {}, "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ=="], @@ -13267,8 +13290,6 @@ "remark-mdx/mdast-util-mdx/mdast-util-to-markdown": ["mdast-util-to-markdown@1.5.0", "", { "dependencies": { "@types/mdast": "3.0.10", "@types/unist": "2.0.6", "longest-streak": "3.1.0", "mdast-util-phrasing": "3.0.1", "mdast-util-to-string": "3.1.1", "micromark-util-decode-string": "1.0.2", "unist-util-visit": "4.1.2", "zwitch": "2.0.4" } }, "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A=="], - "remark-shiki-twoslash/@typescript/twoslash/@typescript/vfs": ["@typescript/vfs@1.3.5", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-pI8Saqjupf9MfLw7w2+og+fmb0fZS0J6vsKXXrp4/PDXEFvntgzXmChCXC/KefZZS0YGS6AT8e0hGAJcTsdJlg=="], - "remark-shiki-twoslash/unist-util-visit/unist-util-is": ["unist-util-is@4.1.0", "", {}, "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg=="], "remark-shiki-twoslash/unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@3.1.1", "", { "dependencies": { "@types/unist": "2.0.6", "unist-util-is": "4.1.0" } }, "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg=="], @@ -13325,8 +13346,6 @@ "serve-index/http-errors/statuses": ["statuses@1.5.0", "", {}, "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="], - "shiki-twoslash/@typescript/twoslash/@typescript/vfs": ["@typescript/vfs@1.3.5", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-pI8Saqjupf9MfLw7w2+og+fmb0fZS0J6vsKXXrp4/PDXEFvntgzXmChCXC/KefZZS0YGS6AT8e0hGAJcTsdJlg=="], - "string-width/strip-ansi/ansi-regex": ["ansi-regex@6.0.1", "", {}, "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="], "style-loader/webpack/@webassemblyjs/ast": ["@webassemblyjs/ast@1.12.1", "", { "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg=="], @@ -13719,7 +13738,9 @@ "tunnel-rat/zustand/use-sync-external-store": ["use-sync-external-store@1.2.2", "", { "peerDependencies": { "react": "19.0.0" } }, "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw=="], - "twoslash/@typescript/vfs/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "twoslash-cdn/twoslash/@typescript/vfs": ["@typescript/vfs@1.6.1", "", { "dependencies": { "debug": "4.4.1" }, "peerDependencies": { "typescript": "5.8.2" } }, "sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA=="], + + "twoslash-cdn/twoslash/twoslash-protocol": ["twoslash-protocol@0.3.1", "", {}, "sha512-BMePTL9OkuNISSyyMclBBhV2s9++DiOCyhhCoV5Kaht6eaWLwVjCCUJHY33eZJPsyKeZYS8Wzz0h+XI01VohVw=="], "typescript-eslint/@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0" } }, "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA=="], @@ -13933,13 +13954,7 @@ "yargs/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - "@astrojs/react/@vitejs/plugin-react/@babel/core/@babel/parser": ["@babel/parser@7.26.2", "", { "dependencies": { "@babel/types": "7.26.0" }, "bin": "./bin/babel-parser.js" }, "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ=="], - - "@astrojs/react/@vitejs/plugin-react/@babel/core/@babel/types": ["@babel/types@7.26.0", "", { "dependencies": { "@babel/helper-string-parser": "7.25.9", "@babel/helper-validator-identifier": "7.25.9" } }, "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA=="], - - "@astrojs/react/@vitejs/plugin-react/@babel/core/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], - - "@astrojs/react/@vitejs/plugin-react/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@astrojs/markdown-remark/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@4.3.3", "", { "dependencies": { "oniguruma-parser": "0.12.1", "regex": "6.0.1", "regex-recursion": "6.0.2" } }, "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg=="], "@astrojs/react/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], @@ -16093,100 +16108,60 @@ "@vanilla-extract/integration/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="], - - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="], - "@vitejs/plugin-react-swc/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="], - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="], - - "@vitejs/plugin-react/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + "@vitejs/plugin-react/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="], "astro/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], + "astro/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@4.3.3", "", { "dependencies": { "oniguruma-parser": "0.12.1", "regex": "6.0.1", "regex-recursion": "6.0.2" } }, "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg=="], + "babel-loader/webpack/@webassemblyjs/ast/@webassemblyjs/helper-numbers": ["@webassemblyjs/helper-numbers@1.11.6", "", { "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g=="], "babel-loader/webpack/@webassemblyjs/ast/@webassemblyjs/helper-wasm-bytecode": ["@webassemblyjs/helper-wasm-bytecode@1.11.6", "", {}, "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="], @@ -16801,8 +16776,6 @@ "remark-mdx/mdast-util-mdx/mdast-util-to-markdown/unist-util-visit": ["unist-util-visit@4.1.2", "", { "dependencies": { "@types/unist": "2.0.6", "unist-util-is": "5.2.0", "unist-util-visit-parents": "5.1.3" } }, "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg=="], - "remark-shiki-twoslash/@typescript/twoslash/@typescript/vfs/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], - "renderkid/css-select/domutils/dom-serializer": ["dom-serializer@1.3.2", "", { "dependencies": { "domelementtype": "2.3.0", "domhandler": "4.3.1", "entities": "2.2.0" } }, "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig=="], "renderkid/htmlparser2/domutils/dom-serializer": ["dom-serializer@1.3.2", "", { "dependencies": { "domelementtype": "2.3.0", "domhandler": "4.3.1", "entities": "2.2.0" } }, "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig=="], @@ -16845,8 +16818,6 @@ "sass-loader/webpack/terser-webpack-plugin/serialize-javascript": ["serialize-javascript@6.0.1", "", { "dependencies": { "randombytes": "2.1.0" } }, "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w=="], - "shiki-twoslash/@typescript/twoslash/@typescript/vfs/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], - "style-loader/webpack/@webassemblyjs/ast/@webassemblyjs/helper-numbers": ["@webassemblyjs/helper-numbers@1.11.6", "", { "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g=="], "style-loader/webpack/@webassemblyjs/ast/@webassemblyjs/helper-wasm-bytecode": ["@webassemblyjs/helper-wasm-bytecode@1.11.6", "", {}, "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="], @@ -17195,6 +17166,8 @@ "terser-webpack-plugin/schema-utils/ajv-keywords/ajv": ["ajv@8.11.0", "", { "dependencies": { "fast-deep-equal": "3.1.3", "json-schema-traverse": "1.0.0", "require-from-string": "2.0.2", "uri-js": "4.4.1" } }, "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg=="], + "twoslash-cdn/twoslash/@typescript/vfs/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "typescript-eslint/@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager/@typescript-eslint/types": ["@typescript-eslint/types@8.21.0", "", {}, "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A=="], "typescript-eslint/@typescript-eslint/eslint-plugin/@typescript-eslint/type-utils/@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.21.0", "", { "dependencies": { "@typescript-eslint/types": "8.21.0", "@typescript-eslint/visitor-keys": "8.21.0", "debug": "4.4.1", "fast-glob": "3.3.2", "is-glob": "4.0.3", "minimatch": "9.0.5", "semver": "7.6.3", "ts-api-utils": "2.1.0" }, "peerDependencies": { "typescript": "5.7.3" } }, "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg=="], diff --git a/package.json b/package.json index af9afc16d5a..299d41f0cf5 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "@types/three": "0.170.0", "openai": "4.67.1", "@types/dom-webcodecs": "0.1.11", - "@vitejs/plugin-react": "4.1.0", + "@vitejs/plugin-react": "4.3.4", "@vitest/browser-playwright": "4.0.9", "playwright": "1.55.1", "vitest": "4.0.9", diff --git a/packages/animated-emoji/package.json b/packages/animated-emoji/package.json index 0cdbedcca6c..08f1b420e8d 100644 --- a/packages/animated-emoji/package.json +++ b/packages/animated-emoji/package.json @@ -6,7 +6,7 @@ "module": "dist/esm/index.mjs", "sideEffects": false, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts" }, diff --git a/packages/animation-utils/package.json b/packages/animation-utils/package.json index 416716e95f7..981c19e9cb2 100644 --- a/packages/animation-utils/package.json +++ b/packages/animation-utils/package.json @@ -13,7 +13,7 @@ "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts", "test": "bun test src" diff --git a/packages/babel-loader/package.json b/packages/babel-loader/package.json index 481ca431c91..8d4a5b90c9f 100644 --- a/packages/babel-loader/package.json +++ b/packages/babel-loader/package.json @@ -7,7 +7,7 @@ "description": "Babel loader for Remotion", "main": "dist/index.js", "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "make": "tsgo -d" }, diff --git a/packages/bundler/package.json b/packages/bundler/package.json index 063aff9937e..40d5b3c3af5 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -11,7 +11,7 @@ "url": "https://github.com/remotion-dev/remotion/issues" }, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "test": "bun test src", "make": "tsgo -d" diff --git a/packages/captions/package.json b/packages/captions/package.json index 58977912d88..22d5582e355 100644 --- a/packages/captions/package.json +++ b/packages/captions/package.json @@ -11,7 +11,7 @@ "url": "https://github.com/remotion-dev/remotion/issues" }, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "test": "bun test src", "make": "tsgo -d" diff --git a/packages/cli/package.json b/packages/cli/package.json index 39114eeb681..7ee83a7fc78 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -13,7 +13,7 @@ "remotiond": "remotiond-cli.js" }, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "test": "bun test src", "make": "tsgo -d" diff --git a/packages/cli/src/benchmark.ts b/packages/cli/src/benchmark.ts index db7c313f29a..1cb4c77a617 100644 --- a/packages/cli/src/benchmark.ts +++ b/packages/cli/src/benchmark.ts @@ -211,6 +211,8 @@ export const benchmarkCommand = async ( ffmpegOverride, height, width, + fps, + durationInFrames, concurrency: unparsedConcurrency, } = getCliOptions({ isStill: false, @@ -491,6 +493,8 @@ export const benchmarkCommand = async ( ...composition, width: width ?? composition.width, height: height ?? composition.height, + fps: fps ?? composition.fps, + durationInFrames: durationInFrames ?? composition.durationInFrames, }, crf: configFileCrf ?? null, envVariables, diff --git a/packages/cli/src/config/height.ts b/packages/cli/src/config/height.ts deleted file mode 100644 index 60156bd526e..00000000000 --- a/packages/cli/src/config/height.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {validateDimension} from '../validate'; - -let specifiedHeight: number | null; - -export const overrideHeight = (newHeight: number) => { - validateDimension(newHeight, 'height', 'passed to `overrideHeight()`'); - - specifiedHeight = newHeight; -}; - -export const getHeight = (): number | null => { - return specifiedHeight; -}; diff --git a/packages/cli/src/config/index.ts b/packages/cli/src/config/index.ts index 3f9463fb34a..2256a33a51b 100644 --- a/packages/cli/src/config/index.ts +++ b/packages/cli/src/config/index.ts @@ -44,7 +44,6 @@ import { setFfmpegOverrideFunction, } from './ffmpeg-override'; import {setFrameRange} from './frame-range'; -import {getHeight, overrideHeight} from './height'; import {setImageSequence} from './image-sequence'; import {getMetadata, setMetadata} from './metadata'; import {getShouldOpenBrowser, setShouldOpenBrowser} from './open-browser'; @@ -57,7 +56,6 @@ import { getWebpackPolling, setWebpackPollingInMilliseconds, } from './webpack-poll'; -import {getWidth, overrideWidth} from './width'; export type {Concurrency, WebpackConfiguration, WebpackOverrideFn}; @@ -117,6 +115,10 @@ const { userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, + overrideHeightOption, + overrideWidthOption, + overrideFpsOption, + overrideDurationOption, } = BrowserSafeApis.options; declare global { @@ -390,6 +392,14 @@ declare global { * Overrides the width of a composition */ readonly overrideWidth: (newWidth: number) => void; + /** + * Overrides the FPS of a composition + */ + readonly overrideFps: (newFps: number) => void; + /** + * Overrides the duration in frames of a composition + */ + readonly overrideDuration: (newDuration: number) => void; /** * Set the ProRes profile. * This method is only valid if the codec has been set to 'prores'. @@ -702,8 +712,10 @@ export const Config: FlatConfig = { setVideoBitrate: videoBitrateOption.setConfig, setAudioLatencyHint: audioLatencyHintOption.setConfig, setForSeamlessAacConcatenation: forSeamlessAacConcatenationOption.setConfig, - overrideHeight, - overrideWidth, + overrideHeight: overrideHeightOption.setConfig, + overrideWidth: overrideWidthOption.setConfig, + overrideFps: overrideFpsOption.setConfig, + overrideDuration: overrideDurationOption.setConfig, overrideFfmpegCommand: setFfmpegOverrideFunction, setAudioCodec: audioCodecOption.setConfig, setOffthreadVideoCacheSizeInBytes: (size) => { @@ -746,8 +758,6 @@ export const ConfigInternals = { getMaxTimelineTracks: StudioServerInternals.getMaxTimelineTracks, defaultOverrideFunction, getFfmpegOverrideFunction, - getHeight, - getWidth, getMetadata, getEntryPoint, getWebpackPolling, diff --git a/packages/cli/src/config/width.ts b/packages/cli/src/config/width.ts deleted file mode 100644 index 603b1a4c4ff..00000000000 --- a/packages/cli/src/config/width.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {validateDimension} from '../validate'; - -let passedWidth: number | null = null; - -export const overrideWidth = (newWidth: number) => { - if (typeof newWidth !== 'number') { - validateDimension(newWidth, 'width', 'passed to `setWidth()`'); - } - - passedWidth = newWidth; -}; - -export const getWidth = (): number | null => { - return passedWidth; -}; diff --git a/packages/cli/src/get-cli-options.ts b/packages/cli/src/get-cli-options.ts index 3a57a0ca11c..4109df43438 100644 --- a/packages/cli/src/get-cli-options.ts +++ b/packages/cli/src/get-cli-options.ts @@ -64,8 +64,19 @@ export const getCliOptions = (options: { commandLine: parsedCli, }).value; - const height = ConfigInternals.getHeight(); - const width = ConfigInternals.getWidth(); + const height = BrowserSafeApis.options.overrideHeightOption.getValue({ + commandLine: parsedCli, + }).value; + const width = BrowserSafeApis.options.overrideWidthOption.getValue({ + commandLine: parsedCli, + }).value; + const fps = BrowserSafeApis.options.overrideFpsOption.getValue({ + commandLine: parsedCli, + }).value; + const durationInFrames = + BrowserSafeApis.options.overrideDurationOption.getValue({ + commandLine: parsedCli, + }).value; RenderInternals.validateConcurrency({ value: concurrency, @@ -87,5 +98,7 @@ export const getCliOptions = (options: { ffmpegOverride: ConfigInternals.getFfmpegOverrideFunction(), height, width, + fps, + durationInFrames, }; }; diff --git a/packages/cli/src/get-composition-with-dimension-override.ts b/packages/cli/src/get-composition-with-dimension-override.ts index 89ed103933d..147e5a0b4e6 100644 --- a/packages/cli/src/get-composition-with-dimension-override.ts +++ b/packages/cli/src/get-composition-with-dimension-override.ts @@ -13,6 +13,8 @@ import {getCompositionId} from './get-composition-id'; export const getCompositionWithDimensionOverride = async ({ height, width, + fps, + durationInFrames, args, compositionIdFromUi, chromiumOptions, @@ -35,6 +37,8 @@ export const getCompositionWithDimensionOverride = async ({ }: { height: number | null; width: number | null; + fps: number | null; + durationInFrames: number | null; args: (string | number)[]; compositionIdFromUi: string | null; timeoutInMilliseconds: number; @@ -88,6 +92,8 @@ export const getCompositionWithDimensionOverride = async ({ ...returnValue.config, height: height ?? returnValue.config.height, width: width ?? returnValue.config.width, + fps: fps ?? returnValue.config.fps, + durationInFrames: durationInFrames ?? returnValue.config.durationInFrames, }, }; }; diff --git a/packages/cli/src/parse-command-line.ts b/packages/cli/src/parse-command-line.ts index 9d8e5e62ce9..a47faa45ce0 100644 --- a/packages/cli/src/parse-command-line.ts +++ b/packages/cli/src/parse-command-line.ts @@ -42,6 +42,10 @@ const { userAgentOption, disableWebSecurityOption, ignoreCertificateErrorsOption, + overrideHeightOption, + overrideWidthOption, + overrideFpsOption, + overrideDurationOption, } = BrowserSafeApis.options; export type CommandLineOptions = { @@ -109,8 +113,10 @@ export type CommandLineOptions = { ['disable-keyboard-shortcuts']: boolean; ['enable-experimental-client-side-rendering']: boolean; muted: boolean; - height: number; - width: number; + [overrideHeightOption.cliFlag]: TypeOfOption; + [overrideWidthOption.cliFlag]: TypeOfOption; + [overrideFpsOption.cliFlag]: TypeOfOption; + [overrideDurationOption.cliFlag]: TypeOfOption; runs: number; concurrencies: string; [enforceAudioOption.cliFlag]: TypeOfOption; @@ -141,14 +147,6 @@ export const parseCommandLine = () => { Config.setCachingEnabled(parsedCli['bundle-cache'] !== 'false'); } - if (parsedCli.height) { - Config.overrideHeight(parsedCli.height); - } - - if (parsedCli.width) { - Config.overrideWidth(parsedCli.width); - } - if (parsedCli.frames) { ConfigInternals.setFrameRangeFromCli(parsedCli.frames); } diff --git a/packages/cli/src/render-flows/render.ts b/packages/cli/src/render-flows/render.ts index 3f26e857bcc..2aca245daf2 100644 --- a/packages/cli/src/render-flows/render.ts +++ b/packages/cli/src/render-flows/render.ts @@ -80,6 +80,8 @@ export const renderVideoFlow = async ({ port, height, width, + fps, + durationInFrames, remainingArgs, compositionIdFromUi, entryPointReason, @@ -145,6 +147,8 @@ export const renderVideoFlow = async ({ port: number | null; height: number | null; width: number | null; + fps: number | null; + durationInFrames: number | null; remainingArgs: (string | number)[]; compositionIdFromUi: string | null; outputLocationFromUI: string | null; @@ -373,6 +377,8 @@ export const renderVideoFlow = async ({ await getCompositionWithDimensionOverride({ height, width, + fps, + durationInFrames, args: remainingArgs, compositionIdFromUi, browserExecutable, @@ -640,6 +646,8 @@ export const renderVideoFlow = async ({ ...config, width: width ?? config.width, height: height ?? config.height, + fps: fps ?? config.fps, + durationInFrames: durationInFrames ?? config.durationInFrames, }, crf: crf ?? null, envVariables, diff --git a/packages/cli/src/render-flows/still.ts b/packages/cli/src/render-flows/still.ts index 5e2699d1eb4..7521da8cfd9 100644 --- a/packages/cli/src/render-flows/still.ts +++ b/packages/cli/src/render-flows/still.ts @@ -58,6 +58,9 @@ export const renderStillFlow = async ({ chromiumOptions, envVariables, height, + width, + fps, + durationInFrames, serializedInputPropsWithCustomSchema, overwrite, port, @@ -66,7 +69,6 @@ export const renderStillFlow = async ({ jpegQuality, scale, stillFrame, - width, compositionIdFromUi, imageFormatFromUi, logLevel, @@ -104,6 +106,8 @@ export const renderStillFlow = async ({ publicDir: string | null; height: number | null; width: number | null; + fps: number | null; + durationInFrames: number | null; compositionIdFromUi: string | null; imageFormatFromUi: StillImageFormat | null; logLevel: LogLevel; @@ -255,6 +259,8 @@ export const renderStillFlow = async ({ await getCompositionWithDimensionOverride({ height, width, + fps, + durationInFrames, args: remainingArgs, compositionIdFromUi, browserExecutable, diff --git a/packages/cli/src/render-queue/process-still.ts b/packages/cli/src/render-queue/process-still.ts index f212fceef58..904e47ee740 100644 --- a/packages/cli/src/render-queue/process-still.ts +++ b/packages/cli/src/render-queue/process-still.ts @@ -56,6 +56,9 @@ export const processStill = async ({ entryPointReason: 'same as Studio', envVariables: job.envVariables, height: null, + width: null, + fps: null, + durationInFrames: null, fullEntryPoint, serializedInputPropsWithCustomSchema: job.serializedInputPropsWithCustomSchema, @@ -67,7 +70,6 @@ export const processStill = async ({ remainingArgs: [], scale: job.scale, stillFrame: job.frame, - width: null, compositionIdFromUi: job.compositionId, imageFormatFromUi: job.imageFormat, logLevel: job.logLevel, diff --git a/packages/cli/src/render-queue/process-video.ts b/packages/cli/src/render-queue/process-video.ts index 0965f1e0b64..eda077a1cc8 100644 --- a/packages/cli/src/render-queue/process-video.ts +++ b/packages/cli/src/render-queue/process-video.ts @@ -59,6 +59,9 @@ export const processVideoJob = async ({ entryPointReason: 'same as Studio', envVariables: job.envVariables, height: null, + width: null, + fps: null, + durationInFrames: null, fullEntryPoint, serializedInputPropsWithCustomSchema: job.serializedInputPropsWithCustomSchema, @@ -69,7 +72,6 @@ export const processVideoJob = async ({ jpegQuality: job.jpegQuality ?? undefined, remainingArgs: [], scale: job.scale, - width: null, compositionIdFromUi: job.compositionId, logLevel: job.logLevel, onProgress, diff --git a/packages/cli/src/render.tsx b/packages/cli/src/render.tsx index 7bb02756631..940cccd5881 100644 --- a/packages/cli/src/render.tsx +++ b/packages/cli/src/render.tsx @@ -102,6 +102,8 @@ export const render = async ( envVariables, height, width, + fps, + durationInFrames, ffmpegOverride, } = getCliOptions({ isStill: false, @@ -253,6 +255,8 @@ export const render = async ( port: getRendererPortFromConfigFileAndCliFlag(), height, width, + fps, + durationInFrames, remainingArgs, compositionIdFromUi: null, entryPointReason, diff --git a/packages/cli/src/still.ts b/packages/cli/src/still.ts index da126daefaa..a6669ff9334 100644 --- a/packages/cli/src/still.ts +++ b/packages/cli/src/still.ts @@ -73,7 +73,15 @@ export const still = async ( process.exit(1); } - const {envVariables, height, inputProps, stillFrame, width} = getCliOptions({ + const { + envVariables, + height, + inputProps, + stillFrame, + width, + fps, + durationInFrames, + } = getCliOptions({ isStill: true, logLevel, indent: false, @@ -160,6 +168,9 @@ export const still = async ( chromiumOptions, envVariables, height, + width, + fps, + durationInFrames, serializedInputPropsWithCustomSchema: NoReactInternals.serializeJSONWithSpecialTypes({ data: inputProps, @@ -173,7 +184,6 @@ export const still = async ( jpegQuality, scale, stillFrame, - width, compositionIdFromUi: null, imageFormatFromUi: null, logLevel, diff --git a/packages/cloudrun/src/api/render-media-on-cloudrun.ts b/packages/cloudrun/src/api/render-media-on-cloudrun.ts index a14fbcbbd4b..2fcecb5f69c 100644 --- a/packages/cloudrun/src/api/render-media-on-cloudrun.ts +++ b/packages/cloudrun/src/api/render-media-on-cloudrun.ts @@ -56,6 +56,8 @@ type InternalRenderMediaOnCloudrun = { chromiumOptions: ChromiumOptions | undefined; forceWidth: number | null; forceHeight?: number | null; + forceFps?: number | null; + forceDurationInFrames?: number | null; concurrency: number | string | null; preferLossless: boolean | undefined; indent: boolean; @@ -93,6 +95,8 @@ export type RenderMediaOnCloudrunInput = { chromiumOptions?: ChromiumOptions; forceWidth?: number | null; forceHeight?: number | null; + forceFps?: number | null; + forceDurationInFrames?: number | null; concurrency?: number | string | null; preferLossless?: boolean; downloadBehavior?: DownloadBehavior; @@ -135,6 +139,8 @@ const internalRenderMediaOnCloudrunRaw = async ({ muted, forceWidth, forceHeight, + forceFps, + forceDurationInFrames, logLevel, delayRenderTimeoutInMilliseconds, concurrency, @@ -195,6 +201,8 @@ const internalRenderMediaOnCloudrunRaw = async ({ outName, forceWidth, forceHeight, + forceFps, + forceDurationInFrames, type: 'media', logLevel: logLevel ?? 'info', delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? null, @@ -334,6 +342,8 @@ export const renderMediaOnCloudrun = ({ muted, forceWidth, forceHeight, + forceFps, + forceDurationInFrames, logLevel, delayRenderTimeoutInMilliseconds, concurrency, @@ -382,6 +392,8 @@ export const renderMediaOnCloudrun = ({ muted: muted ?? false, forceWidth: forceWidth ?? null, forceHeight: forceHeight ?? null, + forceFps: forceFps ?? null, + forceDurationInFrames: forceDurationInFrames ?? null, logLevel: logLevel ?? 'info', delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? BrowserSafeApis.DEFAULT_TIMEOUT, diff --git a/packages/cloudrun/src/api/render-still-on-cloudrun.ts b/packages/cloudrun/src/api/render-still-on-cloudrun.ts index 80cc3be6deb..f23c45d9c02 100644 --- a/packages/cloudrun/src/api/render-still-on-cloudrun.ts +++ b/packages/cloudrun/src/api/render-still-on-cloudrun.ts @@ -43,6 +43,8 @@ type OptionalParameters = { chromiumOptions: ChromiumOptions; forceWidth: number | null; forceHeight: number | null; + forceFps: number | null; + forceDurationInFrames: number | null; indent: boolean; downloadBehavior: DownloadBehavior; renderIdOverride: z.infer['renderIdOverride']; @@ -96,6 +98,8 @@ const internalRenderStillOnCloudRun = async ({ scale, forceWidth, forceHeight, + forceFps, + forceDurationInFrames, logLevel, delayRenderTimeoutInMilliseconds, offthreadVideoCacheSizeInBytes, @@ -138,6 +142,8 @@ const internalRenderStillOnCloudRun = async ({ scale, forceWidth, forceHeight, + forceFps, + forceDurationInFrames, frame, type: 'still', logLevel, @@ -239,6 +245,8 @@ export const renderStillOnCloudrun = (options: RenderStillOnCloudrunInput) => { forceBucketName: options.forceBucketName ?? null, forceHeight: options.forceHeight ?? null, forceWidth: options.forceWidth ?? null, + forceFps: options.forceFps ?? null, + forceDurationInFrames: options.forceDurationInFrames ?? null, frame: options.frame ?? 0, imageFormat: options.imageFormat, indent: options.indent ?? false, diff --git a/packages/cloudrun/src/cli/commands/render/index.ts b/packages/cloudrun/src/cli/commands/render/index.ts index 76290749993..7972396fa99 100644 --- a/packages/cloudrun/src/cli/commands/render/index.ts +++ b/packages/cloudrun/src/cli/commands/render/index.ts @@ -90,6 +90,8 @@ export const renderCommand = async ( inputProps, height, width, + fps, + durationInFrames, } = CliInternals.getCliOptions({ isStill: false, logLevel, @@ -191,13 +193,15 @@ export const renderCommand = async ( chromiumOptions, envVariables, height, + width, + fps, + durationInFrames, indent, port: ConfigInternals.getRendererPortFromConfigFileAndCliFlag(), puppeteerInstance: undefined, serveUrlOrWebpackUrl: serveUrl, timeoutInMilliseconds: puppeteerTimeout, logLevel, - width, server: await server, serializedInputPropsWithCustomSchema: NoReactInternals.serializeJSONWithSpecialTypes({ @@ -355,6 +359,8 @@ ${downloadName ? ` Downloaded File = ${downloadName}` : ''} muted, forceWidth: width, forceHeight: height, + forceFps: fps, + forceDurationInFrames: durationInFrames, logLevel, delayRenderTimeoutInMilliseconds: puppeteerTimeout, // Special case: Should not use default local concurrency, or from diff --git a/packages/cloudrun/src/cli/commands/still.ts b/packages/cloudrun/src/cli/commands/still.ts index cc152904e4b..78198a7a4b9 100644 --- a/packages/cloudrun/src/cli/commands/still.ts +++ b/packages/cloudrun/src/cli/commands/still.ts @@ -51,6 +51,8 @@ export const stillCommand = async ( stillFrame, height, width, + fps, + durationInFrames, } = CliInternals.getCliOptions({ isStill: false, logLevel, @@ -155,6 +157,8 @@ export const stillCommand = async ( timeoutInMilliseconds: puppeteerTimeout, height, width, + fps, + durationInFrames, server: await server, offthreadVideoCacheSizeInBytes, binariesDirectory, @@ -249,6 +253,8 @@ ${downloadName ? ` Downloaded File = ${downloadName}` : ''} scale, forceHeight: height, forceWidth: width, + forceFps: fps, + forceDurationInFrames: durationInFrames, forceBucketName, outName, logLevel, diff --git a/packages/cloudrun/src/functions/helpers/payloads.ts b/packages/cloudrun/src/functions/helpers/payloads.ts index 0f0b416dbe6..4a32ab986a4 100644 --- a/packages/cloudrun/src/functions/helpers/payloads.ts +++ b/packages/cloudrun/src/functions/helpers/payloads.ts @@ -37,6 +37,8 @@ export const CloudRunPayload = z.discriminatedUnion('type', [ composition: z.string(), forceHeight: z.number().optional().nullable(), forceWidth: z.number().optional().nullable(), + forceFps: z.number().optional().nullable(), + forceDurationInFrames: z.number().optional().nullable(), codec, serializedInputPropsWithCustomSchema: z.string(), jpegQuality: z.number().nullable(), @@ -92,6 +94,8 @@ export const CloudRunPayload = z.discriminatedUnion('type', [ composition: z.string(), forceHeight: z.number().optional().nullable(), forceWidth: z.number().optional().nullable(), + forceFps: z.number().optional().nullable(), + forceDurationInFrames: z.number().optional().nullable(), serializedInputPropsWithCustomSchema: z.string(), jpegQuality: z.number().optional(), imageFormat: stillImageFormat, diff --git a/packages/cloudrun/src/functions/render-media-single-thread.ts b/packages/cloudrun/src/functions/render-media-single-thread.ts index ce7b801dd60..42538dee64f 100644 --- a/packages/cloudrun/src/functions/render-media-single-thread.ts +++ b/packages/cloudrun/src/functions/render-media-single-thread.ts @@ -139,6 +139,8 @@ export const renderMediaSingleThread = async ( ...composition, height: body.forceHeight ?? composition.height, width: body.forceWidth ?? composition.width, + fps: body.forceFps ?? composition.fps, + durationInFrames: body.forceDurationInFrames ?? composition.durationInFrames, }, serveUrl: body.serveUrl, codec: body.codec, diff --git a/packages/cloudrun/src/functions/render-still-single-thread.ts b/packages/cloudrun/src/functions/render-still-single-thread.ts index 3cc6374d31b..c84864e7903 100644 --- a/packages/cloudrun/src/functions/render-still-single-thread.ts +++ b/packages/cloudrun/src/functions/render-still-single-thread.ts @@ -71,6 +71,8 @@ export const renderStillSingleThread = async ( ...composition, height: body.forceHeight ?? composition.height, width: body.forceWidth ?? composition.width, + fps: body.forceFps ?? composition.fps, + durationInFrames: body.forceDurationInFrames ?? composition.durationInFrames, }, serveUrl: body.serveUrl, output: tempFilePath, diff --git a/packages/core/package.json b/packages/core/package.json index 0d506e75953..8919b78e869 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -9,7 +9,7 @@ "types": "dist/cjs/index.d.ts", "module": "dist/esm/index.mjs", "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "prepublishOnly": "bun ensure-correct-version.ts && cp ../../README.md .", "lint": "eslint src", "test": "bun test src/test", diff --git a/packages/core/src/Sequence.tsx b/packages/core/src/Sequence.tsx index 5c4d9442ff3..136d57616af 100644 --- a/packages/core/src/Sequence.tsx +++ b/packages/core/src/Sequence.tsx @@ -22,6 +22,7 @@ import {useVideoConfig} from './use-video-config.js'; import {Freeze} from './freeze.js'; import {useCurrentFrame} from './use-current-frame'; import {useRemotionEnvironment} from './use-remotion-environment.js'; +import {ENABLE_V5_BREAKING_CHANGES} from './v5-flag.js'; export type AbsoluteFillLayout = { layout?: 'absolute-fill'; @@ -380,9 +381,19 @@ const SequenceRefForwardingFunction: React.ForwardRefRenderFunction< SequenceProps > = (props, ref) => { const env = useRemotionEnvironment(); + const {fps} = useVideoConfig(); if (props.layout !== 'none' && !env.isRendering) { - if (props.premountFor || props.postmountFor) { - return ; + const effectivePremountFor = ENABLE_V5_BREAKING_CHANGES + ? (props.premountFor ?? fps) + : props.premountFor; + if (effectivePremountFor || props.postmountFor) { + return ( + + ); } } diff --git a/packages/core/src/test/sequence-validation.test.tsx b/packages/core/src/test/sequence-validation.test.tsx index 6deb2ff3fc5..c5156a8841a 100644 --- a/packages/core/src/test/sequence-validation.test.tsx +++ b/packages/core/src/test/sequence-validation.test.tsx @@ -26,8 +26,14 @@ describe('Composition-validation render should throw with invalid props', () => }); test('It should throw if Sequence has negative duration', () => { expectToThrow( - // @ts-expect-error - () => render(), + () => + render( + + + hi + + , + ), /durationInFrames must be positive, but got -1/, ); }); @@ -36,8 +42,13 @@ describe('Composition-validation render should throw with invalid props', () => describe('Throw with invalid from props', () => { test('It should throw if "from" props is not a number', () => { expectToThrow( - // @ts-expect-error - () => render(), + () => + render( + + {/* @ts-expect-error */} + + , + ), /You passed to the "from" props of your an argument of type string, but it must be a number./, ); }); @@ -46,8 +57,14 @@ describe('Composition-validation render should throw with invalid props', () => expectToThrow( () => render( - // @ts-expect-error - , + + + , ), /The layout prop of expects either "absolute-fill" or "none", but you passed: invalid-value/, ); diff --git a/packages/create-video/package.json b/packages/create-video/package.json index 32167a2a939..a6f1589af7c 100644 --- a/packages/create-video/package.json +++ b/packages/create-video/package.json @@ -10,7 +10,7 @@ "create-video": "bin.js" }, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "test": "bun test src", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts" diff --git a/packages/design/package.json b/packages/design/package.json index ac5cc9e67e0..306679038dd 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/remotion-dev/remotion/issues" }, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "watch": "tsgo -w", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts" diff --git a/packages/docs/components/3DPhonePlayer.tsx b/packages/docs/components/3DPhonePlayer.tsx index f998f44250d..b94763fe75c 100644 --- a/packages/docs/components/3DPhonePlayer.tsx +++ b/packages/docs/components/3DPhonePlayer.tsx @@ -1,25 +1,26 @@ -import { Player } from "@remotion/player"; -import React from "react"; -import phone from "./3DPhone/assets/phone.mp4"; -import { Scene } from "./3DPhone/Scene"; +import {Player} from '@remotion/player'; +import React from 'react'; +import phone from './3DPhone/assets/phone.mp4'; +import {Scene} from './3DPhone/Scene'; export const ThreeDPlayer: React.FC = () => { - return ( - - ); + return ( + + ); }; diff --git a/packages/docs/components/AcceleratedVideoPlayerExample.tsx b/packages/docs/components/AcceleratedVideoPlayerExample.tsx index 1f9694da9f2..b7624c06706 100644 --- a/packages/docs/components/AcceleratedVideoPlayerExample.tsx +++ b/packages/docs/components/AcceleratedVideoPlayerExample.tsx @@ -43,6 +43,7 @@ const AcceleratedVideo: React.FC = () => { export const AcceleratedVideoExample: React.FC = () => { return ( { return (
{ - return ( -
- -
- ); + return ( +
+ +
+ ); }; diff --git a/packages/docs/components/FreezeExample/FreezeExample.tsx b/packages/docs/components/FreezeExample/FreezeExample.tsx index e1926b4f925..8275b6f3cc6 100644 --- a/packages/docs/components/FreezeExample/FreezeExample.tsx +++ b/packages/docs/components/FreezeExample/FreezeExample.tsx @@ -1,103 +1,106 @@ -import { Player } from "@remotion/player"; -import React, { useState } from "react"; +import {Player} from '@remotion/player'; +import React, {useState} from 'react'; import { - AbsoluteFill, - Freeze, - interpolate, - spring, - useCurrentFrame, -} from "remotion"; + AbsoluteFill, + Freeze, + interpolate, + spring, + useCurrentFrame, +} from 'remotion'; const BlueSquare: React.FC = () => { - const frame = useCurrentFrame(); - const animation = spring({ - fps: 30, - frame, - config: { - damping: 400, - }, - }); - return ( - -
- {frame} -
-
- ); + const frame = useCurrentFrame(); + const animation = spring({ + fps: 30, + frame, + config: { + damping: 400, + }, + }); + return ( + +
+ {frame} +
+
+ ); }; -const BlueSquareFreeze: React.FC<{ readonly frozen: number | null }> = ({ frozen }) => { - if (frozen !== null) { - return ( - - - - ); - } +const BlueSquareFreeze: React.FC<{readonly frozen: number | null}> = ({ + frozen, +}) => { + if (frozen !== null) { + return ( + + + + ); + } - return ; + return ; }; export const FreezeExample: React.FC = () => { - const [isFreeze, setIsFreeze] = useState(false); - const [frame, setFrameNumber] = useState(30); - return ( -
- -
- -
- {isFreeze ? ( -
- -
- ) : null} -
- ); + const [isFreeze, setIsFreeze] = useState(false); + const [frame, setFrameNumber] = useState(30); + return ( +
+ +
+ +
+ {isFreeze ? ( +
+ +
+ ) : null} +
+ ); }; diff --git a/packages/docs/components/GreenscreenExamples/index.tsx b/packages/docs/components/GreenscreenExamples/index.tsx index 944102311cc..f8114de3c42 100644 --- a/packages/docs/components/GreenscreenExamples/index.tsx +++ b/packages/docs/components/GreenscreenExamples/index.tsx @@ -107,6 +107,7 @@ export const VideoCanvasExamples: React.FC<{ return (
{ - const frame = useCurrentFrame(); - const animation = spring({ - fps: 30, - frame, - config: { - damping: 400, - }, - }); - return ( - -
- {frame} -
-
- ); + const frame = useCurrentFrame(); + const animation = spring({ + fps: 30, + frame, + config: { + damping: 400, + }, + }); + return ( + +
+ {frame} +
+
+ ); }; const BaseExample: React.FC = () => ( - - - + + + ); const TimesExample: React.FC = () => ( - - - + + + ); const NestedExample: React.FC = () => ( - - - - - + + + + + ); export const LoopExamples: React.FC<{ - readonly type: "base" | "times" | "nested"; -}> = ({ type }) => { - const component = (() => { - if (type === "base") { - return BaseExample; - } + readonly type: 'base' | 'times' | 'nested'; +}> = ({type}) => { + const component = (() => { + if (type === 'base') { + return BaseExample; + } - if (type === "times") { - return TimesExample; - } + if (type === 'times') { + return TimesExample; + } - if (type === "nested") { - return NestedExample; - } + if (type === 'nested') { + return NestedExample; + } - return BlueSquare; - })(); - return ( -
- -
- ); + return BlueSquare; + })(); + return ( +
+ +
+ ); }; diff --git a/packages/docs/components/PlayerExample.tsx b/packages/docs/components/PlayerExample.tsx index 4a91828f49f..1073dc3baa0 100644 --- a/packages/docs/components/PlayerExample.tsx +++ b/packages/docs/components/PlayerExample.tsx @@ -44,6 +44,7 @@ export const PlayerExample: React.FC<{
{ - const frame = useCurrentFrame(); - const animation = spring({ - fps: 30, - frame, - config: { - damping: 400, - }, - }); - return ( - -
- {frame} -
-
- ); + const frame = useCurrentFrame(); + const animation = spring({ + fps: 30, + frame, + config: { + damping: 400, + }, + }); + return ( + +
+ {frame} +
+
+ ); }; const DelayExample: React.FC = () => { - return ( - - - - ); + return ( + + + + ); }; const TrimStartExample: React.FC = () => { - return ( - - - - ); + return ( + + + + ); }; const TrimAndDelayExample: React.FC = () => { - return ( - - - - - - ); + return ( + + + + + + ); }; const ClipExample: React.FC = () => { - return ( - - - - ); + return ( + + + + ); }; const BaseExample: React.FC = () => { - return ; + return ; }; export const SequenceForwardExample: React.FC<{ - readonly type: "base" | "delay" | "clip" | "trim-start" | "trim-and-delay"; -}> = ({ type }) => { - const component = (() => { - if (type === "base") { - return BaseExample; - } + readonly type: 'base' | 'delay' | 'clip' | 'trim-start' | 'trim-and-delay'; +}> = ({type}) => { + const component = (() => { + if (type === 'base') { + return BaseExample; + } - if (type === "delay") { - return DelayExample; - } + if (type === 'delay') { + return DelayExample; + } - if (type === "trim-start") { - return TrimStartExample; - } + if (type === 'trim-start') { + return TrimStartExample; + } - if (type === "trim-and-delay") { - return TrimAndDelayExample; - } + if (type === 'trim-and-delay') { + return TrimAndDelayExample; + } - if (type === "clip") { - return ClipExample; - } + if (type === 'clip') { + return ClipExample; + } - throw new TypeError("oops"); - })(); - return ( -
- -
- ); + throw new TypeError('oops'); + })(); + return ( +
+ +
+ ); }; diff --git a/packages/docs/components/SeriesExamples/SeriesExample.tsx b/packages/docs/components/SeriesExamples/SeriesExample.tsx index c18f23b2cef..0571ce3ab59 100644 --- a/packages/docs/components/SeriesExamples/SeriesExample.tsx +++ b/packages/docs/components/SeriesExamples/SeriesExample.tsx @@ -1,72 +1,73 @@ -import { Player } from "@remotion/player"; -import React from "react"; -import { AbsoluteFill, Series, useCurrentFrame } from "remotion"; +import {Player} from '@remotion/player'; +import React from 'react'; +import {AbsoluteFill, Series, useCurrentFrame} from 'remotion'; const Square: React.FC<{ - readonly color: string; -}> = ({ color }) => { - const frame = useCurrentFrame(); - return ( - -
- {frame} -
-
- ); + readonly color: string; +}> = ({color}) => { + const frame = useCurrentFrame(); + return ( + +
+ {frame} +
+
+ ); }; const BaseExample: React.FC = () => { - return ( - - - - - - - - - - - - ); + return ( + + + + + + + + + + + + ); }; export const SeriesExample: React.FC<{ - readonly type: "base"; -}> = ({ type }) => { - const component = (() => { - if (type === "base") { - return BaseExample; - } + readonly type: 'base'; +}> = ({type}) => { + const component = (() => { + if (type === 'base') { + return BaseExample; + } - throw new TypeError("oops"); - })(); - return ( -
- -
- ); + throw new TypeError('oops'); + })(); + return ( +
+ +
+ ); }; diff --git a/packages/docs/components/TrailExample/TrailExample.tsx b/packages/docs/components/TrailExample/TrailExample.tsx index 4d0dd4262e9..92d3a368c77 100644 --- a/packages/docs/components/TrailExample/TrailExample.tsx +++ b/packages/docs/components/TrailExample/TrailExample.tsx @@ -1,201 +1,202 @@ -import { Player } from "@remotion/player"; -import React, { useState } from "react"; +import {Player} from '@remotion/player'; +import React, {useState} from 'react'; import { - AbsoluteFill, - Freeze, - interpolate, - spring, - useCurrentFrame, - useVideoConfig, -} from "remotion"; + AbsoluteFill, + Freeze, + interpolate, + spring, + useCurrentFrame, + useVideoConfig, +} from 'remotion'; -import { Trail } from "@remotion/motion-blur"; +import {Trail} from '@remotion/motion-blur'; const square: React.CSSProperties = { - height: 150, - width: 150, - backgroundColor: "#0b84f3", - borderRadius: 14, - fontSize: 100, - fontWeight: "bold", - display: "flex", - justifyContent: "center", - alignItems: "center", - color: "white", + height: 150, + width: 150, + backgroundColor: '#0b84f3', + borderRadius: 14, + fontSize: 100, + fontWeight: 'bold', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + color: 'white', }; const row: React.CSSProperties = { - display: "flex", - flexDirection: "row", - alignItems: "center", - flexWrap: "wrap", + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + flexWrap: 'wrap', }; const spacer: React.CSSProperties = { - width: 40, + width: 40, }; export const Square: React.FC = () => { - const frame = useCurrentFrame(); - const { fps, height } = useVideoConfig(); - const spr = spring({ - fps, - frame, - config: { - damping: 200, - }, - durationInFrames: 60, - }); + const frame = useCurrentFrame(); + const {fps, height} = useVideoConfig(); + const spr = spring({ + fps, + frame, + config: { + damping: 200, + }, + durationInFrames: 60, + }); - const rotate = interpolate(spr, [0, 1], [Math.PI, 0]); - const y = interpolate(spr, [0, 1], [height, 0]); + const rotate = interpolate(spr, [0, 1], [Math.PI, 0]); + const y = interpolate(spr, [0, 1], [height, 0]); - return ( - -
A
-
- ); + return ( + +
A
+
+ ); }; const MyComposition = ({ - trailOpacity, - layers, - lagInFrames, + trailOpacity, + layers, + lagInFrames, }: { - readonly trailOpacity: number; - readonly layers: number; - readonly lagInFrames: number; + readonly trailOpacity: number; + readonly layers: number; + readonly lagInFrames: number; }) => { - return ( - -
- -

Still

-
- - - - - -
-
-
- -

Animation

-
- - - -
- - ); + return ( + +
+ +

Still

+
+ + + + + +
+
+
+ +

Animation

+
+ + + +
+ + ); }; export const TrailExample: React.FC = () => { - const [trailOpacity, setTrailOpacity] = useState(1); - const [lagInFrames, setFrameDelay] = useState(0.3); - const [layers, setLayers] = useState(50); + const [trailOpacity, setTrailOpacity] = useState(1); + const [lagInFrames, setFrameDelay] = useState(0.3); + const [layers, setLayers] = useState(50); - return ( -
- -
-
- -
+ return ( +
+ +
+
+ +
- -
+ +
- + -
-
-
- ); +
+
+
+ ); }; diff --git a/packages/docs/components/demos/index.tsx b/packages/docs/components/demos/index.tsx index 70d81d163c7..16a6432704a 100644 --- a/packages/docs/components/demos/index.tsx +++ b/packages/docs/components/demos/index.tsx @@ -129,6 +129,7 @@ export const Demo: React.FC<{
`](/docs/sequence), [``](/docs/series) and [``](/docs/transitions/transitionseries) components now automatically [premount](/docs/player/premounting) for 1 second (`fps` frames) before they appear. +This prevents black frames that were commonly seen when a `` containing heavy content (e.g. videos, images) appeared. + +**Required action**: If you don't want this behavior for a specific Sequence, opt out by passing [`premountFor={0}`](/docs/sequence#premountfor). + ## License changes Remotion 5.0 has an updated license. View the [license](https://github.com/remotion-dev/remotion/blob/5-0-license/LICENSE.md) here or compare the [changes](https://github.com/remotion-dev/remotion/pull/3750). diff --git a/packages/docs/docs/acknowledgements.mdx b/packages/docs/docs/acknowledgements.mdx index d8d2f09ae15..d0b114c1fb0 100644 --- a/packages/docs/docs/acknowledgements.mdx +++ b/packages/docs/docs/acknowledgements.mdx @@ -8,10 +8,15 @@ Remotion would not be possible without the work of many others. ## Software acknowledgements -This software uses code of [FFmpeg](http://ffmpeg.org) licensed under the [LGPLv2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) and its source can be downloaded [here](https://github.com/remotion-dev/rust-ffmpeg-splitter). +| Software | License | Source Code | Notes | +| :--- | :--- | :--- | :--- | +| **FFmpeg** | [LGPLv2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) | [View Source](https://github.com/remotion-dev/rust-ffmpeg-splitter) | Core video processing code ([ffmpeg.org](http://ffmpeg.org)) | +| **Mediabunny** | [MPLv2.0](https://www.mozilla.org/en-US/MPL/2.0/) | [View Source](https://github.com/Vanilagy/mediabunny) | Media processing library ([mediabunny.dev](https://mediabunny.dev/)) | +| **Zod** | [MIT](https://opensource.org/license/mit) | [View Source](https://github.com/colinhacks/zod) | TypeScript schema validation ([zod.dev](https://zod.dev/)) | Remotion depends on many JavaScript packages. View the list of packages for each package that we distribute [here](https://github.com/remotion-dev/remotion/tree/main/packages). + ## Contributors -More than [200 people](https://github.com/remotion-dev/remotion/graphs/contributors) have contributed to the Remotion codebase. +More than [300 people](https://github.com/remotion-dev/remotion/graphs/contributors) have contributed to the Remotion codebase. diff --git a/packages/docs/docs/animation-utils/interpolate-styles.mdx b/packages/docs/docs/animation-utils/interpolate-styles.mdx index ac163de5adc..b286561b4f9 100644 --- a/packages/docs/docs/animation-utils/interpolate-styles.mdx +++ b/packages/docs/docs/animation-utils/interpolate-styles.mdx @@ -41,7 +41,7 @@ A function that takes 3-4 arguments: 1. The input value. 2. The range of values that you expect the input to assume. 3. The range of output styles that you want the input to map to. -4. Options object, same as the options of [`interpolate()`](/docs/interpolate#options). Optional. +4. Options object, same as the options of [`interpolate()`](/docs/interpolate#extrapolateleft). Optional. ## Return value diff --git a/packages/docs/docs/audio/order-of-operations.mdx b/packages/docs/docs/audio/order-of-operations.mdx index 623eacaa2e5..3ca5b166dc8 100644 --- a/packages/docs/docs/audio/order-of-operations.mdx +++ b/packages/docs/docs/audio/order-of-operations.mdx @@ -18,7 +18,7 @@ Since Remotion v4.0.141, the order of operations is guaranteed to be the followi Example for a 30 FPS composition which is 60 frames long: -1. An [`
-

New Render

{ - if (prev.status !== "invoking") return prev; - return { - ...prev, - phase: message.phase, - progress: message.progress, - subtitle: message.subtitle ?? null, - }; - }); - } else if (message.type === "done") { - setState({ - status: "done", - url: message.url, - size: message.size, - }); - } else if (message.type === "error") { - setState({ - status: "error", - error: new Error(message.message), - }); + switch (message.type) { + case "phase": + setState((prev) => { + if (prev.status !== "invoking") return prev; + return { + ...prev, + phase: message.phase, + progress: message.progress, + subtitle: message.subtitle ?? null, + }; + }); + break; + case "done": + setState({ + status: "done", + url: message.url, + size: message.size, + }); + break; + case "error": + setState({ + status: "error", + error: new Error(message.message), + }); + break; + default: + message satisfies never; + break; } } } diff --git a/packages/template-vercel/types/schema.ts b/packages/template-vercel/types/schema.ts index 66d77866c90..b8cf06dc48e 100644 --- a/packages/template-vercel/types/schema.ts +++ b/packages/template-vercel/types/schema.ts @@ -2,22 +2,22 @@ import { z } from "zod"; import { CompositionProps } from "./constants"; export const RenderRequest = z.object({ - id: z.string(), - inputProps: CompositionProps, + id: z.string(), + inputProps: CompositionProps, }); export type RenderResponse = - | { - type: "error"; - message: string; - } - | { - type: "done"; - url: string; - size: number; - }; + | { + type: "error"; + message: string; + } + | { + type: "done"; + url: string; + size: number; + }; export type SSEMessage = - | { type: "phase"; phase: string; progress: number; subtitle?: string } - | { type: "done"; url: string; size: number } - | { type: "error"; message: string }; + | { type: "phase"; phase: string; progress: number; subtitle?: string } + | { type: "done"; url: string; size: number } + | { type: "error"; message: string }; diff --git a/packages/three/package.json b/packages/three/package.json index adb1788a00e..5c91387830a 100644 --- a/packages/three/package.json +++ b/packages/three/package.json @@ -10,7 +10,7 @@ "module": "dist/esm/index.mjs", "sideEffects": false, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts" }, diff --git a/packages/transitions/package.json b/packages/transitions/package.json index 58cc16ab5fc..db9a86b22d4 100644 --- a/packages/transitions/package.json +++ b/packages/transitions/package.json @@ -12,7 +12,7 @@ "scripts": { "test": "bun test src", "lint": "eslint src", - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts" }, "author": "Jonny Burger", diff --git a/packages/web-renderer/package.json b/packages/web-renderer/package.json index 8735561577d..da410f20b58 100644 --- a/packages/web-renderer/package.json +++ b/packages/web-renderer/package.json @@ -7,7 +7,7 @@ "main": "dist/index.js", "type": "module", "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "make": "tsgo && bun --env-file=../.env.bundle bundle.ts", "watch": "tsgo -w", diff --git a/packages/webcodecs/package.json b/packages/webcodecs/package.json index 513d4da5ca2..d2c9508d5e4 100644 --- a/packages/webcodecs/package.json +++ b/packages/webcodecs/package.json @@ -12,7 +12,7 @@ "url": "https://github.com/remotion-dev/remotion/issues" }, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "test": "bun test src/test", "testwebcodecs": "playwright test src/it-tests", diff --git a/packages/whisper-web/package.json b/packages/whisper-web/package.json index dbeb7361cfb..4a6abbf74b9 100644 --- a/packages/whisper-web/package.json +++ b/packages/whisper-web/package.json @@ -7,7 +7,7 @@ "main": "dist/index.js", "sideEffects": false, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts" }, diff --git a/packages/zod-types/package.json b/packages/zod-types/package.json index c95048c49e1..21db4a7e95d 100644 --- a/packages/zod-types/package.json +++ b/packages/zod-types/package.json @@ -10,7 +10,7 @@ "module": "dist/esm/index.mjs", "sideEffects": false, "scripts": { - "formatting": "prettier --experimental-cli src --check", + "formatting": "prettier src --check", "lint": "eslint src", "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts" },