diff --git a/package-lock.json b/package-lock.json index b4b963f..e396476 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,6 +89,27 @@ "integrity": "sha512-AZHL1jqUF55QJkJyU1yKeh4ImX2J93bVLIezT1+o0FZqTix6O06MOaqpKoJ4MmbDCsoZmwO+qc471/SDMDm2AA==", "license": "Apache-2.0" }, + "node_modules/@emnapi/core": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.2.tgz", + "integrity": "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", + "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", @@ -557,7 +578,6 @@ "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-9.6.1.tgz", "integrity": "sha512-zF0rsKcVYpcJwbFEnv2HkHX9cvOEgsfQo/X8lwmR2dn13S4qEQJXir9fxf5js2LQFoXqxOY7MDkOkYx2uZ4gSg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", @@ -1224,7 +1244,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1259,7 +1278,6 @@ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.185.0.tgz", "integrity": "sha512-O2Uy8Cj4Nonr8dWUUbifMdPe8B0Mq7EdOHb89S4+kjUw/KhbjTZrUuYlrQ1bpUKG+EP9QJnN7qNxbHGlGoLHMA==", "license": "MIT", - "peer": true, "dependencies": { "@dimforge/rapier3d-compat": "~0.12.0", "@tweenjs/tween.js": "~23.1.3", @@ -1485,7 +1503,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.38", "caniuse-lite": "^1.0.30001799", @@ -2421,7 +2438,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -2492,7 +2508,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", @@ -2514,7 +2529,6 @@ "resolved": "https://registry.npmjs.org/postprocessing/-/postprocessing-6.39.2.tgz", "integrity": "sha512-AxPY+xFyVOsz+8bbHSyQBoOK4AUqSQspTXXIsNcKhmGJRm/afHRAwZ8bKC02AeSPII0PW6lbCN84SgAoWFsKKA==", "license": "Zlib", - "peer": true, "peerDependencies": { "three": ">= 0.168.0 < 0.186.0" } @@ -2558,7 +2572,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2568,7 +2581,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -2823,8 +2835,7 @@ "version": "0.185.0", "resolved": "https://registry.npmjs.org/three/-/three-0.185.0.tgz", "integrity": "sha512-+yRrcRO2iZa8uzvNNl0d7cL4huhgKgBvVJ0njcTe8xFqZ6DMAFZdCKDP91SEAuj25bNAj7k1QQdf+srZywVK6w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/three-mesh-bvh": { "version": "0.8.3", @@ -3046,7 +3057,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.2.tgz", "integrity": "sha512-6YYPbRXTxx6bRXmOn7XdnQAy5DQNHhDgtjhDHI13oe4pY93kkcdGJWxpGwOm++/Wh0QpQhDrpIoVMrmrsI5AGQ==", "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", diff --git a/test-error.cjs b/test-error.cjs new file mode 100644 index 0000000..2dbb8aa --- /dev/null +++ b/test-error.cjs @@ -0,0 +1,11 @@ +const { chromium } = require('playwright'); +(async () => { + const browser = await chromium.launch(); + const context = await browser.newContext({ ignoreHTTPSErrors: true }); + const page = await context.newPage(); + page.on('console', msg => console.log('BROWSER LOG:', msg.type(), msg.text())); + page.on('pageerror', err => console.log('BROWSER ERROR:', err.message)); + await page.goto('https://localhost:5173', { waitUntil: 'networkidle' }).catch(e => console.log('Navigation Error:', e)); + await page.waitForTimeout(3000); + await browser.close(); +})(); diff --git a/vite.config.ts b/vite.config.ts index a619983..548deb1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -23,6 +23,11 @@ function iGunWSServer() { configureServer(server: any) { if (!server.httpServer) return; + // Fix for Node.js 22.21.0 http2 regression with WebSockets + if (typeof server.httpServer.shouldUpgradeCallback !== 'function') { + server.httpServer.shouldUpgradeCallback = () => true; + } + const wss = new WebSocketServer({ noServer: true }); const sessions = new Map(); @@ -112,5 +117,8 @@ export default defineConfig({ plugins: [react(), tailwindcss(), basicSsl(), iGunWSServer()], define: { '__LOCAL_IP__': JSON.stringify(getLocalIp()), + }, + server: { + host: true, } })