diff --git a/.changeset/beige-worms-beg.md b/.changeset/beige-worms-beg.md new file mode 100644 index 000000000..20d3173ba --- /dev/null +++ b/.changeset/beige-worms-beg.md @@ -0,0 +1,11 @@ +--- +"@pascal-app/editor": patch +"@pascal-app/viewer": patch +"@pascal-app/nodes": patch +"@pascal-app/core": patch +"@pascal-app/mcp": patch +--- + +Backport the [**tsgo** adoption change](https://github.com/pascalorg/editor/pull/442) from upstream Pascal primarily for this change to the **@react-three/fiber** JSX interface module augmentation: + +> The blocker for TS 7 here was the react-three-fiber + `three/webgpu` JSX augmentation in `viewer`: mapping the whole `three/webgpu` namespace (`ThreeToJSXElements`) made the native checker fail with **TS2320** (heritage conflict on `PMREMGenerator`: core-three's `WebGLRenderer` arg vs webgpu's abstract `Renderer`), **TS2430**, and **TS2590** ("union too complex"). `tsc 6` tolerated it. This narrows the augmentation to the one webgpu node material used as a JSX tag — `` — following R3F's "extract the classes you need" guidance. Types-only; runtime `extend(THREE)` is unchanged. diff --git a/apps/editor/package.json b/apps/editor/package.json index b4ef4235d..d75d2318c 100644 --- a/apps/editor/package.json +++ b/apps/editor/package.json @@ -8,7 +8,7 @@ "build": "dotenv -e ../../.env.local -- next build", "start": "next start", "lint": "biome lint", - "check-types": "next typegen && tsc --noEmit" + "check-types": "next typegen && tsgo --noEmit" }, "dependencies": { "@iconify/react": "^6.0.2", @@ -25,7 +25,7 @@ "clsx": "^2.1.1", "geist": "^1.7.0", "lucide-react": "^1.7.0", - "next": "16.2.1", + "next": "16.2.9", "postcss": "^8.5.6", "react": "^19.2.4", "react-dom": "^19.2.4", diff --git a/apps/ifc-converter/next-env.d.ts b/apps/ifc-converter/next-env.d.ts index c4b7818fb..9edff1c7c 100644 --- a/apps/ifc-converter/next-env.d.ts +++ b/apps/ifc-converter/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/ifc-converter/package.json b/apps/ifc-converter/package.json index a22df93fb..627808cfe 100644 --- a/apps/ifc-converter/package.json +++ b/apps/ifc-converter/package.json @@ -11,7 +11,7 @@ "build": "next build", "start": "next start", "lint": "biome lint", - "check-types": "next typegen && tsc --noEmit" + "check-types": "next typegen && tsgo --noEmit" }, "dependencies": { "@pascal-app/core": "*", @@ -23,7 +23,7 @@ "@react-three/fiber": "^9.5.0", "@tailwindcss/postcss": "^4.2.1", "clsx": "^2.1.1", - "next": "16.2.1", + "next": "16.2.9", "postcss": "^8.5.6", "react": "^19.2.4", "react-dom": "^19.2.4", diff --git a/bun.lock b/bun.lock index 90110255e..a643a3d48 100644 --- a/bun.lock +++ b/bun.lock @@ -1,11 +1,13 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "editor", "devDependencies": { - "@biomejs/biome": "^2.4.6", + "@biomejs/biome": "^2.4.16", "@changesets/cli": "2.31.0", + "@typescript/native-preview": "7.0.0-dev.20260624.1", "dotenv-cli": "^11.0.0", "turbo": "^2.8.15", "typescript": "6.0.2", @@ -40,7 +42,7 @@ "clsx": "^2.1.1", "geist": "^1.7.0", "lucide-react": "^1.7.0", - "next": "16.2.1", + "next": "16.2.9", "postcss": "^8.5.6", "react": "^19.2.4", "react-dom": "^19.2.4", @@ -75,7 +77,7 @@ "@tailwindcss/postcss": "^4.2.1", "clsx": "^2.1.1", "lucide-react": "^1.7.0", - "next": "16.2.1", + "next": "16.2.9", "postcss": "^8.5.6", "react": "^19.2.4", "react-dom": "^19.2.4", @@ -348,23 +350,23 @@ "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], - "@biomejs/biome": ["@biomejs/biome@2.4.15", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.4.15", "@biomejs/cli-darwin-x64": "2.4.15", "@biomejs/cli-linux-arm64": "2.4.15", "@biomejs/cli-linux-arm64-musl": "2.4.15", "@biomejs/cli-linux-x64": "2.4.15", "@biomejs/cli-linux-x64-musl": "2.4.15", "@biomejs/cli-win32-arm64": "2.4.15", "@biomejs/cli-win32-x64": "2.4.15" }, "bin": { "biome": "bin/biome" } }, "sha512-j5VH3a/h/HXTKBM50MDMxRCzkeLv9S2XJcW2WgnZT1+xyisi+0bISrXR82gCX+8S9lvK0skEvHJRN+3Ktr2hlw=="], + "@biomejs/biome": ["@biomejs/biome@2.5.1", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.5.1", "@biomejs/cli-darwin-x64": "2.5.1", "@biomejs/cli-linux-arm64": "2.5.1", "@biomejs/cli-linux-arm64-musl": "2.5.1", "@biomejs/cli-linux-x64": "2.5.1", "@biomejs/cli-linux-x64-musl": "2.5.1", "@biomejs/cli-win32-arm64": "2.5.1", "@biomejs/cli-win32-x64": "2.5.1" }, "bin": { "biome": "bin/biome" } }, "sha512-IXWLCxKmae+rI7LOHS1B3EbVisQ6GRAWbhN9msa6KjNCyFWrvKZWR4oUdinaNssrV852OrSHuSPa95h1GPJc7Q=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.4.15", "", { "os": "darwin", "cpu": "arm64" }, "sha512-rF3PPqLq1yoST79zaQbDjVJwsuIeci/O+9bgNmC5QpgOqz6aqYuzA4abyAGx+mgyiDXn4A049xAN8gijbuR1Qg=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.5.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-npqDzvqv7vFaWRiNN1Te71siRgPaqS9MpqgYCdP/CrUbkJ7ApezaeaKjueKHRN/JH/6lRjJQAHi8acQDCAz22w=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.4.15", "", { "os": "darwin", "cpu": "x64" }, "sha512-/5KHXYMfSJs1fNXiX30xFtI8JcCFV6zaVVLxOa0M2sfqBKHkpQhRTv94yxQWxeTY2lzo2OuTlNvPC+hDQt2wcQ=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.5.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-RgwTqPAM8g2tn1j+b5oRjF/DbSBX8a4gwojtuG9XuhfK7GgomvZ9+T+tqjXiVbjLEeGJOoL6VEk8mvRTVeSybw=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.4.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-owaAMZD/T4LrD0ELNCk0Km3qrRHuM0X6EAyVE1FSqGY0rbLoiDLrO4Us2tllm6cAeB2Ioa9C2C08NZPdr8+0Ug=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yhV35CzZh38VyMvTEXi3JTjxZBs++oCKK9KG8vB6VI5+uvQvZNR3BFWEKKzuOmx9DJJj7sQpZ4LQJcmbGTs3+Q=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.4.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZPcxznxm0pogHBLZhYntyR3sR+MrZjqJIKEr7ZqVen0Rl+P/4upVmfYXjftizi9RoqZntg33fv/1fbdhbYXpEQ=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.5.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-WMcvMLgByyTqVxGlq918NBBYliq9FRR9GAQVETHb+VjGVqXCZFfHlZHC1FX4ibuYY/Hg6TJE3rHU0xVrdJXNRw=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.4.15", "", { "os": "linux", "cpu": "x64" }, "sha512-0jj7THz12GbUOLmMibktK6DZjqz2zV64KFxyBtcFTKPiiOIY0a7vns1elpO1dERvxpsZ5ik0oFfz0oGwFde1+g=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-J/7uHSX7NfoYDI7HijAkd8lnQIOrRb2W7j3X+tw4R+N5ExvXGsyXFiGdQcfcxfOmNQmZVSQOCDk757fwpzqQcg=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.4.15", "", { "os": "linux", "cpu": "x64" }, "sha512-CNq/9W38SYSH023lfcQ4KKU8K0YX8T//FZUhcgtMMRABDojx5XsMV7jlweAvGSl389wJQB29Qo6Zb/a+jdvt+w=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-ANTowtlLmPYm5yeMckWY8Xzb9Ix+JJP3tgHR/n6xRj1VWyIzzWtfRfih9hv9VmClwadpBvZduISZIbBsIlYG3A=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.4.15", "", { "os": "win32", "cpu": "arm64" }, "sha512-ouhkYdlhp/1GghEJPdWwD/Vi3gQ1nFxuSpMolWsbq3Lsq3QUR4jl6UdhhscdCugKU5vOEuMiJhvKj66O0OCq+w=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.5.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-zgXnKNgWPC4iPF7Y1lR3STUeCUuZRpD6IiOrC7TZTlh0Lx6FiVUT05myuMQHQ9D+1cc7uyMldi4forE6lp0ivQ=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.4.15", "", { "os": "win32", "cpu": "x64" }, "sha512-zBrGq5mx5wwpnow4+2BxUvleDM+GNd4sLbPaMapsSLQLD0NGRCquqPBTgN+7XkUteHvj7M+BstuI8tmnV7+HgQ=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-6uxpR9hvaglANkZemeSiN/FhYgkGasrEGn267eXIWvjrjJ2LhDlk251IhjVJq6MXzkV2/bcXwLwSroLyPtqRZg=="], "@changesets/apply-release-plan": ["@changesets/apply-release-plan@7.1.1", "", { "dependencies": { "@changesets/config": "^3.1.4", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA=="], @@ -530,25 +532,25 @@ "@monogrid/gainmap-js": ["@monogrid/gainmap-js@3.4.0", "", { "dependencies": { "promise-worker-transferable": "^1.0.4" }, "peerDependencies": { "three": ">= 0.159.0" } }, "sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg=="], - "@next/env": ["@next/env@16.2.1", "", {}, "sha512-n8P/HCkIWW+gVal2Z8XqXJ6aB3J0tuM29OcHpCsobWlChH/SITBs1DFBk/HajgrwDkqqBXPbuUuzgDvUekREPg=="], + "@next/env": ["@next/env@16.2.9", "", {}, "sha512-ki5VxxXfzD/9TDe13wyeTKIjQTAwBVpnr8KhRDUr8ltMUq1/NBpWNT5tiPoxiGl+PHM4X2ahSOiPk6iAimIzPg=="], "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.5.18", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-w4MYq8M26a8PNrfto0JosLf5/3ssln1rsyP96g2DkC8uFVymStM5DLSz5ElxxrPRg2XnTMnFo3kREFlhYvxhWw=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.2.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BwZ8w8YTaSEr2HIuXLMLxIdElNMPvY9fLqb20LX9A9OMGtJilhHLbCL3ggyd0TwjmMcTxi0XXt+ur1vWUoxj2Q=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.2.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HkfxNYUCmcct0Xsqib5KxqMSHV4AHJq857BNRchyBDs4YS19aHzVfn1kDuBYKqLLQBjXgnkIsjV2Kd4d2wzYhw=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.2.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-/vrcE6iQSJq3uL3VGVHiXeaKbn8Es10DGTGRJnRZlkNQQk3kaNtAJg8Y6xuAlrx/6INKVjkfi5rY0iEXorZ6uA=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.2.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-7IAtK4MeybpqRV9GRABWEhJ62mOS+rzWOzOTFie4cSEtm12xsoOMJRcECoZx3FHPzFAqN/IJtHqWAFOLfl152w=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-uLn+0BK+C31LTVbQ/QU+UaVrV0rRSJQ8RfniQAHPghDdgE+SlroYqcmFnO5iNjNfVWCyKZHYrs3Nl0mUzWxbBw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.2.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-hBD75iWpUtkL9SmQmcRhmLomn9jgkPzCEkbOcLgHymPEKzv+6ONy13RRiIEz/iEObjkS2Jlb5gYS2XGoS3X4rw=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-ssKq6iMRnHdnycGp9hCuGnXJZ0YPr4/wNwrfE5DbmvEcgl9+yv97/Kq3TPVDfYome1SW5geciLB9aiEqKXQjlQ=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.2.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-qZTI3pf9SGc/obr8NkQAekBxmp1QK+kVm+VAf3BALLfFAj+1kUhkTxmrWpVos9R/UYIA8AWX2p6cGI5WdwzVUA=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-HQm7SrHRELJ30T1TSmT706IWovFFSRGxfgUkyWJZF/RKBMdbdRWJuFrcpDdE5vy9UXjFOx6L3mRdqH04Mmx0hg=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.2.9", "", { "os": "linux", "cpu": "x64" }, "sha512-xm0HfRNX+UkH4R3c18ynswjj5o5uEj/7iI9p9omdtTSIsRCzQqkGMA+10nzJ4EHnYC3as65IMhbbl5fWRUWHYg=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-aV2iUaC/5HGEpbBkE+4B8aHIudoOy5DYekAKOMSHoIYQ66y/wIVeaRx8MS2ZMdxe/HIXlMho4ubdZs/J8441Tg=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.2.9", "", { "os": "linux", "cpu": "x64" }, "sha512-QumimHkGEG6vM3PfEDWKyKen03NcqLOkeKB1EfcPe7VxzmEiCa4jNnMyBn/US5zcd/VE1CI+O8Ovb3lfjVHfGw=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.2.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-IXdNgiDHaSk0ZUJ+xp0OQTdTgnpx1RCfRTalhn3cjOP+IddTMINwA7DXZrwTmGDO8SUr5q2hdP/du4DcrB1GxA=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.2.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-hzQpKZvw8rAwI6A2uQh6SacCSvNAXaIkPNsWwzqqfRiIMiXMfH936skDhz1OO6KpvdKkJrgHHtqQOq5PIXOvdQ=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.2.1", "", { "os": "win32", "cpu": "x64" }, "sha512-qvU+3a39Hay+ieIztkGSbF7+mccbbg1Tk25hc4JDylf8IHjYmY/Zm64Qq1602yPyQqvie+vf5T/uPwNxDNIoeg=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.2.9", "", { "os": "win32", "cpu": "x64" }, "sha512-qr2VL3Ce5QrwgO2yh1ujSBawrimjVKX8FGF/cOynmdYKJY0BdHpGVNIRK1tqONB10Vkm25Ub1BD2bkjWs4+96w=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -774,6 +776,22 @@ "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.59.2", "", { "dependencies": { "@typescript-eslint/types": "8.59.2", "eslint-visitor-keys": "^5.0.0" } }, "sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA=="], + "@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20260624.1", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260624.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260624.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20260624.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260624.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20260624.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260624.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20260624.1" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-ogwfNo1xuAutOF8RbTCo3Ut0q/65u2ucOeHizi6O14q+3vnelNS+u8qVC2QWXubMcwtuN5E9cbfPslvGC4kdwA=="], + + "@typescript/native-preview-darwin-arm64": ["@typescript/native-preview-darwin-arm64@7.0.0-dev.20260624.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-g8CqDkYCHTCYdhBHXs5cMraBurOS+KrcMFxE0SsaKZoI6Tnp+le1aWvxUBbzNKJYyThHJqb/1mLopzEJxJCuKA=="], + + "@typescript/native-preview-darwin-x64": ["@typescript/native-preview-darwin-x64@7.0.0-dev.20260624.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-P00JVvSV90eioYDuINAKmOSA8yhFTWLq6RvS5lrCfUuDlcgr2kSOgZAfFHIksHBVz6ZXpAXpa0dHPmc5SJ3Ymw=="], + + "@typescript/native-preview-linux-arm": ["@typescript/native-preview-linux-arm@7.0.0-dev.20260624.1", "", { "os": "linux", "cpu": "arm" }, "sha512-eWHELvfQMkVRjafMd+3ATgM9p9yAergJaM4AOY8AekCNWnHFwUrp/ohh+ryyMUIqque5jjb/kuTiOiGj728I2Q=="], + + "@typescript/native-preview-linux-arm64": ["@typescript/native-preview-linux-arm64@7.0.0-dev.20260624.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-cppM2yTZ/Gd1hOXy8NEJcUBxJ0O0zl9CU3OU1ZWZ/OHWWX/ukEzCCr94SUwJhjIWOylBCpIYkrvYoTwxNa94XQ=="], + + "@typescript/native-preview-linux-x64": ["@typescript/native-preview-linux-x64@7.0.0-dev.20260624.1", "", { "os": "linux", "cpu": "x64" }, "sha512-FaB8rS+rKYz4nDrEsHsF3b4cn7eCKCYroMJReA375OuQ6PHcmCNQ6QlVetA0dfFBxTTgejmoKyfw9xgAA5P4Yw=="], + + "@typescript/native-preview-win32-arm64": ["@typescript/native-preview-win32-arm64@7.0.0-dev.20260624.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-BgkqbCmSHDb5UxqWaFlFFJ/DHNT3lEUO4W8627ap6+QthJZuXk2imiHAX3PgYXC6en9fLLyR6jjcseAa4CCshg=="], + + "@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20260624.1", "", { "os": "win32", "cpu": "x64" }, "sha512-WaZ+ue63NgB2j/lqjirfevh/TqcsCxSqnKhGGiRnlxHyYIBcoq+x7KngyEnyGIaywJE1PcFeXA+2EMSIPlSEiQ=="], + "@use-gesture/core": ["@use-gesture/core@10.3.1", "", {}, "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw=="], "@use-gesture/react": ["@use-gesture/react@10.3.1", "", { "dependencies": { "@use-gesture/core": "10.3.1" }, "peerDependencies": { "react": ">= 16.8.0" } }, "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g=="], @@ -1350,7 +1368,7 @@ "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "next": ["next@16.2.1", "", { "dependencies": { "@next/env": "16.2.1", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.2.1", "@next/swc-darwin-x64": "16.2.1", "@next/swc-linux-arm64-gnu": "16.2.1", "@next/swc-linux-arm64-musl": "16.2.1", "@next/swc-linux-x64-gnu": "16.2.1", "@next/swc-linux-x64-musl": "16.2.1", "@next/swc-win32-arm64-msvc": "16.2.1", "@next/swc-win32-x64-msvc": "16.2.1", "sharp": "^0.34.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-VaChzNL7o9rbfdt60HUj8tev4m6d7iC1igAy157526+cJlXOQu5LzsBXNT+xaJnTP/k+utSX5vMv7m0G+zKH+Q=="], + "next": ["next@16.2.9", "", { "dependencies": { "@next/env": "16.2.9", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.2.9", "@next/swc-darwin-x64": "16.2.9", "@next/swc-linux-arm64-gnu": "16.2.9", "@next/swc-linux-arm64-musl": "16.2.9", "@next/swc-linux-x64-gnu": "16.2.9", "@next/swc-linux-x64-musl": "16.2.9", "@next/swc-win32-arm64-msvc": "16.2.9", "@next/swc-win32-x64-msvc": "16.2.9", "sharp": "^0.34.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-MEOJiq/UvuezAdqVSceHbqDgZt1kDw2tpGVOlsdIoJsQdbN2JY2hpVG4xnXGkbdJUOEWhnRfiu/O4Hpc9Juwww=="], "node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="], diff --git a/package.json b/package.json index 9ef444c30..1104de530 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,13 @@ "restart": "bun kill && bun clean:cache && bun dev", "changeset": "changeset", "ci:version": "changeset version && bun install", - "ci:publish": "bun run scripts/publish-fork.ts" + "ci:publish": "bun run scripts/publish-fork.ts", + "snapshot": "bun run scripts/publish-fork.ts --snapshot" }, "devDependencies": { - "@biomejs/biome": "^2.4.6", + "@biomejs/biome": "^2.4.16", "@changesets/cli": "2.31.0", + "@typescript/native-preview": "7.0.0-dev.20260624.1", "dotenv-cli": "^11.0.0", "turbo": "^2.8.15", "typescript": "6.0.2", diff --git a/packages/core/package.json b/packages/core/package.json index 1f7e02d7a..46408766d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -58,7 +58,7 @@ ], "scripts": { "build": "tsc --build", - "dev": "tsc --build --watch", + "dev": "tsgo --build --watch", "test": "bun test", "bench:registry": "bun run src/registry/__bench__/relations-resolver.bench.ts", "prepublishOnly": "npm run build" diff --git a/packages/editor/package.json b/packages/editor/package.json index d6197a192..88fac72cb 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -21,9 +21,8 @@ "README.md" ], "scripts": { - "build": "tsc -p tsconfig.build.json", - "dev": "tsc -p tsconfig.build.json --watch", - "check-types": "tsc --noEmit" + "build": "tsgo -p tsconfig.build.json", + "check-types": "tsgo --noEmit" }, "peerDependencies": { "@pascal-app/core": "workspace:^", diff --git a/packages/editor/src/components/tools/select/box-select-tool.tsx b/packages/editor/src/components/tools/select/box-select-tool.tsx index 43a647b58..a0f1d95fb 100644 --- a/packages/editor/src/components/tools/select/box-select-tool.tsx +++ b/packages/editor/src/components/tools/select/box-select-tool.tsx @@ -18,7 +18,6 @@ import { type ZoneNode, } from '@pascal-app/core' import { useViewer } from '@pascal-app/viewer' -import type { ThreeElements } from '@react-three/fiber' import { useThree } from '@react-three/fiber' import { useEffect, useRef } from 'react' import { @@ -40,12 +39,6 @@ import { sfxEmitter } from '../../../lib/sfx-bus' import useEditor from '../../../store/use-editor' import { CursorSphere } from '../shared/cursor-sphere' -declare module 'react/jsx-runtime' { - namespace JSX { - interface IntrinsicElements extends ThreeElements {} - } -} - /** * Module-level flag to prevent the SelectionManager from deselecting * on the grid:click that fires right after a box-select drag completes. diff --git a/packages/ifc-converter/package.json b/packages/ifc-converter/package.json index a5e562dda..bbb72d03e 100644 --- a/packages/ifc-converter/package.json +++ b/packages/ifc-converter/package.json @@ -18,7 +18,7 @@ ], "scripts": { "build": "tsc --build", - "dev": "tsc --build --watch", + "dev": "tsgo --build --watch", "prepublishOnly": "npm run build" }, "dependencies": { diff --git a/packages/mcp/package.json b/packages/mcp/package.json index e6f4a5bc8..8d4f19012 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -48,7 +48,7 @@ ], "scripts": { "build": "tsc --build", - "dev": "tsc --build --watch", + "dev": "tsgo --build --watch", "start": "bun dist/bin/pascal-mcp.js", "test": "bun test", "smoke": "bun run scripts/smoke.ts", diff --git a/packages/nodes/package.json b/packages/nodes/package.json index e6a4318be..384aadd63 100644 --- a/packages/nodes/package.json +++ b/packages/nodes/package.json @@ -18,7 +18,7 @@ ], "scripts": { "build": "tsc --build", - "dev": "tsc --build --watch", + "dev": "tsgo --build --watch", "test": "bun test", "prepublishOnly": "bun run build && bun test" }, diff --git a/packages/ui/package.json b/packages/ui/package.json index 638b47fe8..89d5585a8 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -8,7 +8,7 @@ "scripts": { "lint": "eslint . --max-warnings 0", "generate:component": "turbo gen react-component", - "check-types": "tsc --noEmit" + "check-types": "tsgo --noEmit" }, "devDependencies": { "@repo/eslint-config": "*", diff --git a/packages/viewer/package.json b/packages/viewer/package.json index d50e53f78..f7ce97cd8 100644 --- a/packages/viewer/package.json +++ b/packages/viewer/package.json @@ -18,7 +18,7 @@ ], "scripts": { "build": "tsc --build", - "dev": "tsc --build --watch", + "dev": "tsgo --build --watch", "prepublishOnly": "npm run build" }, "peerDependencies": { diff --git a/packages/viewer/src/components/viewer/index.tsx b/packages/viewer/src/components/viewer/index.tsx index 0c0e69089..992688450 100644 --- a/packages/viewer/src/components/viewer/index.tsx +++ b/packages/viewer/src/components/viewer/index.tsx @@ -1,7 +1,7 @@ 'use client' import { type AnyNodeId, StairOpeningSystem } from '@pascal-app/core' -import { Canvas, extend, type ThreeToJSXElements, useFrame, useThree } from '@react-three/fiber' +import { Canvas, extend, type ThreeElement, useFrame, useThree } from '@react-three/fiber' import { forwardRef, useEffect, useImperativeHandle, useRef } from 'react' import * as THREE from 'three/webgpu' import { PERF_OVERLAY_ENABLED, pushGpuSample } from '../../lib/gpu-perf' @@ -23,7 +23,15 @@ import { SelectionManager } from './selection-manager' import { ViewerCamera } from './viewer-camera' declare module '@react-three/fiber' { - interface ThreeElements extends ThreeToJSXElements {} + // The TS 7 native compiler (tsgo) rejects mapping the entire `three/webgpu` + // namespace into JSX — `ThreeToJSXElements` triggers a TS2320 + // heritage conflict with R3F's core-three base plus a TS2590 "union too + // complex". tsc 6 tolerates it; tsgo does not. R3F's base ThreeElements + // already covers core three, so we extract only the webgpu/TSL node materials + // we actually use as JSX (see r3f.docs.pmnd.rs/api/typescript). + interface ThreeElements { + lineBasicNodeMaterial: ThreeElement + } } extend(THREE as any) diff --git a/scripts/publish-fork.ts b/scripts/publish-fork.ts index 182108c00..8f75de812 100644 --- a/scripts/publish-fork.ts +++ b/scripts/publish-fork.ts @@ -22,6 +22,12 @@ import { extname, join } from "node:path"; // // To target a different scope (e.g. @meterup) set PUBLISH_SCOPE — that is the // only thing that changes. Auth comes from .npmrc (NODE_AUTH_TOKEN). +// +// With --snapshot (run after `bun changeset` + `bun run build`): mints +// 0.0.0-snapshot- versions via `changeset version --snapshot`, +// publishes them to the `snapshot` dist-tag (leaving `latest` untouched), and +// skips git tags / GitHub Releases. It dirties the working tree (version bumps + +// consumed changesets) — discard with `git checkout .` afterward; CI is ephemeral. const SOURCE_PREFIX = "@pascal-app/"; const SCOPE = process.env.PUBLISH_SCOPE ?? "@meterup"; @@ -30,6 +36,11 @@ const TARGET_PREFIX = `${SCOPE}/${NAME_PREFIX}`; // e.g. "@meterup/pascal-" const REGISTRY = "https://npm.pkg.github.com"; const DRY_RUN = process.argv.includes("--dry-run"); const IN_CI = process.env.GITHUB_ACTIONS === "true"; +// --snapshot: mint ephemeral 0.0.0-snapshot- versions and publish them +// to the `snapshot` dist-tag instead of `latest` (see changesets snapshot releases). +const SNAPSHOT = process.argv.includes("--snapshot"); +const SNAPSHOT_TAG = "snapshot"; // both the changesets snapshot id and the dist-tag +const DIST_TAG = SNAPSHOT ? SNAPSHOT_TAG : "latest"; // "owner/repo" of the publishing fork in CI; used to link packages to this repo. const GITHUB_REPOSITORY = process.env.GITHUB_REPOSITORY; @@ -70,6 +81,15 @@ const relinkRepository = (packageDir: string, repo: string, directory: string): writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`); }; +// Snapshot mode mints throwaway versions from the pending changesets. Only +// packages with a changeset (+ their dependents) get a snapshot version; the +// rest keep their released version and are skipped below as already-published. +// `bun install` re-resolves the lockfile so `bun pm pack` emits snapshot ranges. +if (SNAPSHOT && !DRY_RUN) { + await $`bunx changeset version --snapshot ${SNAPSHOT_TAG}`; + await $`bun install`; +} + const newTags: string[] = []; for (const dir of readdirSync("packages")) { @@ -106,8 +126,8 @@ for (const dir of readdirSync("packages")) { continue; } - console.log(`→ Publishing ${tag}`); - await $`npm publish ${packed} --ignore-scripts --registry ${REGISTRY}`; + console.log(`→ Publishing ${tag} (dist-tag: ${DIST_TAG})`); + await $`npm publish ${packed} --ignore-scripts --registry ${REGISTRY} --tag ${DIST_TAG}`; newTags.push(tag); } finally { rmSync(work, { recursive: true, force: true }); @@ -119,8 +139,9 @@ for (const dir of readdirSync("packages")) { // printed name against a workspace package, which never matches our rescoped // names (the source stays @pascal-app/*), so it errors. Instead we own the tag // + release here, named after what was actually published. Best-effort so a -// re-run (tag/release already exists) doesn't fail the job. -if (IN_CI && newTags.length > 0) { +// re-run (tag/release already exists) doesn't fail the job. Skipped for +// snapshots — they're ephemeral and shouldn't leave tags/releases behind. +if (!SNAPSHOT && IN_CI && newTags.length > 0) { for (const tag of newTags) await $`git tag ${tag}`.nothrow(); await $`git push origin ${newTags}`.nothrow(); for (const tag of newTags) {