diff --git a/bun.lock b/bun.lock index b2d069c1b12..39bf58c3739 100644 --- a/bun.lock +++ b/bun.lock @@ -79,9 +79,9 @@ "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.14.5", "@babel/preset-typescript": "7.23.2", + "@rspack/core": "1.0.14", "babel-loader": "8.2.2", "react-refresh": "0.9.0", - "webpack": "5.96.1", }, "devDependencies": { "@remotion/bundler": "workspace:*", @@ -100,13 +100,13 @@ "@remotion/media-parser": "workspace:*", "@remotion/studio": "workspace:*", "@remotion/studio-shared": "workspace:*", + "@rspack/core": "1.0.14", + "@rspack/plugin-react-refresh": "1.0.0", "css-loader": "5.2.7", - "esbuild": "0.25.0", "react-refresh": "0.9.0", "remotion": "workspace:*", "source-map": "0.7.3", "style-loader": "4.0.0", - "webpack": "5.96.1", }, "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", @@ -144,6 +144,7 @@ "@remotion/studio-server": "workspace:*", "@remotion/studio-shared": "workspace:*", "dotenv": "9.0.2", + "esbuild": "0.18.6", "minimist": "1.2.6", "prompts": "2.4.2", "remotion": "workspace:*", @@ -190,6 +191,7 @@ "@remotion/eslint-config-internal": "workspace:*", "@types/minimist": "1.2.2", "@types/node": "20.12.14", + "esbuild": "0.18.6", "eslint": "9.19.0", }, }, @@ -279,8 +281,10 @@ "@types/dom-webcodecs": "0.1.11", "eslint": "9.19.0", "happy-dom": "15.10.2", + "jsdom": "21.1.0", "react": "19.0.0", "react-dom": "19.0.0", + "vitest": "0.31.1", "webpack": "5.96.1", "zod": "3.23.8", }, @@ -633,7 +637,7 @@ }, "devDependencies": { "@remotion/eslint-config-internal": "workspace:*", - "esbuild": "0.25.0", + "esbuild": "0.18.6", "eslint": "9.19.0", "react": "19.0.0", "react-dom": "19.0.0", @@ -705,6 +709,7 @@ "@types/node": "20.12.14", "@types/sharp": "^0.28.5", "create-video": "workspace:*", + "esbuild": "0.18.6", "execa": "5.1.1", "remotion": "workspace:*", "sharp": "0.32.6", @@ -730,6 +735,7 @@ "@remotion/serverless": "workspace:*", "@remotion/streaming": "workspace:*", "@smithy/abort-controller": "4.0.1", + "esbuild": "0.18.6", "remotion": "workspace:*", "zod": "3.23.8", }, @@ -2552,53 +2558,53 @@ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.18.6", "", { "os": "android", "cpu": "arm" }, "sha512-J3lwhDSXBBppSzm/LC1uZ8yKSIpExc+5T8MxrYD9KNVZG81FOAu2VF2gXi/6A/LwDDQQ+b6DpQbYlo3VwxFepQ=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.6", "", { "os": "android", "cpu": "arm64" }, "sha512-pL0Ci8P9q1sWbtPx8CXbc8JvPvvYdJJQ+LO09PLFsbz3aYNdFBGWJjiHU+CaObO4Ames+GOFpXRAJZS2L3ZK/A=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.18.6", "", { "os": "android", "cpu": "x64" }, "sha512-hE2vZxOlJ05aY28lUpB0y0RokngtZtcUB+TVl9vnLEnY0z/8BicSvrkThg5/iI1rbf8TwXrbr2heEjl9fLf+EA=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.18.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-/tuyl4R+QhhoROQtuQj9E/yfJtZNdv2HKaHwYhhHGQDN1Teziem2Kh7BWQMumfiY7Lu9g5rO7scWdGE4OsQ6MQ=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.18.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-L7IQga2pDT+14Ti8HZwsVfbCjuKP4U213T3tuPggOzyK/p4KaUJxQFXJgfUFHKzU0zOXx8QcYRYZf0hSQtppkw=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.18.6", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-bq10jFv42V20Kk77NvmO+WEZaLHBKuXcvEowixnBOMkaBgS7kQaqTc77ZJDbsUpXU3KKNLQFZctfaeINmeTsZA=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.18.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-HbDLlkDZqUMBQaiday0pJzB6/8Xx/10dI3xRebJBReOEeDSeS+7GzTtW9h8ZnfB7/wBCqvtAjGtWQLTNPbR2+g=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.18.6", "", { "os": "linux", "cpu": "arm" }, "sha512-C+5kb6rgsGMmvIdUI7v1PPgC98A6BMv233e97aXZ5AE03iMdlILFD/20HlHrOi0x2CzbspXn9HOnlE4/Ijn5Kw=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.18.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-NMY9yg/88MskEZH2s4i6biz/3av+M8xY5ua4HE7CCz5DBz542cr7REe317+v7oKjnYBCijHpkzo5vU85bkXQmQ=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.18.6", "", { "os": "linux", "cpu": "ia32" }, "sha512-AXazA0ljvQEp7cA9jscABNXsjodKbEcqPcAE3rDzKN82Vb3lYOq6INd+HOCA7hk8IegEyHW4T72Z7QGIhyCQEA=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.18.6", "", { "os": "linux", "cpu": "none" }, "sha512-JjBf7TwY7ldcPgHYt9UcrjZB03+WZqg/jSwMAfzOzM5ZG+tu5umUqzy5ugH/crGI4eoDIhSOTDp1NL3Uo/05Fw=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.18.6", "", { "os": "linux", "cpu": "none" }, "sha512-kATNsslryVxcH1sO3KP2nnyUWtZZVkgyhAUnyTVVa0OQQ9pmDRjTpHaE+2EQHoCM5wt/uav2edrAUqbwn3tkKQ=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.18.6", "", { "os": "linux", "cpu": "ppc64" }, "sha512-B+wTKz+8pi7mcWXFQV0LA79dJ+qhiut5uK9q0omoKnq8yRIwQJwfg3/vclXoqqcX89Ri5Y5538V0Se2v5qlcLA=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.18.6", "", { "os": "linux", "cpu": "none" }, "sha512-h44RBLVXFUSjvhOfseE+5UxQ/r9LVeqK2S8JziJKOm9W7SePYRPDyn7MhzhNCCFPkcjIy+soCxfhlJXHXXCR0A=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.18.6", "", { "os": "linux", "cpu": "s390x" }, "sha512-FlYpyr2Xc2AUePoAbc84NRV+mj7xpsISeQ36HGf9etrY5rTBEA+IU9HzWVmw5mDFtC62EQxzkLRj8h5Hq85yOQ=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.18.6", "", { "os": "linux", "cpu": "x64" }, "sha512-Mc4EUSYwzLci77u0Kao6ajB2WbTe5fNc7+lHwS3a+vJISC/oprwURezUYu1SdWAYoczbsyOvKAJwuNftoAdjjg=="], "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.18.6", "", { "os": "none", "cpu": "x64" }, "sha512-3hgZlp7NqIM5lNG3fpdhBI5rUnPmdahraSmwAi+YX/bp7iZ7mpTv2NkypGs/XngdMtpzljICxnUG3uPfqLFd3w=="], "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.18.6", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aEWTdZQHtSRROlDYn7ygB8yAqtnall/UnmoVIJVqccKitkAWVVSYocQUWrBOxLEFk8XdlRouVrLZe6WXszyviA=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.18.6", "", { "os": "sunos", "cpu": "x64" }, "sha512-uxk/5yAGpjKZUHOECtI9W+9IcLjKj+2m0qf+RG7f7eRBHr8wP6wsr3XbNbgtOD1qSpPapd6R2ZfSeXTkCcAo5g=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.18.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-oXlXGS9zvNCGoAT/tLHAsFKrIKye1JaIIP0anCdpaI+Dc10ftaNZcqfLzEwyhdzFAYInXYH4V7kEdH4hPyo9GA=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.18.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-qh7IcAHUvvmMBmoIG+V+BbE9ZWSR0ohF51e5g8JZvU08kZF58uDFL5tHs0eoYz31H6Finv17te3W3QB042GqVA=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.6", "", { "os": "win32", "cpu": "x64" }, "sha512-9UDwkz7Wlm4N9jnv+4NL7F8vxLhSZfEkRArz2gD33HesAFfMLGIGNVXRoIHtWNw8feKsnGly9Hq1EUuRkWl0zA=="], "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "3.4.3" }, "peerDependencies": { "eslint": "9.19.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="], @@ -2840,15 +2846,15 @@ "@module-federation/error-codes": ["@module-federation/error-codes@0.14.3", "", {}, "sha512-sBJ3XKU9g5Up31jFeXPFsD8AgORV7TLO/cCSMuRewSfgYbG/3vSKLJmfHrO6+PvjZSb9VyV2UaF02ojktW65vw=="], - "@module-federation/runtime": ["@module-federation/runtime@0.14.3", "", { "dependencies": { "@module-federation/error-codes": "0.14.3", "@module-federation/runtime-core": "0.14.3", "@module-federation/sdk": "0.14.3" } }, "sha512-7ZHpa3teUDVhraYdxQGkfGHzPbjna4LtwbpudgzAxSLLFxLDNanaxCuSeIgSM9c+8sVUNC9kvzUgJEZB0krPJw=="], + "@module-federation/runtime": ["@module-federation/runtime@0.5.1", "", { "dependencies": { "@module-federation/sdk": "0.5.1" } }, "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ=="], "@module-federation/runtime-core": ["@module-federation/runtime-core@0.14.3", "", { "dependencies": { "@module-federation/error-codes": "0.14.3", "@module-federation/sdk": "0.14.3" } }, "sha512-xMFQXflLVW/AJTWb4soAFP+LB4XuhE7ryiLIX8oTyUoBBgV6U2OPghnFljPjeXbud72O08NYlQ1qsHw1kN/V8Q=="], - "@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.14.3", "", { "dependencies": { "@module-federation/runtime": "0.14.3", "@module-federation/webpack-bundler-runtime": "0.14.3" } }, "sha512-QBETX7iMYXdSa3JtqFlYU+YkpymxETZqyIIRiqg0gW+XGpH3jgU68yjrme2NBJp7URQi/CFZG8KWtfClk0Pjgw=="], + "@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.5.1", "", { "dependencies": { "@module-federation/runtime": "0.5.1", "@module-federation/webpack-bundler-runtime": "0.5.1" } }, "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg=="], - "@module-federation/sdk": ["@module-federation/sdk@0.14.3", "", {}, "sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw=="], + "@module-federation/sdk": ["@module-federation/sdk@0.5.1", "", {}, "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA=="], - "@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.14.3", "", { "dependencies": { "@module-federation/runtime": "0.14.3", "@module-federation/sdk": "0.14.3" } }, "sha512-hIyJFu34P7bY2NeMIUHAS/mYUHEY71VTAsN0A0AqEJFSVPszheopu9VdXq0VDLrP9KQfuXT8SDxeYeJXyj0mgA=="], + "@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.5.1", "", { "dependencies": { "@module-federation/runtime": "0.5.1", "@module-federation/sdk": "0.5.1" } }, "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA=="], "@monogrid/gainmap-js": ["@monogrid/gainmap-js@3.1.0", "", { "dependencies": { "promise-worker-transferable": "1.0.4" }, "peerDependencies": { "three": "0.178.0" } }, "sha512-Obb0/gEd/HReTlg8ttaYk+0m62gQJmCblMOjHSMHRrBP2zdfKMHLCRbh/6ex9fSUJMKdjjIEiohwkbGD3wj2Nw=="], @@ -3282,30 +3288,32 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.40.1", "", { "os": "win32", "cpu": "x64" }, "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA=="], - "@rspack/binding": ["@rspack/binding@1.3.15", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.3.15", "@rspack/binding-darwin-x64": "1.3.15", "@rspack/binding-linux-arm64-gnu": "1.3.15", "@rspack/binding-linux-arm64-musl": "1.3.15", "@rspack/binding-linux-x64-gnu": "1.3.15", "@rspack/binding-linux-x64-musl": "1.3.15", "@rspack/binding-win32-arm64-msvc": "1.3.15", "@rspack/binding-win32-ia32-msvc": "1.3.15", "@rspack/binding-win32-x64-msvc": "1.3.15" } }, "sha512-utNPuJglLO5lW9XbwIqjB7+2ilMo6JkuVLTVdnNVKU94FW7asn9F/qV+d+MgjUVqU1QPCGm0NuGO9xhbgeJ7pg=="], + "@rspack/binding": ["@rspack/binding@1.0.14", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.0.14", "@rspack/binding-darwin-x64": "1.0.14", "@rspack/binding-linux-arm64-gnu": "1.0.14", "@rspack/binding-linux-arm64-musl": "1.0.14", "@rspack/binding-linux-x64-gnu": "1.0.14", "@rspack/binding-linux-x64-musl": "1.0.14", "@rspack/binding-win32-arm64-msvc": "1.0.14", "@rspack/binding-win32-ia32-msvc": "1.0.14", "@rspack/binding-win32-x64-msvc": "1.0.14" } }, "sha512-0wWqFvr9hkF4LgNPgWfkTU0hhkZAMvOytoCs2p+wDX1Up1E/SgJ1U1JAsCxsl1XtUKm7mRvdWHzJmHbza3y89Q=="], - "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.3.15", "", { "os": "darwin", "cpu": "arm64" }, "sha512-f+DnVRENRdVe+ufpZeqTtWAUDSTnP48jVo7x9KWsXf8XyJHUi+eHKEPrFoy1HvL1/k5yJ3HVnFBh1Hb9cNIwSg=="], + "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.0.14", "", { "os": "darwin", "cpu": "arm64" }, "sha512-dHvlF6T6ctThGDIdvkSdacroA1xlCxfteuppBj8BX/UxzLPr4xsaEtNilfJmFfd2/J02UQyTQauN/9EBuA+YkA=="], - "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.3.15", "", { "os": "darwin", "cpu": "x64" }, "sha512-TfUvEIBqYUT2OK01BYXb2MNcZeZIhAnJy/5aj0qV0uy4KlvwW63HYcKWa1sFd4Ac7bnGShDkanvP3YEuHOFOyg=="], + "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.0.14", "", { "os": "darwin", "cpu": "x64" }, "sha512-q4Da1Bn/4xTLhhnOkT+fjP2STsSCfp4z03/J/h8tCVG/UYz56Ud3q1UEOK33c5Fxw1C4GlhEh5yYOlSAdxFQLQ=="], - "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.3.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-D/YjYk9snKvYm1Elotq8/GsEipB4ZJWVv/V8cZ+ohhFNOPzygENi6JfyI06TryBTQiN0/JDZqt/S9RaWBWnMqw=="], + "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.0.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-JogYtL3VQS9wJ3p3FNhDqinm7avrMsdwz4erP7YCjD7idob93GYAE7dPrHUzSNVnCBYXRaHJYZHDQs7lKVcYZw=="], - "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.3.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-lJbBsPMOiR0hYPCSM42yp7QiZjfo0ALtX7ws2wURpsQp3BMfRVAmXU3Ixpo2XCRtG1zj8crHaCmAWOJTS0smsA=="], + "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.0.14", "", { "os": "linux", "cpu": "arm64" }, "sha512-qgybhxI/nnoa8CUz7zKTC0Oh37NZt9uRxsSV7+ZYrfxqbrVCoNVuutPpY724uUHy1M6W34kVEm1uT1N4Ka5cZg=="], - "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.3.15", "", { "os": "linux", "cpu": "x64" }, "sha512-qGB8ucHklrzNg6lsAS36VrBsCbOw0acgpQNqTE5cuHWrp1Pu3GFTRiFEogenxEmzoRbohMZt0Ev5grivrcgKBQ=="], + "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.0.14", "", { "os": "linux", "cpu": "x64" }, "sha512-5vzaDRw3/sGKo3ax/1cU3/cxqNjajwlt2LU288vXNe1/n8oe/pcDfYcTugpOe/A1DqzadanudJszLpFcKsaFtQ=="], - "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.3.15", "", { "os": "linux", "cpu": "x64" }, "sha512-qRn6e40fLQP+N2rQD8GAj/h4DakeTIho32VxTIaHRVuzw68ZD7VmKkwn55ssN370ejmey35ZdoNFNE12RBrMZA=="], + "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.0.14", "", { "os": "linux", "cpu": "x64" }, "sha512-4U6QD9xVS1eGme52DuJr6Fg/KdcUfJ+iKwH49Up460dZ/fLvGylnVGA+V0mzPlKi8gfy7NwFuYXZdu3Pwi1YYg=="], - "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.3.15", "", { "os": "win32", "cpu": "arm64" }, "sha512-7uJ7dWhO1nWXJiCss6Rslz8hoAxAhFpwpbWja3eHgRb7O4NPHg6MWw63AQSI2aFVakreenfu9yXQqYfpVWJ2dA=="], + "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.0.14", "", { "os": "win32", "cpu": "arm64" }, "sha512-SjeYw7qqRHYZ5RPClu+ffKZsShQdU3amA1OwC3M0AS6dbfEcji8482St3Y8Z+QSzYRapCEZij9LMM/9ypEhISg=="], - "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.3.15", "", { "os": "win32", "cpu": "ia32" }, "sha512-UsaWTYCjDiSCB0A0qETgZk4QvhwfG8gCrO4SJvA+QSEWOmgSai1YV70prFtLLIiyT9mDt1eU3tPWl1UWPRU/EQ=="], + "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.0.14", "", { "os": "win32", "cpu": "ia32" }, "sha512-m1gUiVyz3Z3VYIK/Ayo5CVHBjnEeRk9a+KIpKSsq1yhZItnMgjtr4bKabU9vjxalO4UoaSmVzODJI8lJBlnn5Q=="], - "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.3.15", "", { "os": "win32", "cpu": "x64" }, "sha512-ZnDIc9Es8EF94MirPDN+hOMt7tkb8nMEbRJFKLMmNd0ElNPgsql+1cY5SqyGRH1hsKB87KfSUQlhFiKZvzbfIg=="], + "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.0.14", "", { "os": "win32", "cpu": "x64" }, "sha512-Gbeg+bayMF9VP9xmlxySL/TC2XrS6/LZM/pqcNOTLHx6LMG/VXCcmKB0rOZo8MzLXEt8D/lQmQ/B6g7pSaAw0g=="], - "@rspack/core": ["@rspack/core@1.3.15", "", { "dependencies": { "@module-federation/runtime-tools": "0.14.3", "@rspack/binding": "1.3.15", "@rspack/lite-tapable": "1.0.1" } }, "sha512-QuElIC8jXSKWAp0LSx18pmbhA7NiA5HGoVYesmai90UVxz98tud0KpMxTVCg+0lrLrnKZfCWN9kwjCxM5pGnrA=="], + "@rspack/core": ["@rspack/core@1.0.14", "", { "dependencies": { "@module-federation/runtime-tools": "0.5.1", "@rspack/binding": "1.0.14", "@rspack/lite-tapable": "1.0.1", "caniuse-lite": "^1.0.30001616" }, "peerDependencies": { "@swc/helpers": ">=0.5.1" }, "optionalPeers": ["@swc/helpers"] }, "sha512-xHl23lxJZNjItGc5YuE9alz3yjb56y7EgJmAcBMPHMqgjtUt8rBu4xd/cSUjbr9/lLF9N4hdyoJiPJOFs9LEjw=="], "@rspack/lite-tapable": ["@rspack/lite-tapable@1.0.1", "", {}, "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w=="], + "@rspack/plugin-react-refresh": ["@rspack/plugin-react-refresh@1.0.0", "", { "dependencies": { "error-stack-parser": "^2.0.6", "html-entities": "^2.1.0" }, "peerDependencies": { "react-refresh": ">=0.10.0 <1.0.0" }, "optionalPeers": ["react-refresh"] }, "sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA=="], + "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.10.4", "", {}, "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA=="], @@ -3918,12 +3926,16 @@ "@zxing/text-encoding": ["@zxing/text-encoding@0.9.0", "", {}, "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA=="], + "abab": ["abab@2.0.6", "", {}, "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="], + "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "5.0.1" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + "acorn-globals": ["acorn-globals@7.0.1", "", { "dependencies": { "acorn": "^8.1.0", "acorn-walk": "^8.0.2" } }, "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q=="], + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "8.14.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], "acorn-walk": ["acorn-walk@8.3.2", "", {}, "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A=="], @@ -4120,7 +4132,7 @@ "bun": ["bun@1.3.0", "", { "optionalDependencies": { "@oven/bun-darwin-aarch64": "1.3.0", "@oven/bun-darwin-x64": "1.3.0", "@oven/bun-darwin-x64-baseline": "1.3.0", "@oven/bun-linux-aarch64": "1.3.0", "@oven/bun-linux-aarch64-musl": "1.3.0", "@oven/bun-linux-x64": "1.3.0", "@oven/bun-linux-x64-baseline": "1.3.0", "@oven/bun-linux-x64-musl": "1.3.0", "@oven/bun-linux-x64-musl-baseline": "1.3.0", "@oven/bun-windows-x64": "1.3.0", "@oven/bun-windows-x64-baseline": "1.3.0" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ], "bin": { "bun": "bin/bun.exe", "bunx": "bin/bunx.exe" } }, "sha512-YI7mFs7iWc/VsGsh2aw6eAPD2cjzn1j+LKdYVk09x1CrdTWKYIHyd+dG5iQoN9//3hCDoZj8U6vKpZzEf5UARA=="], - "bun-plugin-tailwind": ["bun-plugin-tailwind@0.0.13", "", { "dependencies": { "tailwindcss": "4.0.0-beta.9" }, "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-rTbzx+pK3F3cqgbtfbYibfWfKSWdcMNjdPTHgm+BbPhZWzMkBR6NpGqmKExJuIvdKRZgqoA0vd2/lke6rwZqMA=="], + "bun-plugin-tailwind": ["bun-plugin-tailwind@0.0.15", "", { "peerDependencies": { "typescript": "5.8.2" } }, "sha512-qtAXMNGG4R0UGGI8zWrqm2B7BdXqx48vunJXBPzfDOHPA5WkRUZdTSbE7TFwO4jLhYqSE23YMWsM9NhE6ovobw=="], "bun-types": ["bun-types@1.3.0", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-u8X0thhx+yJ0KmkxuEo9HAtdfgCBaM/aI9K90VQcQioAmkVp3SG3FkwWGibUFz3WdXAdcsqOcbU40lK7tbHdkQ=="], @@ -4366,6 +4378,10 @@ "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "2.2.1" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], + "cssom": ["cssom@0.5.0", "", {}, "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="], + + "cssstyle": ["cssstyle@2.3.0", "", { "dependencies": { "cssom": "~0.3.6" } }, "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A=="], + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], "custom-event-polyfill": ["custom-event-polyfill@1.0.7", "", {}, "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w=="], @@ -4376,6 +4392,8 @@ "data-uri-to-buffer": ["data-uri-to-buffer@3.0.1", "", {}, "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="], + "data-urls": ["data-urls@3.0.2", "", { "dependencies": { "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", "whatwg-url": "^11.0.0" } }, "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ=="], + "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "1.0.3", "es-errors": "1.3.0", "is-data-view": "1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "1.0.3", "es-errors": "1.3.0", "is-data-view": "1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], @@ -4390,6 +4408,8 @@ "decamelize": ["decamelize@6.0.1", "", {}, "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ=="], + "decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="], + "decode-named-character-reference": ["decode-named-character-reference@1.0.2", "", { "dependencies": { "character-entities": "2.0.2" } }, "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg=="], "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], @@ -4480,6 +4500,8 @@ "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + "domexception": ["domexception@4.0.0", "", { "dependencies": { "webidl-conversions": "^7.0.0" } }, "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw=="], + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], "domutils": ["domutils@3.0.1", "", { "dependencies": { "dom-serializer": "2.0.0", "domelementtype": "2.3.0", "domhandler": "5.0.3" } }, "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q=="], @@ -4538,6 +4560,8 @@ "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], + "error-stack-parser": ["error-stack-parser@2.1.4", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ=="], + "es-abstract": ["es-abstract@1.23.9", "", { "dependencies": { "array-buffer-byte-length": "1.0.2", "arraybuffer.prototype.slice": "1.0.4", "available-typed-arrays": "1.0.7", "call-bind": "1.0.8", "call-bound": "1.0.3", "data-view-buffer": "1.0.2", "data-view-byte-length": "1.0.2", "data-view-byte-offset": "1.0.1", "es-define-property": "1.0.1", "es-errors": "1.3.0", "es-object-atoms": "1.0.0", "es-set-tostringtag": "2.1.0", "es-to-primitive": "1.3.0", "function.prototype.name": "1.1.8", "get-intrinsic": "1.2.7", "get-proto": "1.0.1", "get-symbol-description": "1.1.0", "globalthis": "1.0.4", "gopd": "1.2.0", "has-property-descriptors": "1.0.2", "has-proto": "1.2.0", "has-symbols": "1.1.0", "hasown": "2.0.2", "internal-slot": "1.1.0", "is-array-buffer": "3.0.5", "is-callable": "1.2.7", "is-data-view": "1.0.2", "is-regex": "1.2.1", "is-shared-array-buffer": "1.0.4", "is-string": "1.1.1", "is-typed-array": "1.1.15", "is-weakref": "1.1.0", "math-intrinsics": "1.1.0", "object-inspect": "1.13.3", "object-keys": "1.1.1", "object.assign": "4.1.7", "own-keys": "1.0.1", "regexp.prototype.flags": "1.5.4", "safe-array-concat": "1.1.3", "safe-push-apply": "1.0.0", "safe-regex-test": "1.1.0", "set-proto": "1.0.0", "string.prototype.trim": "1.2.10", "string.prototype.trimend": "1.0.9", "string.prototype.trimstart": "1.0.8", "typed-array-buffer": "1.0.3", "typed-array-byte-length": "1.0.3", "typed-array-byte-offset": "1.0.4", "typed-array-length": "1.0.7", "unbox-primitive": "1.1.0", "which-typed-array": "1.1.18" } }, "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], @@ -4566,7 +4590,7 @@ "es6-weak-map": ["es6-weak-map@2.0.3", "", { "dependencies": { "d": "1.0.1", "es5-ext": "0.10.53", "es6-iterator": "2.0.3", "es6-symbol": "3.1.3" } }, "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA=="], - "esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "esbuild": ["esbuild@0.18.6", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.6", "@esbuild/android-arm64": "0.18.6", "@esbuild/android-x64": "0.18.6", "@esbuild/darwin-arm64": "0.18.6", "@esbuild/darwin-x64": "0.18.6", "@esbuild/freebsd-arm64": "0.18.6", "@esbuild/freebsd-x64": "0.18.6", "@esbuild/linux-arm": "0.18.6", "@esbuild/linux-arm64": "0.18.6", "@esbuild/linux-ia32": "0.18.6", "@esbuild/linux-loong64": "0.18.6", "@esbuild/linux-mips64el": "0.18.6", "@esbuild/linux-ppc64": "0.18.6", "@esbuild/linux-riscv64": "0.18.6", "@esbuild/linux-s390x": "0.18.6", "@esbuild/linux-x64": "0.18.6", "@esbuild/netbsd-x64": "0.18.6", "@esbuild/openbsd-x64": "0.18.6", "@esbuild/sunos-x64": "0.18.6", "@esbuild/win32-arm64": "0.18.6", "@esbuild/win32-ia32": "0.18.6", "@esbuild/win32-x64": "0.18.6" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-5QgxWaAhU/tPBpvkxUmnFv2YINHuZzjbk0LeUUnC2i3aJHjfi5yR49lgKgF7cb98bclOp/kans8M5TGbGFfJlQ=="], "esbuild-plugins-node-modules-polyfill": ["esbuild-plugins-node-modules-polyfill@1.6.6", "", { "dependencies": { "@jspm/core": "2.0.1", "local-pkg": "0.5.0", "resolve.exports": "2.0.2" }, "peerDependencies": { "esbuild": "0.17.6" } }, "sha512-0wDvliv65SCaaGtmoITnmXqqiUzU+ggFupnOgkEo2B9cQ+CUt58ql2+EY6dYoEsoqiHRu2NuTrFUJGMJEgMmLw=="], @@ -4578,7 +4602,7 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "escodegen": ["escodegen@1.14.3", "", { "dependencies": { "esprima": "4.0.1", "estraverse": "4.3.0", "esutils": "2.0.3", "optionator": "0.8.3" }, "optionalDependencies": { "source-map": "0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw=="], + "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "4.0.1", "estraverse": "5.3.0", "esutils": "2.0.3" }, "optionalDependencies": { "source-map": "0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], "eslint": ["eslint@9.19.0", "", { "dependencies": { "@eslint-community/eslint-utils": "4.7.0", "@eslint-community/regexpp": "4.12.1", "@eslint/config-array": "0.19.2", "@eslint/core": "0.10.0", "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.19.0", "@eslint/plugin-kit": "0.2.5", "@humanfs/node": "0.16.6", "@humanwhocodes/module-importer": "1.0.1", "@humanwhocodes/retry": "0.4.3", "@types/estree": "1.0.7", "@types/json-schema": "7.0.15", "ajv": "6.12.6", "chalk": "4.1.2", "cross-spawn": "7.0.6", "debug": "4.4.0", "escape-string-regexp": "4.0.0", "eslint-scope": "8.4.0", "eslint-visitor-keys": "4.2.1", "espree": "10.4.0", "esquery": "1.5.0", "esutils": "2.0.3", "fast-deep-equal": "3.1.3", "file-entry-cache": "8.0.0", "find-up": "5.0.0", "glob-parent": "6.0.2", "ignore": "5.3.2", "imurmurhash": "0.1.4", "is-glob": "4.0.3", "json-stable-stringify-without-jsonify": "1.0.1", "lodash.merge": "4.6.2", "minimatch": "3.1.2", "natural-compare": "1.4.0", "optionator": "0.9.3" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA=="], @@ -4916,6 +4940,8 @@ "hpack.js": ["hpack.js@2.1.6", "", { "dependencies": { "inherits": "2.0.4", "obuf": "1.1.2", "readable-stream": "2.3.8", "wbuf": "1.7.3" } }, "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ=="], + "html-encoding-sniffer": ["html-encoding-sniffer@3.0.0", "", { "dependencies": { "whatwg-encoding": "^2.0.0" } }, "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA=="], + "html-entities": ["html-entities@2.5.2", "", {}, "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA=="], "html-escaper": ["html-escaper@3.0.3", "", {}, "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="], @@ -5076,6 +5102,8 @@ "is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="], + "is-potential-custom-element-name": ["is-potential-custom-element-name@1.0.1", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="], + "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], "is-reference": ["is-reference@3.0.1", "", { "dependencies": { "@types/estree": "1.0.7" } }, "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w=="], @@ -5152,6 +5180,8 @@ "jsdoc": ["jsdoc@4.0.3", "", { "dependencies": { "@babel/parser": "7.24.1", "@jsdoc/salty": "0.2.8", "@types/markdown-it": "14.1.2", "bluebird": "3.7.2", "catharsis": "0.9.0", "escape-string-regexp": "2.0.0", "js2xmlparser": "4.0.2", "klaw": "3.0.0", "markdown-it": "14.1.0", "markdown-it-anchor": "8.6.7", "marked": "4.3.0", "mkdirp": "1.0.4", "requizzle": "0.2.4", "strip-json-comments": "3.1.1", "underscore": "1.13.7" }, "bin": { "jsdoc": "./jsdoc.js" } }, "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw=="], + "jsdom": ["jsdom@21.1.0", "", { "dependencies": { "abab": "^2.0.6", "acorn": "^8.8.1", "acorn-globals": "^7.0.0", "cssom": "^0.5.0", "cssstyle": "^2.3.0", "data-urls": "^3.0.2", "decimal.js": "^10.4.2", "domexception": "^4.0.0", "escodegen": "^2.0.0", "form-data": "^4.0.0", "html-encoding-sniffer": "^3.0.0", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.1", "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.2", "parse5": "^7.1.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^4.1.2", "w3c-xmlserializer": "^4.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0", "whatwg-url": "^11.0.0", "ws": "^8.11.0", "xml-name-validator": "^4.0.0" }, "peerDependencies": { "canvas": "^2.5.0" }, "optionalPeers": ["canvas"] }, "sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg=="], + "jsesc": ["jsesc@3.0.2", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="], "json-bigint": ["json-bigint@1.0.0", "", { "dependencies": { "bignumber.js": "9.1.1" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="], @@ -5570,6 +5600,8 @@ "null-loader": ["null-loader@4.0.1", "", { "dependencies": { "loader-utils": "2.0.2", "schema-utils": "3.3.0" }, "peerDependencies": { "webpack": "5.96.1" } }, "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg=="], + "nwsapi": ["nwsapi@2.2.22", "", {}, "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ=="], + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], @@ -5930,6 +5962,8 @@ "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], + "psl": ["psl@1.15.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w=="], + "pump": ["pump@3.0.0", "", { "dependencies": { "end-of-stream": "1.4.4", "once": "1.4.0" } }, "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww=="], "pumpify": ["pumpify@2.0.1", "", { "dependencies": { "duplexify": "4.1.3", "inherits": "2.0.4", "pump": "3.0.0" } }, "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw=="], @@ -6164,6 +6198,8 @@ "sax": ["sax@1.2.4", "", {}, "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="], + "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], + "scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], "schema-dts": ["schema-dts@1.1.5", "", {}, "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg=="], @@ -6302,6 +6338,8 @@ "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], + "stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="], + "stats-gl": ["stats-gl@2.4.2", "", { "peerDependencies": { "@types/three": "0.170.0", "three": "0.178.0" } }, "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ=="], "stats.js": ["stats.js@0.17.0", "", {}, "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw=="], @@ -6394,6 +6432,8 @@ "swc-loader": ["swc-loader@0.2.6", "", { "dependencies": { "@swc/counter": "0.1.3" }, "peerDependencies": { "@swc/core": "1.8.0", "webpack": "5.96.1" } }, "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg=="], + "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], + "tailwind-merge": ["tailwind-merge@2.5.2", "", {}, "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg=="], "tailwindcss": ["tailwindcss@4.1.10", "", {}, "sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA=="], @@ -6510,6 +6550,8 @@ "totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="], + "tough-cookie": ["tough-cookie@4.1.4", "", { "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", "universalify": "^0.2.0", "url-parse": "^1.5.3" } }, "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag=="], + "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "2.3.1" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], @@ -6738,6 +6780,8 @@ "vscode-textmate": ["vscode-textmate@5.2.0", "", {}, "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ=="], + "w3c-xmlserializer": ["w3c-xmlserializer@4.0.0", "", { "dependencies": { "xml-name-validator": "^4.0.0" } }, "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw=="], + "wait-port": ["wait-port@1.1.0", "", { "dependencies": { "chalk": "4.1.2", "commander": "9.5.0", "debug": "4.4.1" }, "bin": { "wait-port": "bin/wait-port.js" } }, "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q=="], "watchpack": ["watchpack@2.4.1", "", { "dependencies": { "glob-to-regexp": "0.4.1", "graceful-fs": "4.2.11" } }, "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg=="], @@ -6782,6 +6826,8 @@ "well-known-symbols": ["well-known-symbols@2.0.0", "", {}, "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q=="], + "whatwg-encoding": ["whatwg-encoding@2.0.0", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg=="], + "whatwg-mimetype": ["whatwg-mimetype@3.0.0", "", {}, "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="], "whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "4.7.0", "tr46": "1.0.1", "webidl-conversions": "4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], @@ -6820,6 +6866,10 @@ "xml-js": ["xml-js@1.6.11", "", { "dependencies": { "sax": "1.2.4" }, "bin": { "xml-js": "./bin/cli.js" } }, "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g=="], + "xml-name-validator": ["xml-name-validator@4.0.0", "", {}, "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="], + + "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], + "xmlcreate": ["xmlcreate@2.0.4", "", {}, "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg=="], "xmlhttprequest-ts": ["xmlhttprequest-ts@1.0.1", "", { "dependencies": { "tslib": "1.14.1" }, "peerDependencies": { "@angular/common": "19.2.9", "@angular/core": "19.2.9" } }, "sha512-x+7u8NpBcwfBCeGqUpdGrR6+kGUGVjKc4wolyCz7CQqBZQp7VIyaF1xAvJ7ApRzvLeuiC4BbmrA6CWH9NqxK/g=="], @@ -7206,6 +7256,8 @@ "@docusaurus/faster/@docusaurus/types": ["@docusaurus/types@3.8.1", "", { "dependencies": { "@mdx-js/mdx": "3.0.1", "@types/history": "4.7.11", "@types/react": "19.0.0", "commander": "5.1.0", "joi": "17.13.3", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "3.11.0", "webpack": "5.96.1", "webpack-merge": "5.10.0" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-ZPdW5AB+pBjiVrcLuw3dOS6BFlrG0XkS2lDGsj8TizcnREQg3J8cjsgfDviszOk4CweNfwo1AEELJkYaMUuOPg=="], + "@docusaurus/faster/@rspack/core": ["@rspack/core@1.3.15", "", { "dependencies": { "@module-federation/runtime-tools": "0.14.3", "@rspack/binding": "1.3.15", "@rspack/lite-tapable": "1.0.1" } }, "sha512-QuElIC8jXSKWAp0LSx18pmbhA7NiA5HGoVYesmai90UVxz98tud0KpMxTVCg+0lrLrnKZfCWN9kwjCxM5pGnrA=="], + "@docusaurus/faster/@swc/core": ["@swc/core@1.8.0", "", { "dependencies": { "@swc/counter": "0.1.3", "@swc/types": "0.1.14" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.8.0", "@swc/core-darwin-x64": "1.8.0", "@swc/core-linux-arm-gnueabihf": "1.8.0", "@swc/core-linux-arm64-gnu": "1.8.0", "@swc/core-linux-arm64-musl": "1.8.0", "@swc/core-linux-x64-gnu": "1.8.0", "@swc/core-linux-x64-musl": "1.8.0", "@swc/core-win32-arm64-msvc": "1.8.0", "@swc/core-win32-ia32-msvc": "1.8.0", "@swc/core-win32-x64-msvc": "1.8.0" } }, "sha512-EF8C5lp1RKMp3426tAKwQyVbg4Zcn/2FDax3cz8EcOXYQJM/ctB687IvBm9Ciej1wMcQ/dMRg+OB4Xl8BGLBoA=="], "@docusaurus/faster/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -7446,6 +7498,8 @@ "@modelcontextprotocol/sdk/zod-to-json-schema": ["zod-to-json-schema@3.24.3", "", { "peerDependencies": { "zod": "3.24.2" } }, "sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A=="], + "@module-federation/runtime-core/@module-federation/sdk": ["@module-federation/sdk@0.14.3", "", {}, "sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw=="], + "@next/eslint-plugin-next/fast-glob": ["fast-glob@3.3.1", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "@nodelib/fs.walk": "1.2.8", "glob-parent": "5.1.2", "merge2": "1.4.1", "micromatch": "4.0.8" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], "@npmcli/git/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], @@ -7670,8 +7724,6 @@ "@remotion/media/vitest": ["vitest@3.2.4", "", { "dependencies": { "@types/chai": "5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "5.3.3", "debug": "4.4.1", "expect-type": "1.2.2", "magic-string": "0.30.17", "pathe": "2.0.3", "picomatch": "4.0.2", "std-env": "3.9.0", "tinybench": "2.9.0", "tinyexec": "0.3.2", "tinyglobby": "0.2.14", "tinypool": "1.1.1", "tinyrainbow": "2.0.0", "vite": "5.4.20", "vite-node": "3.2.4", "why-is-node-running": "2.3.0" }, "peerDependencies": { "@vitest/browser": "3.2.4" }, "optionalPeers": ["@vitest/browser"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="], - "@remotion/promo-pages/bun-plugin-tailwind": ["bun-plugin-tailwind@0.0.15", "", { "peerDependencies": { "typescript": "5.8.2" } }, "sha512-qtAXMNGG4R0UGGI8zWrqm2B7BdXqx48vunJXBPzfDOHPA5WkRUZdTSbE7TFwO4jLhYqSE23YMWsM9NhE6ovobw=="], - "@remotion/promo-pages/hls.js": ["hls.js@1.5.19", "", {}, "sha512-C020dKWEJcyvLnrqsFKW4q6D/6IEzKWdhktIS5bgoyEFE8lHgrFBq4RIngdy113abJOlIruhv8qjg7UX8hwxOw=="], "@remotion/promo-pages/tailwindcss": ["tailwindcss@4.1.1", "", {}, "sha512-QNbdmeS979Efzim2g/bEvfuh+fTcIdp1y7gA+sb6OYSW74rt7Cr7M78AKdf6HqWT3d5AiTb7SwTT3sLQxr4/qw=="], @@ -7920,6 +7972,8 @@ "ast-types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "astro/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "astro/p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], "astro/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], @@ -7960,8 +8014,6 @@ "browserify-zlib/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], - "bun-plugin-tailwind/tailwindcss": ["tailwindcss@4.0.0-beta.9", "", {}, "sha512-96KpsfQi+/sFIOfyFnGzyy5pobuzf1iMBD9NVtelerPM/lPI2XUS4Kikw9yuKRniXXw77ov1sl7gCSKLsn6CJA=="], - "cacache/fs-minipass": ["fs-minipass@3.0.3", "", { "dependencies": { "minipass": "7.1.2" } }, "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="], "cacache/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], @@ -8042,12 +8094,14 @@ "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "1.2.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], + "cssstyle/cssom": ["cssom@0.3.8", "", {}, "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="], + + "data-urls/whatwg-url": ["whatwg-url@11.0.0", "", { "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" } }, "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ=="], + "defaults/clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="], "degenerator/ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="], - "degenerator/escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "4.0.1", "estraverse": "5.3.0", "esutils": "2.0.3" }, "optionalDependencies": { "source-map": "0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], - "detect-port/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], "docs/@docusaurus/types": ["@docusaurus/types@3.8.1", "", { "dependencies": { "@mdx-js/mdx": "3.0.1", "@types/history": "4.7.11", "@types/react": "19.0.0", "commander": "5.1.0", "joi": "17.13.3", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "3.11.0", "webpack": "5.96.1", "webpack-merge": "5.10.0" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-ZPdW5AB+pBjiVrcLuw3dOS6BFlrG0XkS2lDGsj8TizcnREQg3J8cjsgfDviszOk4CweNfwo1AEELJkYaMUuOPg=="], @@ -8076,10 +8130,6 @@ "esbuild-plugins-node-modules-polyfill/local-pkg": ["local-pkg@0.5.0", "", { "dependencies": { "mlly": "1.5.0", "pkg-types": "1.0.3" } }, "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg=="], - "escodegen/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], - - "escodegen/optionator": ["optionator@0.8.3", "", { "dependencies": { "deep-is": "0.1.4", "fast-levenshtein": "2.0.6", "levn": "0.3.0", "prelude-ls": "1.1.2", "type-check": "0.3.2", "word-wrap": "1.2.5" } }, "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA=="], - "escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], "eslint/@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "6.12.6", "debug": "4.4.0", "espree": "10.4.0", "globals": "14.0.0", "ignore": "5.3.2", "import-fresh": "3.3.0", "js-yaml": "4.1.0", "minimatch": "3.1.2", "strip-json-comments": "3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], @@ -8256,6 +8306,12 @@ "jsdoc/escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], + "jsdom/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6.0.2", "debug": "4.4.1" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + + "jsdom/whatwg-url": ["whatwg-url@11.0.0", "", { "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" } }, "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ=="], + + "jsdom/ws": ["ws@8.18.3", "", {}, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], + "jszip/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "1.0.3", "inherits": "2.0.4", "isarray": "1.0.0", "process-nextick-args": "2.0.1", "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], "lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "1.0.3", "inherits": "2.0.4", "isarray": "1.0.0", "process-nextick-args": "2.0.1", "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], @@ -8626,6 +8682,8 @@ "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + "protobufjs-cli/escodegen": ["escodegen@1.14.3", "", { "dependencies": { "esprima": "4.0.1", "estraverse": "4.3.0", "esutils": "2.0.3", "optionator": "0.8.3" }, "optionalDependencies": { "source-map": "0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw=="], + "protobufjs-cli/espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "8.14.0", "acorn-jsx": "5.3.2", "eslint-visitor-keys": "3.4.3" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], "protobufjs-cli/glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "1.0.0", "inflight": "1.0.6", "inherits": "2.0.4", "minimatch": "5.1.6", "once": "1.4.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="], @@ -8870,6 +8928,8 @@ "through2/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "1.0.3", "inherits": "2.0.4", "isarray": "1.0.0", "process-nextick-args": "2.0.1", "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + "tough-cookie/universalify": ["universalify@0.2.0", "", {}, "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="], + "ts-node/arg": ["arg@4.1.3", "", {}, "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="], "ts-node/diff": ["diff@4.0.2", "", {}, "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="], @@ -8878,6 +8938,8 @@ "tsutils/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + "tsx/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "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=="], @@ -8974,6 +9036,8 @@ "webpackbar/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "4.3.0", "string-width": "4.2.3", "strip-ansi": "6.0.1" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + "whatwg-encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": "2.1.2" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "whatwg-url/webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], @@ -9242,6 +9306,10 @@ "@docusaurus/faster/@docusaurus/types/react-helmet-async": ["@slorber/react-helmet-async@1.3.0", "", { "dependencies": { "@babel/runtime": "7.27.1", "invariant": "2.2.4", "prop-types": "15.8.1", "react-fast-compare": "3.2.2", "shallowequal": "1.1.0" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A=="], + "@docusaurus/faster/@rspack/core/@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.14.3", "", { "dependencies": { "@module-federation/runtime": "0.14.3", "@module-federation/webpack-bundler-runtime": "0.14.3" } }, "sha512-QBETX7iMYXdSa3JtqFlYU+YkpymxETZqyIIRiqg0gW+XGpH3jgU68yjrme2NBJp7URQi/CFZG8KWtfClk0Pjgw=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding": ["@rspack/binding@1.3.15", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.3.15", "@rspack/binding-darwin-x64": "1.3.15", "@rspack/binding-linux-arm64-gnu": "1.3.15", "@rspack/binding-linux-arm64-musl": "1.3.15", "@rspack/binding-linux-x64-gnu": "1.3.15", "@rspack/binding-linux-x64-musl": "1.3.15", "@rspack/binding-win32-arm64-msvc": "1.3.15", "@rspack/binding-win32-ia32-msvc": "1.3.15", "@rspack/binding-win32-x64-msvc": "1.3.15" } }, "sha512-utNPuJglLO5lW9XbwIqjB7+2ilMo6JkuVLTVdnNVKU94FW7asn9F/qV+d+MgjUVqU1QPCGm0NuGO9xhbgeJ7pg=="], + "@docusaurus/faster/@swc/core/@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.8.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TIus1/SE/Ud4g84hCnchcagu+LfyndSDy5r5qf64nflojejDidPU9Fp1InzQhQpEgIpntnZID/KFCP5rQnvsIw=="], "@docusaurus/faster/@swc/core/@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.8.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-yCb1FHCX/HUmNRGB1X3CFJ1WPKXMosZVUe3K2TrosCGvytwgaLoW5FS0bZg5Qv6cEUERQBg75cJnOUPwLLRCVg=="], @@ -9908,6 +9976,50 @@ "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "astro/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "astro/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "astro/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "astro/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "astro/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "astro/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "astro/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "astro/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "astro/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "astro/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "astro/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "astro/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "astro/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "astro/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "astro/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "astro/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "astro/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "astro/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "astro/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "astro/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "astro/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "astro/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "astro/p-limit/yocto-queue": ["yocto-queue@1.1.1", "", {}, "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g=="], "astro/sharp/detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], @@ -9966,9 +10078,9 @@ "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], - "degenerator/ast-types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "data-urls/whatwg-url/tr46": ["tr46@3.0.0", "", { "dependencies": { "punycode": "^2.1.1" } }, "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="], - "degenerator/escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "degenerator/ast-types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "docs/@docusaurus/types/@mdx-js/mdx": ["@mdx-js/mdx@3.0.1", "", { "dependencies": { "@types/estree": "1.0.7", "@types/estree-jsx": "1.0.0", "@types/hast": "3.0.4", "@types/mdx": "2.0.5", "collapse-white-space": "2.1.0", "devlop": "1.1.0", "estree-util-build-jsx": "3.0.1", "estree-util-is-identifier-name": "3.0.0", "estree-util-to-js": "2.0.0", "estree-walker": "3.0.3", "hast-util-to-estree": "3.1.0", "hast-util-to-jsx-runtime": "2.3.0", "markdown-extensions": "2.0.0", "periscopic": "3.1.0", "remark-mdx": "3.0.1", "remark-parse": "11.0.0", "remark-rehype": "11.1.1", "source-map": "0.7.3", "unified": "11.0.5", "unist-util-position-from-estree": "2.0.0", "unist-util-stringify-position": "4.0.0", "unist-util-visit": "5.0.0", "vfile": "6.0.3" } }, "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA=="], @@ -10026,12 +10138,6 @@ "esbuild-plugins-node-modules-polyfill/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.17.6", "", { "os": "win32", "cpu": "x64" }, "sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA=="], - "escodegen/optionator/levn": ["levn@0.3.0", "", { "dependencies": { "prelude-ls": "1.1.2", "type-check": "0.3.2" } }, "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA=="], - - "escodegen/optionator/prelude-ls": ["prelude-ls@1.1.2", "", {}, "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w=="], - - "escodegen/optionator/type-check": ["type-check@0.3.2", "", { "dependencies": { "prelude-ls": "1.1.2" } }, "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg=="], - "eslint-config-next/@typescript-eslint/eslint-plugin/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.12.2", "", { "dependencies": { "@typescript-eslint/types": "8.12.2", "@typescript-eslint/visitor-keys": "8.12.2" } }, "sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ=="], "eslint-config-next/@typescript-eslint/eslint-plugin/@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.12.2", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.12.2", "@typescript-eslint/utils": "8.12.2", "debug": "4.4.1", "ts-api-utils": "1.4.0" }, "peerDependencies": { "typescript": "5.8.2" }, "optionalPeers": ["typescript"] }, "sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ=="], @@ -10134,6 +10240,12 @@ "html-webpack-plugin/html-minifier-terser/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + "jsdom/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + + "jsdom/https-proxy-agent/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + + "jsdom/whatwg-url/tr46": ["tr46@3.0.0", "", { "dependencies": { "punycode": "^2.1.1" } }, "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="], + "jszip/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "jszip/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -10300,6 +10412,12 @@ "pkg-dir/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + "protobufjs-cli/escodegen/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], + + "protobufjs-cli/escodegen/optionator": ["optionator@0.8.3", "", { "dependencies": { "deep-is": "0.1.4", "fast-levenshtein": "2.0.6", "levn": "0.3.0", "prelude-ls": "1.1.2", "type-check": "0.3.2", "word-wrap": "1.2.5" } }, "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA=="], + + "protobufjs-cli/escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "protobufjs-cli/espree/acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], "protobufjs-cli/espree/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], @@ -10526,6 +10644,50 @@ "ts-unused-exports/tsconfig-paths/json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "1.2.6" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "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=="], @@ -10612,6 +10774,8 @@ "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + "vitefu/vite/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "vitefu/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=="], "vitest/vite/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="], @@ -10980,6 +11144,28 @@ "@docusaurus/faster/@docusaurus/types/@mdx-js/mdx/unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "3.0.2" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + "@docusaurus/faster/@rspack/core/@module-federation/runtime-tools/@module-federation/runtime": ["@module-federation/runtime@0.14.3", "", { "dependencies": { "@module-federation/error-codes": "0.14.3", "@module-federation/runtime-core": "0.14.3", "@module-federation/sdk": "0.14.3" } }, "sha512-7ZHpa3teUDVhraYdxQGkfGHzPbjna4LtwbpudgzAxSLLFxLDNanaxCuSeIgSM9c+8sVUNC9kvzUgJEZB0krPJw=="], + + "@docusaurus/faster/@rspack/core/@module-federation/runtime-tools/@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.14.3", "", { "dependencies": { "@module-federation/runtime": "0.14.3", "@module-federation/sdk": "0.14.3" } }, "sha512-hIyJFu34P7bY2NeMIUHAS/mYUHEY71VTAsN0A0AqEJFSVPszheopu9VdXq0VDLrP9KQfuXT8SDxeYeJXyj0mgA=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.3.15", "", { "os": "darwin", "cpu": "arm64" }, "sha512-f+DnVRENRdVe+ufpZeqTtWAUDSTnP48jVo7x9KWsXf8XyJHUi+eHKEPrFoy1HvL1/k5yJ3HVnFBh1Hb9cNIwSg=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.3.15", "", { "os": "darwin", "cpu": "x64" }, "sha512-TfUvEIBqYUT2OK01BYXb2MNcZeZIhAnJy/5aj0qV0uy4KlvwW63HYcKWa1sFd4Ac7bnGShDkanvP3YEuHOFOyg=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.3.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-D/YjYk9snKvYm1Elotq8/GsEipB4ZJWVv/V8cZ+ohhFNOPzygENi6JfyI06TryBTQiN0/JDZqt/S9RaWBWnMqw=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.3.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-lJbBsPMOiR0hYPCSM42yp7QiZjfo0ALtX7ws2wURpsQp3BMfRVAmXU3Ixpo2XCRtG1zj8crHaCmAWOJTS0smsA=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.3.15", "", { "os": "linux", "cpu": "x64" }, "sha512-qGB8ucHklrzNg6lsAS36VrBsCbOw0acgpQNqTE5cuHWrp1Pu3GFTRiFEogenxEmzoRbohMZt0Ev5grivrcgKBQ=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.3.15", "", { "os": "linux", "cpu": "x64" }, "sha512-qRn6e40fLQP+N2rQD8GAj/h4DakeTIho32VxTIaHRVuzw68ZD7VmKkwn55ssN370ejmey35ZdoNFNE12RBrMZA=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.3.15", "", { "os": "win32", "cpu": "arm64" }, "sha512-7uJ7dWhO1nWXJiCss6Rslz8hoAxAhFpwpbWja3eHgRb7O4NPHg6MWw63AQSI2aFVakreenfu9yXQqYfpVWJ2dA=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.3.15", "", { "os": "win32", "cpu": "ia32" }, "sha512-UsaWTYCjDiSCB0A0qETgZk4QvhwfG8gCrO4SJvA+QSEWOmgSai1YV70prFtLLIiyT9mDt1eU3tPWl1UWPRU/EQ=="], + + "@docusaurus/faster/@rspack/core/@rspack/binding/@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.3.15", "", { "os": "win32", "cpu": "x64" }, "sha512-ZnDIc9Es8EF94MirPDN+hOMt7tkb8nMEbRJFKLMmNd0ElNPgsql+1cY5SqyGRH1hsKB87KfSUQlhFiKZvzbfIg=="], + "@docusaurus/mdx-loader/@mdx-js/mdx/hast-util-to-estree/estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "1.0.7" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], "@docusaurus/mdx-loader/@mdx-js/mdx/hast-util-to-estree/hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "3.0.4" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], @@ -11746,6 +11932,12 @@ "pkg-dir/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "2.3.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "protobufjs-cli/escodegen/optionator/levn": ["levn@0.3.0", "", { "dependencies": { "prelude-ls": "1.1.2", "type-check": "0.3.2" } }, "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA=="], + + "protobufjs-cli/escodegen/optionator/prelude-ls": ["prelude-ls@1.1.2", "", {}, "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w=="], + + "protobufjs-cli/escodegen/optionator/type-check": ["type-check@0.3.2", "", { "dependencies": { "prelude-ls": "1.1.2" } }, "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg=="], + "protobufjs-cli/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "1.0.2" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], "react-router-config/react-router/path-to-regexp/isarray": ["isarray@0.0.1", "", {}, "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="], @@ -11896,6 +12088,50 @@ "update-notifier/boxen/wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + "vitefu/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "vitefu/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "vitefu/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "vitefu/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "vitefu/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "vitefu/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "vitefu/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "vitefu/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "vitefu/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "vitefu/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "vitefu/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "vitefu/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "vitefu/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "vitefu/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "vitefu/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "vitefu/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "vitefu/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "vitefu/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "vitefu/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "vitefu/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "vitefu/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "vitefu/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "vitest/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.18.20", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="], "vitest/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.20", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="], @@ -12018,6 +12254,10 @@ "@docusaurus/faster/@docusaurus/types/@mdx-js/mdx/unist-util-stringify-position/@types/unist": ["@types/unist@3.0.2", "", {}, "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="], + "@docusaurus/faster/@rspack/core/@module-federation/runtime-tools/@module-federation/runtime/@module-federation/sdk": ["@module-federation/sdk@0.14.3", "", {}, "sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw=="], + + "@docusaurus/faster/@rspack/core/@module-federation/runtime-tools/@module-federation/webpack-bundler-runtime/@module-federation/sdk": ["@module-federation/sdk@0.14.3", "", {}, "sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw=="], + "@docusaurus/mdx-loader/@mdx-js/mdx/hast-util-to-estree/mdast-util-mdx-expression/@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "2.0.6" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], "@docusaurus/mdx-loader/@mdx-js/mdx/hast-util-to-estree/mdast-util-mdxjs-esm/@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "2.0.6" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], diff --git a/packages/babel-loader/package.json b/packages/babel-loader/package.json index 78d0bee12eb..2e288741f6c 100644 --- a/packages/babel-loader/package.json +++ b/packages/babel-loader/package.json @@ -27,7 +27,7 @@ "@babel/preset-typescript": "7.23.2", "babel-loader": "8.2.2", "react-refresh": "0.9.0", - "webpack": "5.96.1" + "@rspack/core": "1.0.14" }, "devDependencies": { "@remotion/bundler": "workspace:*", diff --git a/packages/babel-loader/src/index.ts b/packages/babel-loader/src/index.ts index 0c2003562e4..1f3c06e1363 100644 --- a/packages/babel-loader/src/index.ts +++ b/packages/babel-loader/src/index.ts @@ -1,5 +1,5 @@ import type {WebpackConfiguration} from '@remotion/bundler'; -import type {RuleSetUseItem} from 'webpack'; +import type {RuleSetUseItem} from '@rspack/core'; const envPreset = [ require.resolve('@babel/preset-env'), diff --git a/packages/bundler/package.json b/packages/bundler/package.json index 31af4a2ff48..9d7dbe91c9b 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -26,7 +26,6 @@ "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "css-loader": "5.2.7", - "esbuild": "0.25.0", "react-refresh": "0.9.0", "remotion": "workspace:*", "@remotion/studio": "workspace:*", @@ -34,7 +33,8 @@ "@remotion/media-parser": "workspace:*", "style-loader": "4.0.0", "source-map": "0.7.3", - "webpack": "5.96.1" + "@rspack/core": "1.0.14", + "@rspack/plugin-react-refresh": "1.0.0" }, "peerDependencies": { "react": ">=16.8.0", @@ -51,7 +51,6 @@ "ffmpeg", "video", "react", - "webpack", "player" ], "publishConfig": { diff --git a/packages/bundler/src/bundle.ts b/packages/bundler/src/bundle.ts index 9bfb091f1f4..dca4026a967 100644 --- a/packages/bundler/src/bundle.ts +++ b/packages/bundler/src/bundle.ts @@ -1,18 +1,19 @@ import type {GitSource} from '@remotion/studio-shared'; import {getProjectName, SOURCE_MAP_ENDPOINT} from '@remotion/studio-shared'; +import type {Configuration, Stats} from '@rspack/core'; +import {rspack} from '@rspack/core'; import fs, {promises} from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import {promisify} from 'node:util'; import {isMainThread} from 'node:worker_threads'; -import webpack from 'webpack'; import {copyDir} from './copy-dir'; import {indexHtml} from './index-html'; import {readRecursively} from './read-recursively'; import type {WebpackOverrideFn} from './webpack-config'; import {webpackConfig} from './webpack-config'; -const promisified = promisify(webpack); +const promisified = promisify(rspack); const prepareOutDir = async (specified: string | null) => { if (specified) { @@ -44,7 +45,6 @@ const trimTrailingSlash = (p: string): string => { export type MandatoryLegacyBundleOptions = { webpackOverride: WebpackOverrideFn; outDir: string | null; - enableCaching: boolean; publicPath: string | null; rootDir: string | null; publicDir: string | null; @@ -70,7 +70,7 @@ export const getConfig = ({ maxTimelineTracks: number | null; onProgress?: (progress: number) => void; options?: LegacyBundleOptions; -}) => { +}): Promise => { return webpackConfig({ entry: path.join( require.resolve('@remotion/studio/renderEntry'), @@ -85,7 +85,6 @@ export const getConfig = ({ onProgress: (p) => { onProgress?.(p); }, - enableCaching: options?.enableCaching ?? true, maxTimelineTracks, remotionRoot: resolvedRemotionRoot, keyboardShortcutsEnabled: true, @@ -207,7 +206,7 @@ export const internalBundle = async ( } const {onProgress, ...options} = actualArgs; - const [, config] = await getConfig({ + const config = await getConfig({ outDir, entryPoint, resolvedRemotionRoot, @@ -228,7 +227,7 @@ export const internalBundle = async ( throw new Error('Expected webpack output'); } - const {errors} = output.toJson(); + const {errors} = (output as Stats).toJson(); if (errors !== undefined && errors.length > 0) { throw new Error(errors[0].message + '\n' + errors[0].details); } @@ -336,7 +335,6 @@ export async function bundle(...args: Arguments): Promise { const result = await internalBundle({ bufferStateDelayInMilliseconds: actualArgs.bufferStateDelayInMilliseconds ?? null, - enableCaching: actualArgs.enableCaching ?? true, entryPoint: actualArgs.entryPoint, gitSource: actualArgs.gitSource ?? null, ignoreRegisterRootWarning: actualArgs.ignoreRegisterRootWarning ?? false, diff --git a/packages/bundler/src/case-sensitive-paths.ts b/packages/bundler/src/case-sensitive-paths.ts index 427414005a6..b1dfbfb91f5 100644 --- a/packages/bundler/src/case-sensitive-paths.ts +++ b/packages/bundler/src/case-sensitive-paths.ts @@ -1,5 +1,5 @@ +import type {Compiler} from '@rspack/core'; import path from 'path'; -import type {Compiler, InputFileSystem} from 'webpack'; // Inlined from https://github.com/umijs/case-sensitive-paths-webpack-plugin/blob/master/src/index.ts @@ -74,7 +74,7 @@ export class CaseSensitivePathsPlugin { } else { // read directory for the first time deferrer = new Promise((resolve2) => { - (this.fs as InputFileSystem).readdir(dir, (_, files = []) => { + this.fs!.readdir(dir, (_, files = []) => { // save cache, resolve promise and release deferrer this.cacheMap.set(dir, files as string[]); resolve2(files as string[]); @@ -138,10 +138,13 @@ export class CaseSensitivePathsPlugin { const {createData = data as typeof data.createData} = data; if ( + createData && createData.resource && this.isCheckable( createData.resource, + // @ts-expect-error createData.type, + // @ts-expect-error createData.resourceResolveData?.context?.issuer, ) ) { diff --git a/packages/bundler/src/esbuild-loader/index.ts b/packages/bundler/src/esbuild-loader/index.ts deleted file mode 100644 index 4d4172cb695..00000000000 --- a/packages/bundler/src/esbuild-loader/index.ts +++ /dev/null @@ -1,73 +0,0 @@ -import {transform as defaultEsbuildTransform} from 'esbuild'; -import path from 'node:path'; -import type webpack from 'webpack'; -import type {LoaderOptions} from './interfaces'; - -const isTsExtensionPtrn = /\.ts$/i; - -const isTypescriptInstalled = () => { - try { - require.resolve('typescript'); - return true; - } catch { - return false; - } -}; - -async function ESBuildLoader( - this: webpack.LoaderContext, - source: string, -): Promise { - const done = this.async(); - const options: LoaderOptions = this.getOptions(); - const {implementation, remotionRoot, ...esbuildTransformOptions} = options; - - const tsConfigPath = path.join(remotionRoot, 'tsconfig.json'); - - if (implementation && typeof implementation.transform !== 'function') { - done( - new TypeError( - `esbuild-loader: options.implementation.transform must be an ESBuild transform function. Received ${typeof implementation.transform}`, - ), - ); - return; - } - - const transform = implementation?.transform ?? defaultEsbuildTransform; - - const transformOptions = { - ...esbuildTransformOptions, - target: options.target ?? 'es2015', - loader: options.loader ?? 'js', - sourcemap: this.sourceMap, - sourcefile: this.resourcePath, - }; - - if (!('tsconfigRaw' in transformOptions) && isTypescriptInstalled()) { - // eslint-disable-next-line @typescript-eslint/consistent-type-imports - const typescript = require('typescript') as typeof import('typescript'); - const tsConfig = typescript.readConfigFile( - tsConfigPath, - typescript.sys.readFile, - ); - - transformOptions.tsconfigRaw = tsConfig.config; - } - - // https://github.com/privatenumber/esbuild-loader/pull/107 - if ( - transformOptions.loader === 'tsx' && - isTsExtensionPtrn.test(this.resourcePath) - ) { - transformOptions.loader = 'ts'; - } - - try { - const {code, map} = await transform(source, transformOptions); - done(null, code, map && JSON.parse(map)); - } catch (error: unknown) { - done(error as Error); - } -} - -export default ESBuildLoader; diff --git a/packages/bundler/src/esbuild-loader/interfaces.ts b/packages/bundler/src/esbuild-loader/interfaces.ts deleted file mode 100644 index 2d29d39165a..00000000000 --- a/packages/bundler/src/esbuild-loader/interfaces.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type {transform, TransformOptions} from 'esbuild'; - -type Implementation = { - transform: typeof transform; -}; - -type Except = { - [Key in keyof ObjectType as Key extends Properties - ? never - : Key]: ObjectType[Key]; -}; - -export type LoaderOptions = Except< - TransformOptions, - 'sourcemap' | 'sourcefile' -> & { - implementation: Implementation; - remotionRoot: string; -}; diff --git a/packages/bundler/src/fast-refresh/helpers.ts b/packages/bundler/src/fast-refresh/helpers.ts deleted file mode 100644 index 5e6aa098e50..00000000000 --- a/packages/bundler/src/fast-refresh/helpers.ts +++ /dev/null @@ -1,180 +0,0 @@ -/** - * Source code is adapted from https://github.com/WebHotelier/webpack-fast-refresh#readme and rewritten in Typescript. This file is MIT licensed. - */ -/** - * MIT License - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// This file is copied from the Metro JavaScript bundler, with minor tweaks for -// webpack compatibility. -// -// https://github.com/facebook/metro/blob/d6b9685c730d0d63577db40f41369157f28dfa3a/packages/metro/src/lib/polyfills/require.js - -const RefreshRuntime = require('react-refresh/runtime'); - -function isSafeExport(key: string) { - return ( - key === '__esModule' || - key === '__N_SSG' || - key === '__N_SSP' || - key === 'config' - ); -} - -function registerExportsForReactRefresh( - moduleExports: unknown, - moduleID: unknown, -) { - RefreshRuntime.register(moduleExports, moduleID + ' %exports%'); - if ( - moduleExports === null || - moduleExports === undefined || - typeof moduleExports !== 'object' - ) { - // Exit if we can't iterate over exports. - // (This is important for legacy environments.) - return; - } - - for (const key in moduleExports) { - if (isSafeExport(key)) { - continue; - } - - // @ts-expect-error - const exportValue = moduleExports[key]; - const typeID = moduleID + ' %exports% ' + key; - RefreshRuntime.register(exportValue, typeID); - } -} - -function isReactRefreshBoundary(moduleExports: unknown) { - if (RefreshRuntime.isLikelyComponentType(moduleExports)) { - return true; - } - - if ( - moduleExports === null || - moduleExports === undefined || - typeof moduleExports !== 'object' - ) { - // Exit if we can't iterate over exports. - return false; - } - - let hasExports = false; - let areAllExportsComponents = true; - for (const key in moduleExports) { - hasExports = true; - if (isSafeExport(key)) { - continue; - } - - // @ts-expect-error - const exportValue = moduleExports[key]; - if (!RefreshRuntime.isLikelyComponentType(exportValue)) { - areAllExportsComponents = false; - } - } - - return hasExports && areAllExportsComponents; -} - -function getRefreshBoundarySignature(moduleExports: unknown) { - const signature = []; - signature.push(RefreshRuntime.getFamilyByType(moduleExports)); - if ( - moduleExports === null || - moduleExports === undefined || - typeof moduleExports !== 'object' - ) { - // Exit if we can't iterate over exports. - // (This is important for legacy environments.) - return signature; - } - - for (const key in moduleExports) { - if (isSafeExport(key)) { - continue; - } - - // @ts-expect-error - const exportValue = moduleExports[key]; - signature.push(key); - signature.push(RefreshRuntime.getFamilyByType(exportValue)); - } - - return signature; -} - -function shouldInvalidateReactRefreshBoundary( - prevExports: unknown, - nextExports: unknown, -) { - const prevSignature = getRefreshBoundarySignature(prevExports); - const nextSignature = getRefreshBoundarySignature(nextExports); - if (prevSignature.length !== nextSignature.length) { - return true; - } - - for (let i = 0; i < nextSignature.length; i++) { - if (prevSignature[i] !== nextSignature[i]) { - return true; - } - } - - return false; -} - -function scheduleUpdate() { - const execute = () => { - try { - RefreshRuntime.performReactRefresh(); - } catch (err) { - // eslint-disable-next-line no-console - console.warn( - 'Warning: Failed to re-render. We will retry on the next Fast Refresh event.\n' + - err, - ); - } - }; - - // Only trigger refresh if the webpack HMR state is idle - if (__webpack_module__.hot?.status() === 'idle') { - return; - } - - __webpack_module__.hot?.addStatusHandler((status) => { - if (status === 'idle') { - execute(); - } - }); -} - -export default { - registerExportsForReactRefresh, - isReactRefreshBoundary, - shouldInvalidateReactRefreshBoundary, - getRefreshBoundarySignature, - scheduleUpdate, -}; diff --git a/packages/bundler/src/fast-refresh/index.ts b/packages/bundler/src/fast-refresh/index.ts deleted file mode 100644 index d54c383d87e..00000000000 --- a/packages/bundler/src/fast-refresh/index.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * Source code is adapted from https://github.com/WebHotelier/webpack-fast-refresh#readme and rewritten in Typescript. This file is MIT licensed. - */ - -/** - * The MIT License (MIT) - * - * Copyright (c) 2020 Vercel, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// This file is copied from the @vercel/next.js, with removed TS annotations -// minor tweaks, and removed all webpack v4-related functionality -// -// https://github.com/vercel/next.js/blob/canary/packages/react-refresh-utils/ReactRefreshWebpackPlugin.ts - -import type webpack from 'webpack'; -import type {Compilation} from 'webpack'; -import {RuntimeGlobals, RuntimeModule, Template, version} from 'webpack'; - -class ReactRefreshRuntimeModule extends RuntimeModule { - constructor() { - super('react refresh', 5); - } - - generate() { - const {runtimeTemplate} = this.compilation as Compilation; - return Template.asString([ - `${ - RuntimeGlobals.interceptModuleExecution - }.push(${runtimeTemplate.basicFunction('options', [ - `const originalFactory = options.factory;`, - `options.factory = ${runtimeTemplate.basicFunction( - 'moduleObject, moduleExports, webpackRequire', - [ - // Legacy CSS implementations will `eval` browser code in a Node.js - // context to extract CSS. For backwards compatibility, we need to check - // we're in a browser context before continuing. - `const hasRefresh = typeof self !== "undefined" && !!self.$RefreshInterceptModuleExecution$;`, - `const cleanup = hasRefresh ? self.$RefreshInterceptModuleExecution$(moduleObject.id) : () => {};`, - 'try {', - Template.indent( - 'originalFactory.call(this, moduleObject, moduleExports, webpackRequire);', - ), - '} finally {', - Template.indent(`cleanup();`), - '}', - ], - )}`, - ])})`, - ]); - } -} - -export class ReactFreshWebpackPlugin { - apply(compiler: webpack.Compiler) { - const webpackMajorVersion = parseInt(version ?? '', 10); - - if (webpackMajorVersion < 5) { - throw new Error( - `ReactFreshWebpackPlugin does not support webpack v${webpackMajorVersion}.`, - ); - } - - compiler.hooks.compilation.tap(this.constructor.name, (compilation) => { - compilation.mainTemplate.hooks.localVars.tap( - this.constructor.name, - (source) => - Template.asString([ - source, - '', - '// noop fns to prevent runtime errors during initialization', - 'if (typeof self !== "undefined") {', - Template.indent('self.$RefreshReg$ = function () {};'), - Template.indent('self.$RefreshSig$ = function () {'), - Template.indent(Template.indent('return function (type) {')), - Template.indent(Template.indent(Template.indent('return type;'))), - Template.indent(Template.indent('};')), - Template.indent('};'), - '}', - ]), - ); - - compilation.hooks.additionalTreeRuntimeRequirements.tap( - this.constructor.name, - (chunk) => { - compilation.addRuntimeModule(chunk, new ReactRefreshRuntimeModule()); - }, - ); - }); - } -} diff --git a/packages/bundler/src/fast-refresh/loader.ts b/packages/bundler/src/fast-refresh/loader.ts deleted file mode 100644 index 64d662e6c62..00000000000 --- a/packages/bundler/src/fast-refresh/loader.ts +++ /dev/null @@ -1,235 +0,0 @@ -/** - * ⚠️ Be careful when refactoring this file! - * This gets injected into every file of the browser. - * You cannot have returns, optional chains, inverse the if statement etc. - * Check the Typescript output in dist/ to see that no extra `var` statements were produced - */ - -/** - * Source code is adapted from https://github.com/WebHotelier/webpack-fast-refresh#readme and rewritten in Typescript. This file is MIT licensed. - */ - -/** - * The MIT License (MIT) - * - * Copyright (c) 2020 Vercel, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -import type {LoaderDefinition} from 'webpack'; - -declare global { - const __webpack_hash__: unknown; - - interface HotNotifierInfo { - type: - | 'self-declined' - | 'declined' - | 'unaccepted' - | 'accepted' - | 'disposed' - | 'accept-errored' - | 'self-accept-errored' - | 'self-accept-error-handler-errored'; - /** - * The module in question. - */ - moduleId: number; - /** - * For errors: the module id owning the accept handler. - */ - dependencyId?: number | undefined; - /** - * For declined/accepted/unaccepted: the chain from where the update was propagated. - */ - chain?: number[] | undefined; - /** - * For declined: the module id of the declining parent - */ - parentId?: number | undefined; - /** - * For accepted: the modules that are outdated and will be disposed - */ - outdatedModules?: number[] | undefined; - /** - * For accepted: The location of accept handlers that will handle the update - */ - outdatedDependencies?: - | { - [dependencyId: number]: number[]; - } - | undefined; - /** - * For errors: the thrown error - */ - error?: Error | undefined; - /** - * For self-accept-error-handler-errored: the error thrown by the module - * before the error handler tried to handle it. - */ - originalError?: Error | undefined; - } - - interface AcceptOptions { - /** - * If true the update process continues even if some modules are not accepted (and would bubble to the entry point). - */ - ignoreUnaccepted?: boolean | undefined; - /** - * Ignore changes made to declined modules. - */ - ignoreDeclined?: boolean | undefined; - /** - * Ignore errors throw in accept handlers, error handlers and while reevaluating module. - */ - ignoreErrored?: boolean | undefined; - /** - * Notifier for declined modules. - */ - onDeclined?: ((info: HotNotifierInfo) => void) | undefined; - /** - * Notifier for unaccepted modules. - */ - onUnaccepted?: ((info: HotNotifierInfo) => void) | undefined; - /** - * Notifier for accepted modules. - */ - onAccepted?: ((info: HotNotifierInfo) => void) | undefined; - /** - * Notifier for disposed modules. - */ - onDisposed?: ((info: HotNotifierInfo) => void) | undefined; - /** - * Notifier for errors. - */ - onErrored?: ((info: HotNotifierInfo) => void) | undefined; - /** - * Indicates that apply() is automatically called by check function - */ - autoApply?: boolean | undefined; - } - const __webpack_module__: { - id: string; - exports: unknown; - hot: { - accept: () => void; - dispose: (onDispose: (data: Record) => void) => void; - invalidate: () => void; - data?: Record; - addStatusHandler(callback: (status: string) => void): void; - status(): string; - apply(options?: AcceptOptions): Promise; - check(autoApply?: boolean): Promise; - }; - }; - type ModuleId = string | number; -} - -// This file is copied from the @vercel/next.js, with removed TS annotations -// -// https://github.com/vercel/next.js/blob/canary/packages/react-refresh-utils/loader.ts - -// This function gets unwrapped into global scope, which is why we don't invert -// if-blocks. Also, you cannot use `return`. -function RefreshModuleRuntime() { - // Legacy CSS implementations will `eval` browser code in a Node.js context - // to extract CSS. For backwards compatibility, we need to check we're in a - // browser context before continuing. - if ( - typeof self !== 'undefined' && - // AMP / No-JS mode does not inject these helpers: - '$RefreshHelpers$' in self - ) { - const currentExports = __webpack_module__.exports; - const prevExports = __webpack_module__.hot.data?.prevExports ?? null; - - // This cannot happen in MainTemplate because the exports mismatch between - // templating and execution. - self.$RefreshHelpers$.registerExportsForReactRefresh( - currentExports, - __webpack_module__.id, - ); - - // A module can be accepted automatically based on its exports, e.g. when - // it is a Refresh Boundary. - if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) { - // Save the previous exports on update so we can compare the boundary - // signatures. - __webpack_module__.hot.dispose((data) => { - data.prevExports = currentExports; - }); - // Unconditionally accept an update to this module, we'll check if it's - // still a Refresh Boundary later. - __webpack_module__.hot.accept(); - - // This field is set when the previous version of this module was a - // Refresh Boundary, letting us know we need to check for invalidation or - // enqueue an update. - if (prevExports !== null) { - // A boundary can become ineligible if its exports are incompatible - // with the previous exports. - // - // For example, if you add/remove/change exports, we'll want to - // re-execute the importing modules, and force those components to - // re-render. Similarly, if you convert a class component to a - // function, we want to invalidate the boundary. - if ( - self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary( - prevExports, - currentExports, - ) - ) { - __webpack_module__.hot.invalidate(); - } else { - self.$RefreshHelpers$.scheduleUpdate(); - } - } - } else { - // Since we just executed the code for the module, it's possible that the - // new exports made it ineligible for being a boundary. - // We only care about the case when we were _previously_ a boundary, - // because we already accepted this update (accidental side effect). - const isNoLongerABoundary = prevExports !== null; - if (isNoLongerABoundary) { - __webpack_module__.hot.invalidate(); - } - } - } -} - -let refreshModuleRuntime = RefreshModuleRuntime.toString(); -refreshModuleRuntime = refreshModuleRuntime.slice( - refreshModuleRuntime.indexOf('{') + 1, - refreshModuleRuntime.lastIndexOf('}'), -); - -const ReactRefreshLoader: LoaderDefinition = function (source, inputSourceMap) { - // Importing a module that declares the global variables _a and _b - // will conflict with the global variables that React Fast Refresh uses. - - // https://github.com/remotion-dev/remotion/issues/3699 - const renamedSymbols = refreshModuleRuntime - .replace(/_a/g, '_remotion_globalVariableA') - .replace(/_b/g, '_remotion_globalVariableB'); - - this.callback(null, `${source}\n;${renamedSymbols}`, inputSourceMap); -}; - -export default ReactRefreshLoader; diff --git a/packages/bundler/src/fast-refresh/runtime.ts b/packages/bundler/src/fast-refresh/runtime.ts deleted file mode 100644 index 77dc139cd9e..00000000000 --- a/packages/bundler/src/fast-refresh/runtime.ts +++ /dev/null @@ -1,73 +0,0 @@ -/// -/// -/** - * Source code is adapted from https://github.com/WebHotelier/webpack-fast-refresh#readme and rewritten in Typescript. This file is MIT licensed. - */ - -/** - * The MIT License (MIT) - * - * Copyright (c) 2020 Vercel, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// This file is copied from the @vercel/next.js, with removed TS annotations -// -// https://github.com/vercel/next.js/blob/canary/packages/react-refresh-utils/runtime.ts - -declare global { - interface Window { - $RefreshReg$: (type: string, id?: string) => void; - $RefreshSig$: () => (type: string) => unknown; - $RefreshHelpers$: typeof RefreshHelpers; - $RefreshInterceptModuleExecution$: (webpackId: unknown) => () => void; - } -} - -const RefreshRuntime = require('react-refresh/runtime'); -import RefreshHelpers from './helpers'; - -// Hook into ReactDOM initialization -RefreshRuntime.injectIntoGlobalHook(self); - -// noop fns to prevent runtime errors during initialization -self.$RefreshReg$ = () => undefined; -self.$RefreshSig$ = () => (type: unknown) => type; - -// Register global helpers -self.$RefreshHelpers$ = RefreshHelpers; - -// Register a helper for module execution interception -self.$RefreshInterceptModuleExecution$ = function (webpackModuleId: unknown) { - const prevRefreshReg = self.$RefreshReg$; - const prevRefreshSig = self.$RefreshSig$; - - self.$RefreshReg$ = (type, id) => { - RefreshRuntime.register(type, webpackModuleId + ' ' + id); - }; - - self.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; - - // Modeled after `useEffect` cleanup pattern: - return () => { - self.$RefreshReg$ = prevRefreshReg; - self.$RefreshSig$ = prevRefreshSig; - }; -}; diff --git a/packages/bundler/src/hide-expression-dependency.ts b/packages/bundler/src/hide-expression-dependency.ts deleted file mode 100644 index 26c9ce26e10..00000000000 --- a/packages/bundler/src/hide-expression-dependency.ts +++ /dev/null @@ -1,31 +0,0 @@ -// When Webpack cannot resolve these dependencies, it will not print an error message. - -import type {Compiler} from 'webpack'; - -// If importing TypeScript, it will give this warning: -// WARNING in ./node_modules/typescript/lib/typescript.js 6304:33-52 -// Critical dependency: the request of a dependency is an expression -export class AllowDependencyExpressionPlugin { - filter(error: Error) { - if ( - error.message.includes('the request of a dependency is an expression') - ) { - return false; - } - - return true; - } - - apply(compiler: Compiler) { - compiler.hooks.afterCompile.tap('Com', (compilation) => { - compilation.errors = compilation.errors.filter(this.filter); - }); - compiler.hooks.afterEmit.tap( - 'AllowOptionalDependenciesPlugin', - (compilation) => { - compilation.errors = compilation.errors.filter(this.filter); - compilation.warnings = compilation.warnings.filter(this.filter); - }, - ); - } -} diff --git a/packages/bundler/src/index.ts b/packages/bundler/src/index.ts index e9e7286d870..3657e0655e0 100644 --- a/packages/bundler/src/index.ts +++ b/packages/bundler/src/index.ts @@ -1,17 +1,12 @@ import {findClosestFolderWithItem, getConfig, internalBundle} from './bundle'; import {indexHtml} from './index-html'; import {readRecursively} from './read-recursively'; -import {cacheExists, clearCache} from './webpack-cache'; import {webpackConfig} from './webpack-config'; -import esbuild = require('esbuild'); -import webpack = require('webpack'); +import webpack = require('@rspack/core'); export const BundlerInternals = { - esbuild, webpackConfig, indexHtml, - cacheExists, - clearCache, getConfig, readRecursively, findClosestFolderWithItem, diff --git a/packages/bundler/src/optional-dependencies.ts b/packages/bundler/src/optional-dependencies.ts index 804e07d9e36..1d91e6cea25 100644 --- a/packages/bundler/src/optional-dependencies.ts +++ b/packages/bundler/src/optional-dependencies.ts @@ -1,46 +1,10 @@ // When Webpack cannot resolve these dependencies, it will not print an error message. -import type {Compiler} from 'webpack'; - -const OPTIONAL_DEPENDENCIES = [ +export const OPTIONAL_DEPENDENCIES = [ 'zod', '@remotion/zod-types', 'react-native-reanimated', 'react-native-reanimated/package.json', ]; -const SOURCE_MAP_IGNORE = ['path', 'fs']; - -export class AllowOptionalDependenciesPlugin { - filter(error: Error) { - for (const dependency of OPTIONAL_DEPENDENCIES) { - if (error.message.includes(`Can't resolve '${dependency}'`)) { - return false; - } - } - - for (const dependency of SOURCE_MAP_IGNORE) { - if ( - error.message.includes(`Can't resolve '${dependency}'`) && - error.message.includes('source-map') - ) { - return false; - } - } - - return true; - } - - apply(compiler: Compiler) { - compiler.hooks.afterCompile.tap('Com', (compilation) => { - compilation.errors = compilation.errors.filter(this.filter); - }); - compiler.hooks.afterEmit.tap( - 'AllowOptionalDependenciesPlugin', - (compilation) => { - compilation.errors = compilation.errors.filter(this.filter); - compilation.warnings = compilation.warnings.filter(this.filter); - }, - ); - } -} +export const SOURCE_MAP_IGNORE = ['path', 'fs']; diff --git a/packages/bundler/src/webpack-cache.ts b/packages/bundler/src/webpack-cache.ts deleted file mode 100644 index b1fc199baf3..00000000000 --- a/packages/bundler/src/webpack-cache.ts +++ /dev/null @@ -1,128 +0,0 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import {VERSION} from 'remotion/version'; - -type Environment = 'development' | 'production'; - -type CacheState = 'exists' | 'other-exists' | 'does-not-exist'; - -declare global { - namespace NodeJS { - interface ProcessVersions { - pnp?: string; - } - } -} - -// Inlined from https://github.com/webpack/webpack/blob/4c2ee7a4ddb8db2362ca83b6c4190523387ba7ee/lib/config/defaults.js#L265 -// An algorithm to determine where Webpack will cache the depencies -const getWebpackCacheDir = (remotionRoot: string) => { - let dir: string | undefined = remotionRoot; - for (;;) { - try { - if (fs.statSync(path.join(dir, 'package.json')).isFile()) { - break; - } - } catch {} - - const parent = path.dirname(dir); - if (dir === parent) { - dir = undefined; - break; - } - - dir = parent; - } - - if (!dir) { - return path.resolve(remotionRoot, '.cache/webpack'); - } - - if (process.versions.pnp === '1') { - return path.resolve(dir, '.pnp/.cache/webpack'); - } - - if (process.versions.pnp === '3') { - return path.resolve(dir, '.yarn/.cache/webpack'); - } - - return path.resolve(dir, 'node_modules/.cache/webpack'); -}; - -const getPrefix = (environment: Environment) => { - return `remotion-${environment}-${VERSION}`; -}; - -export const getWebpackCacheEnvDir = (environment: Environment) => { - return getPrefix(environment); -}; - -export const getWebpackCacheName = (environment: Environment, hash: string) => { - return [getWebpackCacheEnvDir(environment), hash].join(path.sep); -}; - -const remotionCacheLocationForEnv = ( - remotionRoot: string, - environment: Environment, -) => { - return path.join( - getWebpackCacheDir(remotionRoot), - getWebpackCacheEnvDir(environment), - ); -}; - -const remotionCacheLocation = ( - remotionRoot: string, - environment: Environment, - hash: string, -) => { - return path.join( - getWebpackCacheDir(remotionRoot), - getWebpackCacheName(environment, hash), - ); -}; - -export const clearCache = (remotionRoot: string, env: Environment) => { - return fs.promises.rm(remotionCacheLocationForEnv(remotionRoot, env), { - recursive: true, - }); -}; - -const hasOtherCache = ({ - remotionRoot, - environment, -}: { - remotionRoot: string; - environment: Environment; -}) => { - const cacheDir = fs.readdirSync(getWebpackCacheDir(remotionRoot)); - if ( - cacheDir.find((c) => { - return c.startsWith(getPrefix(environment)); - }) - ) { - return true; - } - - return false; -}; - -export const cacheExists = ( - remotionRoot: string, - environment: Environment, - hash: string, -): CacheState => { - if (fs.existsSync(remotionCacheLocation(remotionRoot, environment, hash))) { - return 'exists'; - } - - if (!fs.existsSync(getWebpackCacheDir(remotionRoot))) { - return 'does-not-exist'; - } - - if (hasOtherCache({remotionRoot, environment})) { - return 'other-exists'; - } - - return 'does-not-exist'; -}; diff --git a/packages/bundler/src/webpack-config.ts b/packages/bundler/src/webpack-config.ts index 96c43767bb8..3c07984e0c6 100644 --- a/packages/bundler/src/webpack-config.ts +++ b/packages/bundler/src/webpack-config.ts @@ -1,18 +1,14 @@ -import {createHash} from 'node:crypto'; +import type {Configuration} from '@rspack/core'; +import webpack, {ProgressPlugin} from '@rspack/core'; +import ReactRefreshPlugin from '@rspack/plugin-react-refresh'; import path from 'node:path'; import ReactDOM from 'react-dom'; import {NoReactInternals} from 'remotion/no-react'; -import type {Configuration} from 'webpack'; -import webpack, {ProgressPlugin} from 'webpack'; import {CaseSensitivePathsPlugin} from './case-sensitive-paths'; -import type {LoaderOptions} from './esbuild-loader/interfaces'; -import {ReactFreshWebpackPlugin} from './fast-refresh'; -import {AllowDependencyExpressionPlugin} from './hide-expression-dependency'; -import {IgnorePackFileCacheWarningsPlugin} from './ignore-packfilecache-warnings'; -import {AllowOptionalDependenciesPlugin} from './optional-dependencies'; -import {jsonStringifyWithCircularReferences} from './stringify-with-circular-references'; -import {getWebpackCacheName} from './webpack-cache'; -import esbuild = require('esbuild'); +import { + OPTIONAL_DEPENDENCIES, + SOURCE_MAP_IGNORE, +} from './optional-dependencies'; export type WebpackConfiguration = Configuration; export type WebpackOverrideFn = ( @@ -40,6 +36,26 @@ function truthy(value: T): value is Truthy { return Boolean(value); } +const options = (environment: 'development' | 'production') => ({ + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + }, + transform: { + react: { + runtime: 'automatic', + development: environment === 'development', + refresh: environment === 'development', + }, + }, + externalHelpers: true, + }, + env: { + targets: 'Chrome >= 85', // browser compatibility + }, +}); + export const webpackConfig = async ({ entry, userDefinedComponent, @@ -47,7 +63,6 @@ export const webpackConfig = async ({ environment, webpackOverride = (f) => f, onProgress, - enableCaching = true, maxTimelineTracks, remotionRoot, keyboardShortcutsEnabled, @@ -60,20 +75,12 @@ export const webpackConfig = async ({ environment: 'development' | 'production'; webpackOverride: WebpackOverrideFn; onProgress?: (f: number) => void; - enableCaching?: boolean; maxTimelineTracks: number | null; keyboardShortcutsEnabled: boolean; bufferStateDelayInMilliseconds: number | null; remotionRoot: string; poll: number | null; -}): Promise<[string, WebpackConfiguration]> => { - const esbuildLoaderOptions: LoaderOptions = { - target: 'chrome85', - loader: 'tsx', - implementation: esbuild, - remotionRoot, - }; - +}): Promise => { let lastProgress = 0; const isBun = typeof Bun !== 'undefined'; @@ -107,12 +114,6 @@ export const webpackConfig = async ({ devtool: environment === 'development' ? 'source-map' : 'cheap-module-source-map', entry: [ - // Fast Refresh must come first, - // because setup-environment imports ReactDOM. - // If React DOM is imported before Fast Refresh, Fast Refresh does not work - environment === 'development' - ? require.resolve('./fast-refresh/runtime.js') - : null, require.resolve('./setup-environment'), userDefinedComponent, require.resolve('../react-shim.js'), @@ -122,13 +123,10 @@ export const webpackConfig = async ({ plugins: environment === 'development' ? [ - new ReactFreshWebpackPlugin(), + new ReactRefreshPlugin(), new CaseSensitivePathsPlugin(), new webpack.HotModuleReplacementPlugin(), define, - new AllowOptionalDependenciesPlugin(), - new AllowDependencyExpressionPlugin(), - new IgnorePackFileCacheWarningsPlugin(), ] : [ new ProgressPlugin((p) => { @@ -140,9 +138,6 @@ export const webpackConfig = async ({ } }), define, - new AllowOptionalDependenciesPlugin(), - new AllowDependencyExpressionPlugin(), - new IgnorePackFileCacheWarningsPlugin(), ], output: { hashFunction: 'xxhash64', @@ -202,15 +197,9 @@ export const webpackConfig = async ({ test: /\.tsx?$/, use: [ { - loader: require.resolve('./esbuild-loader/index.js'), - options: esbuildLoaderOptions, + loader: 'builtin:swc-loader', + options: options(environment), }, - // Keep the order to match babel-loader - environment === 'development' - ? { - loader: require.resolve('./fast-refresh/loader.js'), - } - : null, ].filter(truthy), }, { @@ -222,38 +211,34 @@ export const webpackConfig = async ({ exclude: /node_modules/, use: [ { - loader: require.resolve('./esbuild-loader/index.js'), - options: esbuildLoaderOptions, + loader: 'builtin:swc-loader', + options: options(environment), }, - environment === 'development' - ? { - loader: require.resolve('./fast-refresh/loader.js'), - } - : null, ].filter(truthy), }, ], }, + ignoreWarnings: [ + ...OPTIONAL_DEPENDENCIES.map( + (dep) => new RegExp(`Can't resolve '${dep}'`), + ), + ...SOURCE_MAP_IGNORE.map((dep) => { + return (warning: Error) => + warning.message.includes(`Can't resolve '${dep}'`) && + warning.message.includes('source-map'); + }), + // If importing TypeScript, it will give this warning: + // WARNING in ./node_modules/typescript/lib/typescript.js 6304:33-52 + // Critical dependency: the request of a dependency is an expression + /the request of a dependency is an expression/, + ], }); - const hash = createHash('md5') - .update(jsonStringifyWithCircularReferences(conf)) - .digest('hex'); - return [ - hash, - { - ...conf, - cache: enableCaching - ? { - type: 'filesystem', - name: getWebpackCacheName(environment, hash), - version: hash, - } - : false, - output: { - ...conf.output, - ...(outDir ? {path: outDir} : {}), - }, - context: remotionRoot, + return { + ...conf, + output: { + ...conf.output, + ...(outDir ? {path: outDir} : {}), }, - ]; + context: remotionRoot, + }; }; diff --git a/packages/cli/package.json b/packages/cli/package.json index 336dd49cfbd..d4c27421eb9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -46,7 +46,8 @@ "dotenv": "9.0.2", "minimist": "1.2.6", "prompts": "2.4.2", - "remotion": "workspace:*" + "remotion": "workspace:*", + "esbuild": "0.18.6" }, "peerDependencies": { "react": ">=16.8.0", diff --git a/packages/cli/src/config/index.ts b/packages/cli/src/config/index.ts index ec01ec4354e..5973a2b86bc 100644 --- a/packages/cli/src/config/index.ts +++ b/packages/cli/src/config/index.ts @@ -27,7 +27,6 @@ import { } from './preview-server'; import {getProResProfile} from './prores-profile'; import {getStillFrame, setStillFrame} from './still-frame'; -import {getWebpackCaching} from './webpack-caching'; import type {WebpackConfiguration} from '@remotion/bundler'; import type { @@ -80,7 +79,6 @@ import {setPixelFormat} from './pixel-format'; import {setPort, setRendererPort, setStudioPort} from './preview-server'; import {setProResProfile} from './prores-profile'; import {getChromiumUserAgent, setChromiumUserAgent} from './user-agent'; -import {setWebpackCaching} from './webpack-caching'; import { getWebpackPolling, setWebpackPollingInMilliseconds, @@ -137,11 +135,6 @@ declare global { */ readonly setEntryPoint: (src: string) => void; - /** - * Whether Webpack bundles should be cached to make - * subsequent renders faster. Default: true - */ - readonly setCachingEnabled: (flag: boolean) => void; /** * @deprecated * Use `setStudioPort()` and `setRendererPort()` instead. @@ -620,7 +613,6 @@ export const Config: FlatConfig = { setShouldOpenBrowser, setBufferStateDelayInMilliseconds, overrideWebpackConfig, - setCachingEnabled: setWebpackCaching, setPort, setStudioPort, setRendererPort, @@ -715,7 +707,6 @@ export const ConfigInternals = { getUserPreferredStillImageFormat, getUserPreferredVideoImageFormat, getWebpackOverrideFn, - getWebpackCaching, getOutputLocation, setFrameRangeFromCli, setStillFrame, diff --git a/packages/cli/src/config/webpack-caching.ts b/packages/cli/src/config/webpack-caching.ts deleted file mode 100644 index 9ae69bb167b..00000000000 --- a/packages/cli/src/config/webpack-caching.ts +++ /dev/null @@ -1,15 +0,0 @@ -export const DEFAULT_WEBPACK_CACHE_ENABLED = true; - -let webpackCaching = DEFAULT_WEBPACK_CACHE_ENABLED; - -export const setWebpackCaching = (flag: boolean) => { - if (typeof flag !== 'boolean') { - throw new TypeError('Caching flag must be a boolean.'); - } - - webpackCaching = flag; -}; - -export const getWebpackCaching = () => { - return webpackCaching; -}; diff --git a/packages/cli/src/load-config.ts b/packages/cli/src/load-config.ts index b7044998009..9b72409516a 100644 --- a/packages/cli/src/load-config.ts +++ b/packages/cli/src/load-config.ts @@ -1,4 +1,4 @@ -import {BundlerInternals} from '@remotion/bundler'; +import esbuild from 'esbuild'; import fs from 'node:fs'; import path from 'node:path'; import {isMainThread} from 'node:worker_threads'; @@ -26,7 +26,7 @@ export const loadConfigFile = async ( } const virtualOutfile = 'bundle.js'; - const result = await BundlerInternals.esbuild.build({ + const result = await esbuild.build({ platform: 'node', target: 'node16', bundle: true, diff --git a/packages/cli/src/parse-command-line.ts b/packages/cli/src/parse-command-line.ts index f7b9990d8c8..680b1359d60 100644 --- a/packages/cli/src/parse-command-line.ts +++ b/packages/cli/src/parse-command-line.ts @@ -41,7 +41,6 @@ export type CommandLineOptions = { ['image-format']: VideoImageFormat | StillImageFormat; ['prores-profile']: ProResProfile; [x264Option.cliFlag]: TypeOfOption; - ['bundle-cache']: string; ['env-file']: string; ['ignore-certificate-errors']: string; ['disable-web-security']: string; @@ -123,10 +122,6 @@ export const parseCommandLine = () => { Config.setBrowserExecutable(parsedCli['browser-executable']); } - if (typeof parsedCli['bundle-cache'] !== 'undefined') { - Config.setCachingEnabled(parsedCli['bundle-cache'] !== 'false'); - } - if (parsedCli['disable-web-security']) { Config.setChromiumDisableWebSecurity(true); } diff --git a/packages/cli/src/setup-cache.ts b/packages/cli/src/setup-cache.ts index ded2258466b..1ae9e92564a 100644 --- a/packages/cli/src/setup-cache.ts +++ b/packages/cli/src/setup-cache.ts @@ -134,20 +134,10 @@ export const bundleOnCli = async ({ publicPath: string | null; audioLatencyHint: AudioContextLatencyCategory | null; }) => { - const shouldCache = ConfigInternals.getWebpackCaching(); - const symlinkState: SymbolicLinksState = { symlinks: [], }; - const onProgress = (progress: number) => { - bundlingState = { - progress: progress / 100, - doneIn: null, - }; - updateProgress(false); - }; - let copyingState: CopyingState = { bytes: 0, doneIn: null, @@ -188,7 +178,6 @@ export const bundleOnCli = async ({ }; const options: MandatoryLegacyBundleOptions = { - enableCaching: shouldCache, webpackOverride: ConfigInternals.getWebpackOverrideFn() ?? ((f) => f), rootDir: remotionRoot, publicDir, @@ -198,33 +187,6 @@ export const bundleOnCli = async ({ publicPath, }; - const [hash] = await BundlerInternals.getConfig({ - outDir: '', - entryPoint: fullPath, - onProgress, - options, - resolvedRemotionRoot: remotionRoot, - bufferStateDelayInMilliseconds, - maxTimelineTracks, - }); - const cacheExistedBefore = BundlerInternals.cacheExists( - remotionRoot, - 'production', - hash, - ); - if (cacheExistedBefore !== 'does-not-exist' && !shouldCache) { - Log.info({indent, logLevel}, '🧹 Cache disabled but found. Deleting... '); - await BundlerInternals.clearCache(remotionRoot, 'production'); - } - - if (cacheExistedBefore === 'other-exists' && shouldCache) { - Log.info( - {indent, logLevel}, - '🧹 Webpack config change detected. Clearing cache... ', - ); - await BundlerInternals.clearCache(remotionRoot, 'production'); - } - const bundleStartTime = Date.now(); const bundlingProgress = createOverwriteableCliOutput({ quiet: quietProgress || quietFlag, @@ -269,20 +231,6 @@ export const bundleOnCli = async ({ updateProgress(true); Log.verbose({indent, logLevel}, 'Bundled under', bundled); - const cacheExistedAfter = - BundlerInternals.cacheExists(remotionRoot, 'production', hash) === 'exists'; - - if (cacheExistedAfter) { - if ( - cacheExistedBefore === 'does-not-exist' || - cacheExistedBefore === 'other-exists' - ) { - Log.info( - {indent, logLevel}, - '⚡️ Cached bundle. Subsequent renders will be faster.', - ); - } - } return bundled; }; diff --git a/packages/cli/src/test/webpack-caching.test.ts b/packages/cli/src/test/webpack-caching.test.ts deleted file mode 100644 index 5c3b4026829..00000000000 --- a/packages/cli/src/test/webpack-caching.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import {expect, test} from 'bun:test'; -import { - DEFAULT_WEBPACK_CACHE_ENABLED, - getWebpackCaching, - setWebpackCaching, -} from '../config/webpack-caching'; -import {expectToThrow} from './expect-to-throw'; - -test('getWebpackCaching - default value', () => { - expect(getWebpackCaching()).toEqual(DEFAULT_WEBPACK_CACHE_ENABLED); -}); - -test('webpack caching - setter - valid input', () => { - const valuesToTest = [true, false]; - valuesToTest.forEach((entry) => { - setWebpackCaching(entry); - expect(getWebpackCaching()).toEqual(entry); - }); -}); - -test('webpack caching - setter - invalid input', () => { - const valuesToTest = [undefined, 'true', 'false']; - valuesToTest.forEach((entry) => { - expectToThrow(() => { - // @ts-expect-error - setWebpackCaching(entry); - }, /Caching flag must be a boolean./); - }); -}); diff --git a/packages/cloudrun/package.json b/packages/cloudrun/package.json index 9ad588dd0b6..e7250775e31 100644 --- a/packages/cloudrun/package.json +++ b/packages/cloudrun/package.json @@ -31,6 +31,7 @@ "devDependencies": { "@remotion/compositor-linux-x64-gnu": "workspace:*", "@types/minimist": "1.2.2", + "esbuild": "0.18.6", "@remotion/eslint-config-internal": "workspace:*", "eslint": "9.19.0", "@types/node": "20.12.14" diff --git a/packages/cloudrun/src/admin/bundle-installer.ts b/packages/cloudrun/src/admin/bundle-installer.ts index d06775d1a6d..091af7c8d81 100644 --- a/packages/cloudrun/src/admin/bundle-installer.ts +++ b/packages/cloudrun/src/admin/bundle-installer.ts @@ -1,5 +1,5 @@ -import {BundlerInternals} from '@remotion/bundler'; import {execSync} from 'child_process'; +import esbuild from 'esbuild'; import {copyFileSync, mkdirSync, rmSync} from 'fs'; import path from 'path'; @@ -17,7 +17,7 @@ export const bundleInstaller = async () => { mkdirSync(outdir, {recursive: true}); const bundlemjs = path.join(outdir, 'install.mjs'); - await BundlerInternals.esbuild.build({ + await esbuild.build({ platform: 'node', target: 'node18', bundle: true, diff --git a/packages/cloudrun/src/admin/bundle-renderLogic.ts b/packages/cloudrun/src/admin/bundle-renderLogic.ts index 6b6eb8a2836..1447564c880 100644 --- a/packages/cloudrun/src/admin/bundle-renderLogic.ts +++ b/packages/cloudrun/src/admin/bundle-renderLogic.ts @@ -1,5 +1,5 @@ -import {BundlerInternals} from '@remotion/bundler'; import {dir} from '@remotion/compositor-linux-x64-gnu'; +import esbuild from 'esbuild'; import fs from 'fs'; import path from 'path'; @@ -16,7 +16,7 @@ export const bundleRenderLogic = async () => { path.join(__dirname, '../../dist/functions/index'), ); - await BundlerInternals.esbuild.build({ + await esbuild.build({ platform: 'node', target: 'node18', bundle: true, diff --git a/packages/cloudrun/src/api/deploy-site.ts b/packages/cloudrun/src/api/deploy-site.ts index 8e0ec2b98a9..5d0d8c7b0d5 100644 --- a/packages/cloudrun/src/api/deploy-site.ts +++ b/packages/cloudrun/src/api/deploy-site.ts @@ -23,7 +23,6 @@ type Options = { onUploadProgress?: (upload: UploadDirProgress) => void; webpackOverride?: WebpackOverrideFn; ignoreRegisterRootWarning?: boolean; - enableCaching?: boolean; publicDir?: string | null; rootDir?: string; bypassBucketNameValidation?: boolean; @@ -88,7 +87,6 @@ export const internalDeploySiteRaw = async ({ BundlerInternals.internalBundle({ publicPath: `/${bucketName}/${subFolder}/`, webpackOverride: options?.webpackOverride ?? ((f) => f), - enableCaching: options?.enableCaching ?? true, publicDir: options?.publicDir ?? null, rootDir: options?.rootDir ?? null, ignoreRegisterRootWarning: options?.ignoreRegisterRootWarning ?? false, diff --git a/packages/cloudrun/src/cli/commands/sites/create.ts b/packages/cloudrun/src/cli/commands/sites/create.ts index 88c8831168a..61b04dc0dcc 100644 --- a/packages/cloudrun/src/cli/commands/sites/create.ts +++ b/packages/cloudrun/src/cli/commands/sites/create.ts @@ -172,7 +172,6 @@ export const sitesCreateSubcommand = async ( }; updateProgress(false); }, - enableCaching: ConfigInternals.getWebpackCaching(), webpackOverride: ConfigInternals.getWebpackOverrideFn() ?? ((f) => f), gitSource, bypassBucketNameValidation: true, diff --git a/packages/core/package.json b/packages/core/package.json index d6aed467efb..bb73a510b55 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -28,6 +28,8 @@ "@testing-library/react": "16.1.0", "@testing-library/dom": "10.4.0", "@happy-dom/global-registrator": "14.5.1", + "jsdom": "21.1.0", + "vitest": "0.31.1", "@types/dom-webcodecs": "0.1.11", "happy-dom": "15.10.2", "react": "19.0.0", diff --git a/packages/docs/docs/cli/benchmark.mdx b/packages/docs/docs/cli/benchmark.mdx index 18ca3958bf7..adbde37c806 100644 --- a/packages/docs/docs/cli/benchmark.mdx +++ b/packages/docs/docs/cli/benchmark.mdx @@ -203,12 +203,6 @@ _optional_ Inherited from [`npx remotion render`](/docs/cli/render#--config) -### `--bundle-cache` - -_optional_ - -Inherited from [`npx remotion render`](/docs/cli/render#--bundle-cache) - ### `--video-bitrate` _optional_ diff --git a/packages/docs/docs/cli/compositions.mdx b/packages/docs/docs/cli/compositions.mdx index 3d407c8e236..219d20536dc 100644 --- a/packages/docs/docs/cli/compositions.mdx +++ b/packages/docs/docs/cli/compositions.mdx @@ -36,10 +36,6 @@ Specify a location for the Remotion config file. Specify a location for a dotenv file - Default `.env`. [Read about how environment variables work in Remotion.](/docs/env-variables) -### `--bundle-cache` - -[Enable or disable Webpack caching](/docs/config#setcachingenabled). This flag is enabled by default, use `--bundle-cache=false` to disable caching. - ### `--log` [Set the log level](/docs/config#setlevel). Increase or decrease the amount of output. Acceptable values: `error`, `warn`, `info` (_default_), `verbose` diff --git a/packages/docs/docs/cli/still.mdx b/packages/docs/docs/cli/still.mdx index 10ab71a0e1d..5f0de01fd78 100644 --- a/packages/docs/docs/cli/still.mdx +++ b/packages/docs/docs/cli/still.mdx @@ -72,10 +72,6 @@ Sets the output file path, as an alternative to the `output-location` positional Which frame should be rendered. Example `--frame=10`. Default `0`. From v3.2.27, negative values are allowed, with `-1` being the last frame. -### `--bundle-cache` - -[Enable or disable Webpack caching](/docs/config#setcachingenabled). This flag is enabled by default, use `--bundle-cache=false` to disable caching. - ### `--log` [Set the log level](/docs/config#setlevel). Increase or decrease the amount of output. Acceptable values: `error`, `warn`, `info` (_default_), `verbose` diff --git a/packages/gif/package.json b/packages/gif/package.json index 65f268cde25..68e45e0162c 100644 --- a/packages/gif/package.json +++ b/packages/gif/package.json @@ -32,7 +32,7 @@ "remotion": "workspace:*" }, "devDependencies": { - "esbuild": "0.25.0", + "esbuild": "0.18.6", "react": "19.0.0", "react-dom": "19.0.0", "webpack": "5.96.1", diff --git a/packages/it-tests/package.json b/packages/it-tests/package.json index bc88ee166fc..75ef124bfb0 100644 --- a/packages/it-tests/package.json +++ b/packages/it-tests/package.json @@ -49,6 +49,7 @@ "create-video": "workspace:*", "execa": "5.1.1", "remotion": "workspace:*", - "sharp": "0.32.6" + "sharp": "0.32.6", + "esbuild": "0.18.6" } } diff --git a/packages/it-tests/src/cloudrun/cloudrun-browser-bundle.test.ts b/packages/it-tests/src/cloudrun/cloudrun-browser-bundle.test.ts index b77c6fb7d71..68082134a35 100644 --- a/packages/it-tests/src/cloudrun/cloudrun-browser-bundle.test.ts +++ b/packages/it-tests/src/cloudrun/cloudrun-browser-bundle.test.ts @@ -1,12 +1,12 @@ -import {BundlerInternals} from '@remotion/bundler'; import {describe, expect, test} from 'bun:test'; +import esbuild from 'esbuild'; import fs from 'fs'; import {tmpdir} from 'os'; import path from 'path'; test('Should not be able to bundle @remotion/cloudrun directly', async () => { expect(() => - BundlerInternals.esbuild.build({ + esbuild.build({ platform: 'node', target: 'node16', bundle: true, @@ -20,7 +20,7 @@ describe('Should be able to bundle @remotion/cloudrun/client with ESBuild', () = const outfile = path.join(tmpdir(), 'esbuild-test.js'); test('Should build without errors', async () => { - const {errors, warnings} = await BundlerInternals.esbuild.build({ + const {errors, warnings} = await esbuild.build({ platform: 'node', target: 'node16', bundle: true, diff --git a/packages/it-tests/src/lambda/lambda-browser-bundle.test.ts b/packages/it-tests/src/lambda/lambda-browser-bundle.test.ts index 5ae2a63d91c..0359a0410e5 100644 --- a/packages/it-tests/src/lambda/lambda-browser-bundle.test.ts +++ b/packages/it-tests/src/lambda/lambda-browser-bundle.test.ts @@ -1,12 +1,12 @@ -import {BundlerInternals} from '@remotion/bundler'; import {describe, expect, test} from 'bun:test'; +import esbuild from 'esbuild'; import fs from 'fs'; import {tmpdir} from 'os'; import path from 'path'; test('Should not be able to bundle @remotion/lambda directly', async () => { expect(() => - BundlerInternals.esbuild.build({ + esbuild.build({ platform: 'node', target: 'node16', bundle: true, @@ -20,7 +20,7 @@ describe('Should be able to bundle @remotion/lambda/client with ESBuild', () => const outfile = path.join(tmpdir(), 'esbuild-test.js'); test('Should build without errors', async () => { - const {errors, warnings} = await BundlerInternals.esbuild.build({ + const {errors, warnings} = await esbuild.build({ platform: 'node', target: 'node16', bundle: true, @@ -56,7 +56,7 @@ describe('Should be able to bundle @remotion/renderer/pure without React', () => const outfile = path.join(tmpdir(), 'esbuild-test.js'); test('Should build without errors', async () => { - const {errors, warnings} = await BundlerInternals.esbuild.build({ + const {errors, warnings} = await esbuild.build({ platform: 'node', target: 'node16', bundle: true, diff --git a/packages/it-tests/src/rendering/bundle-renderer.test.ts b/packages/it-tests/src/rendering/bundle-renderer.test.ts index 2e9c227dd93..3937db185b7 100644 --- a/packages/it-tests/src/rendering/bundle-renderer.test.ts +++ b/packages/it-tests/src/rendering/bundle-renderer.test.ts @@ -1,7 +1,7 @@ -import {BundlerInternals} from '@remotion/bundler'; import {exampleVideos} from '@remotion/example-videos'; import {RenderInternals} from '@remotion/renderer'; import {expect, test} from 'bun:test'; +import esbuild from 'esbuild'; import {execSync} from 'node:child_process'; import {copyFileSync, cpSync, readdirSync, rmSync} from 'node:fs'; import {tmpdir} from 'node:os'; @@ -11,7 +11,7 @@ test('Should be able to bundle the renderer', async () => { const outputdir = path.join(tmpdir(), `test-${Math.random()}`); const outfile = path.join(outputdir, 'esbuild-test.js'); - const {errors, warnings} = BundlerInternals.esbuild.buildSync({ + const {errors, warnings} = esbuild.buildSync({ platform: 'node', target: 'node16', bundle: true, diff --git a/packages/lambda/build.ts b/packages/lambda/build.ts index 4f85cb01bc7..848cb17fd7c 100644 --- a/packages/lambda/build.ts +++ b/packages/lambda/build.ts @@ -1,5 +1,5 @@ -import {BundlerInternals} from '@remotion/bundler'; import {dir} from '@remotion/compositor-linux-arm64-gnu'; +import esbuild from 'esbuild'; import fs, {cpSync, readdirSync} from 'node:fs'; import path from 'node:path'; import {FUNCTION_ZIP_ARM64} from './src/shared/function-zip-path'; @@ -18,7 +18,7 @@ const template = require.resolve( path.join(__dirname, 'dist', 'functions', 'index'), ); -await BundlerInternals.esbuild.build({ +await esbuild.build({ platform: 'node', target: 'node16', bundle: true, diff --git a/packages/lambda/package.json b/packages/lambda/package.json index 73cac0757f5..88f7c56be2e 100644 --- a/packages/lambda/package.json +++ b/packages/lambda/package.json @@ -36,6 +36,7 @@ "@remotion/streaming": "workspace:*", "@smithy/abort-controller": "4.0.1", "remotion": "workspace:*", + "esbuild": "0.18.6", "zod": "3.23.8" }, "devDependencies": { diff --git a/packages/lambda/src/api/deploy-site.ts b/packages/lambda/src/api/deploy-site.ts index 838a28972cf..52372fabe92 100644 --- a/packages/lambda/src/api/deploy-site.ts +++ b/packages/lambda/src/api/deploy-site.ts @@ -33,7 +33,6 @@ type OptionalParameters = { onDiffingProgress?: (bytes: number, done: boolean) => void; webpackOverride?: WebpackOverrideFn; ignoreRegisterRootWarning?: boolean; - enableCaching?: boolean; publicDir?: string | null; rootDir?: string; bypassBucketNameValidation?: boolean; @@ -115,7 +114,6 @@ const mandatoryDeploySite = async ({ fullClientSpecifics.bundleSite({ publicPath: `/${subFolder}/`, webpackOverride: options?.webpackOverride ?? ((f) => f), - enableCaching: options?.enableCaching ?? true, publicDir: options?.publicDir ?? null, rootDir: options?.rootDir ?? null, ignoreRegisterRootWarning: options?.ignoreRegisterRootWarning ?? false, diff --git a/packages/lambda/src/cli/commands/sites/create.ts b/packages/lambda/src/cli/commands/sites/create.ts index 22e820eb671..fd86119313d 100644 --- a/packages/lambda/src/cli/commands/sites/create.ts +++ b/packages/lambda/src/cli/commands/sites/create.ts @@ -206,7 +206,6 @@ export const sitesCreateSubcommand = async ( }; updateProgress(false); }, - enableCaching: ConfigInternals.getWebpackCaching(), webpackOverride: ConfigInternals.getWebpackOverrideFn() ?? ((f) => f), bypassBucketNameValidation: Boolean(parsedLambdaCli['force-bucket-name']), }, diff --git a/packages/player/package.json b/packages/player/package.json index 5774948f136..d356eb91b5c 100644 --- a/packages/player/package.json +++ b/packages/player/package.json @@ -43,9 +43,9 @@ }, "devDependencies": { "@happy-dom/global-registrator": "14.5.1", - "zod": "3.23.8", "@testing-library/react": "16.1.0", "csstype": "^3.1.1", + "zod": "3.23.8", "react": "19.0.0", "react-dom": "19.0.0", "webpack": "5.96.1", diff --git a/packages/skia/src/enable.ts b/packages/skia/src/enable.ts index ba1c6a55eec..29b58e52f29 100644 --- a/packages/skia/src/enable.ts +++ b/packages/skia/src/enable.ts @@ -39,7 +39,7 @@ export const enableSkia: WebpackOverrideFn = (currentConfiguration) => { } compilation.emitAsset( - '/canvaskit.wasm', + 'canvaskit.wasm', new webpack.sources.RawSource( await fs.promises.readFile(src), ), diff --git a/packages/studio-server/src/preview-server/dev-middleware/setup-hooks.ts b/packages/studio-server/src/preview-server/dev-middleware/setup-hooks.ts index 9a41a2f534a..bf729bbefb7 100644 --- a/packages/studio-server/src/preview-server/dev-middleware/setup-hooks.ts +++ b/packages/studio-server/src/preview-server/dev-middleware/setup-hooks.ts @@ -39,7 +39,7 @@ export function setupHooks(context: DevMiddlewareContext, logLevel: LogLevel) { .filter(NoReactInternals.truthy) .map((a) => { if (a.startsWith('webpack compiled')) { - return `Built in ${stats.endTime - stats.startTime}ms`; + return `Built in ${(stats.endTime as number) - (stats.startTime as number)}ms`; } return a; diff --git a/packages/studio-server/src/preview-server/start-server.ts b/packages/studio-server/src/preview-server/start-server.ts index af0b83ffc55..3c3e37b9bb5 100644 --- a/packages/studio-server/src/preview-server/start-server.ts +++ b/packages/studio-server/src/preview-server/start-server.ts @@ -48,7 +48,7 @@ export const startServer = async (options: { liveEventsServer: LiveEventsServer; close: () => Promise; }> => { - const [, config] = await BundlerInternals.webpackConfig({ + const config = await BundlerInternals.webpackConfig({ entry: options.entry, userDefinedComponent: options.userDefinedComponent, outDir: null, @@ -61,7 +61,7 @@ export const startServer = async (options: { bufferStateDelayInMilliseconds: options.bufferStateDelayInMilliseconds, }); - const compiler = webpack(config); + const compiler = webpack.rspack(config); const wdmMiddleware = wdm(compiler, options.logLevel); const whm = webpackHotMiddleware(compiler, options.logLevel);