diff --git a/package.json b/package.json index da51a5f4ee..c1cf9afdac 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "test:browser:watch": "vitest --browser.enabled --project browser", "test:coverage": "vitest --coverage run", "nightly-build": "pnpm --filter typegpu --filter @typegpu/noise --filter unplugin-typegpu prepublishOnly --skip-all-checks", - "changes": "tgpu-dev-cli changes" + "changes": "tgpu-dev-cli changes", + "spec-report": "bun scripts/spec-report.ts" }, "engines": { "node": ">=12.20.0" @@ -40,6 +41,7 @@ "devDependencies": { "@biomejs/biome": "^2.2.5", "@typegpu/tgpu-dev-cli": "workspace:*", + "@types/bun": "^1.3.5", "@vitest/browser": "^3.2.4", "@vitest/coverage-v8": "3.1.2", "@webgpu/types": "catalog:types", @@ -50,7 +52,8 @@ "typescript": "catalog:types", "unplugin-typegpu": "workspace:*", "vite-imagetools": "catalog:frontend", - "vitest": "catalog:test" + "vitest": "catalog:test", + "typegpu": "workspace:*" }, "packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67", "pnpm": { @@ -62,10 +65,42 @@ "esbuild", "msw", "sharp" + ] + }, + "overrides": { + "rollup": "4.34.8", + "three": "catalog:example" + }, + "workspaces": { + "packages": [ + "packages/*", + "apps/*" ], - "overrides": { - "rollup": "4.34.8", - "three": "catalog:example" + "catalog": { + "arktype": "^2.1.22" + }, + "catalogs": { + "build": { + "tsup": "^8.5.0", + "unbuild": "^3.5.0", + "jiti": "^2.6.0" + }, + "types": { + "typescript": "^5.9.3", + "@webgpu/types": "^0.1.66", + "@types/three": "^0.181.0" + }, + "test": { + "vitest": "^3.2.4" + }, + "frontend": { + "vite-imagetools": "^9.0.0", + "fuse.js": "^7.1.0" + }, + "example": { + "wgpu-matrix": "^3.4.0", + "three": "^0.181.0" + } } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69ebcc5f6c..2e81e33d87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ catalogs: specifier: ^2.1.22 version: 2.1.25 example: + three: + specifier: ^0.181.0 + version: 0.181.2 wgpu-matrix: specifier: ^3.4.0 version: 3.4.0 @@ -45,10 +48,6 @@ catalogs: specifier: ^5.9.3 version: 5.9.3 -overrides: - rollup: 4.34.8 - three: ^0.181.0 - importers: .: @@ -59,6 +58,9 @@ importers: '@typegpu/tgpu-dev-cli': specifier: workspace:* version: link:packages/tgpu-dev-cli + '@types/bun': + specifier: ^1.3.5 + version: 1.3.5 '@vitest/browser': specifier: ^3.2.4 version: 3.2.4(msw@2.10.2(@types/node@24.10.0)(typescript@5.9.3))(vite@6.3.6(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4) @@ -80,6 +82,9 @@ importers: tsup: specifier: catalog:build version: 8.5.0(jiti@2.6.0)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + typegpu: + specifier: workspace:* + version: link:packages/typegpu typescript: specifier: catalog:types version: 5.9.3 @@ -88,7 +93,7 @@ importers: version: link:packages/unplugin-typegpu vite-imagetools: specifier: catalog:frontend - version: 9.0.0(rollup@4.34.8) + version: 9.0.0(rollup@4.37.0) vitest: specifier: catalog:test version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.0)(@vitest/browser@3.2.4)(jiti@2.6.0)(jsdom@27.0.0(canvas@3.2.0)(postcss@8.5.6))(lightningcss@1.30.1)(msw@2.10.2(@types/node@24.10.0)(typescript@5.9.3))(tsx@4.20.6)(yaml@2.8.1) @@ -131,13 +136,13 @@ importers: version: 3.6.0 '@astrojs/starlight': specifier: ^0.36.1 - version: 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + version: 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) '@astrojs/starlight-tailwind': specifier: ^4.0.1 - version: 4.0.1(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(tailwindcss@4.1.11) + version: 4.0.1(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(tailwindcss@4.1.11) '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.11) + version: 6.0.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.11) '@babel/standalone': specifier: ^7.27.0 version: 7.27.0 @@ -191,7 +196,7 @@ importers: version: 2.1.25 astro: specifier: ^5.14.5 - version: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + version: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) classnames: specifier: ^2.5.1 version: 2.5.1 @@ -251,12 +256,12 @@ importers: version: 0.34.2 starlight-blog: specifier: ^0.23.2 - version: 0.23.2(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + version: 0.23.2(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) starlight-typedoc: specifier: ^0.19.0 - version: 0.19.0(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(typedoc-plugin-markdown@4.3.0(typedoc@0.27.9(typescript@5.9.3)))(typedoc@0.27.9(typescript@5.9.3)) + version: 0.19.0(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(typedoc-plugin-markdown@4.3.0(typedoc@0.27.9(typescript@5.9.3)))(typedoc@0.27.9(typescript@5.9.3)) three: - specifier: ^0.181.0 + specifier: catalog:example version: 0.181.2 tinybench: specifier: ^3.1.0 @@ -321,7 +326,7 @@ importers: version: 1.1.1(tailwindcss@4.1.11) vite-imagetools: specifier: catalog:frontend - version: 9.0.0(rollup@4.34.8) + version: 9.0.0(rollup@4.37.0) vite-plugin-wasm: specifier: ^3.5.0 version: 3.5.0(vite@6.3.6(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(tsx@4.20.6)(yaml@2.8.1)) @@ -584,7 +589,7 @@ importers: packages/typegpu-three: dependencies: three: - specifier: ^0.181.0 + specifier: '>0.126.0' version: 0.181.2 devDependencies: '@typegpu/tgpu-dev-cli': @@ -651,7 +656,7 @@ importers: version: 7.26.5 '@rollup/plugin-virtual': specifier: ^3.0.2 - version: 3.0.2(rollup@4.34.8) + version: 3.0.2(rollup@4.37.0) '@typegpu/tgpu-dev-cli': specifier: workspace:* version: link:../tgpu-dev-cli @@ -677,8 +682,8 @@ importers: specifier: 1.0.0-beta.33 version: 1.0.0-beta.33 rollup: - specifier: 4.34.8 - version: 4.34.8 + specifier: ~4.37.0 + version: 4.37.0 tsup: specifier: catalog:build version: 8.5.0(jiti@2.6.0)(postcss@8.5.6)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) @@ -2192,7 +2197,7 @@ packages: resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: 4.34.8 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2201,7 +2206,7 @@ packages: resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: - rollup: 4.34.8 + rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2210,7 +2215,7 @@ packages: resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: 4.34.8 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2219,7 +2224,7 @@ packages: resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: 4.34.8 + rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2228,7 +2233,7 @@ packages: resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: 4.34.8 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2237,7 +2242,7 @@ packages: resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: 4.34.8 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2246,7 +2251,7 @@ packages: resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: 4.34.8 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2256,96 +2261,196 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.37.0': + resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.34.8': resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.37.0': + resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.34.8': resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.37.0': + resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.34.8': resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.37.0': + resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.34.8': resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.37.0': + resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.34.8': resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.37.0': + resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.34.8': resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.34.8': resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.37.0': + resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.34.8': resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.37.0': + resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} cpu: [loong64] os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.34.8': resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.37.0': + resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.37.0': + resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.34.8': resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.37.0': + resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.34.8': resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.37.0': + resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.34.8': resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.37.0': + resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.34.8': resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.37.0': + resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.34.8': resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.37.0': + resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.34.8': resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.37.0': + resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} + cpu: [x64] + os: [win32] + '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -2541,6 +2646,9 @@ packages: '@types/bun@1.3.1': resolution: {integrity: sha512-4jNMk2/K9YJtfqwoAa28c8wK+T7nvJFOjxI4h/7sORWcypRNxBpr+TPNaCfVWq70tLCJsqoFwcf0oI0JU/fvMQ==} + '@types/bun@1.3.5': + resolution: {integrity: sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w==} + '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} @@ -2969,6 +3077,9 @@ packages: peerDependencies: '@types/react': ^19 + bun-types@1.3.5: + resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==} + bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5342,7 +5453,7 @@ packages: resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} engines: {node: '>=16'} peerDependencies: - rollup: 4.34.8 + rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 rollup@4.34.8: @@ -5350,6 +5461,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.37.0: + resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} @@ -6572,12 +6688,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.2.6(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))': + '@astrojs/mdx@4.2.6(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))': dependencies: '@astrojs/markdown-remark': 6.3.1 '@mdx-js/mdx': 3.1.0(acorn@8.15.0) acorn: 8.15.0 - astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -6633,22 +6749,22 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight-tailwind@4.0.1(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(tailwindcss@4.1.11)': + '@astrojs/starlight-tailwind@4.0.1(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(tailwindcss@4.1.11)': dependencies: - '@astrojs/starlight': 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + '@astrojs/starlight': 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) tailwindcss: 4.1.11 - '@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))': + '@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))': dependencies: '@astrojs/markdown-remark': 6.3.6 - '@astrojs/mdx': 4.2.6(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + '@astrojs/mdx': 4.2.6(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) '@astrojs/sitemap': 3.6.0 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) - astro-expressive-code: 0.41.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + astro-expressive-code: 0.41.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -6671,9 +6787,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/tailwind@6.0.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.11)': + '@astrojs/tailwind@6.0.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@4.1.11)': dependencies: - astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) autoprefixer: 10.4.21(postcss@8.5.3) postcss: 8.5.3 postcss-load-config: 4.0.2(postcss@8.5.3) @@ -7939,9 +8055,9 @@ snapshots: optionalDependencies: rollup: 4.34.8 - '@rollup/plugin-virtual@3.0.2(rollup@4.34.8)': + '@rollup/plugin-virtual@3.0.2(rollup@4.37.0)': optionalDependencies: - rollup: 4.34.8 + rollup: 4.37.0 '@rollup/pluginutils@5.3.0(rollup@4.34.8)': dependencies: @@ -7951,63 +8067,131 @@ snapshots: optionalDependencies: rollup: 4.34.8 + '@rollup/pluginutils@5.3.0(rollup@4.37.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.37.0 + '@rollup/rollup-android-arm-eabi@4.34.8': optional: true + '@rollup/rollup-android-arm-eabi@4.37.0': + optional: true + '@rollup/rollup-android-arm64@4.34.8': optional: true + '@rollup/rollup-android-arm64@4.37.0': + optional: true + '@rollup/rollup-darwin-arm64@4.34.8': optional: true + '@rollup/rollup-darwin-arm64@4.37.0': + optional: true + '@rollup/rollup-darwin-x64@4.34.8': optional: true + '@rollup/rollup-darwin-x64@4.37.0': + optional: true + '@rollup/rollup-freebsd-arm64@4.34.8': optional: true + '@rollup/rollup-freebsd-arm64@4.37.0': + optional: true + '@rollup/rollup-freebsd-x64@4.34.8': optional: true + '@rollup/rollup-freebsd-x64@4.37.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.34.8': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-arm64-gnu@4.37.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.34.8': optional: true + '@rollup/rollup-linux-arm64-musl@4.37.0': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.37.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.37.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.34.8': optional: true + '@rollup/rollup-linux-s390x-gnu@4.37.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.34.8': optional: true + '@rollup/rollup-linux-x64-gnu@4.37.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.34.8': optional: true + '@rollup/rollup-linux-x64-musl@4.37.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.34.8': optional: true + '@rollup/rollup-win32-arm64-msvc@4.37.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.34.8': optional: true + '@rollup/rollup-win32-ia32-msvc@4.37.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.34.8': optional: true + '@rollup/rollup-win32-x64-msvc@4.37.0': + optional: true + '@sec-ant/readable-stream@0.4.1': {} '@shikijs/core@3.12.2': @@ -8234,6 +8418,10 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@types/bun@1.3.5': + dependencies: + bun-types: 1.3.5 + '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 @@ -8591,9 +8779,9 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)): + astro-expressive-code@0.41.2(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)): dependencies: - astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) + astro: 5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1) rehype-expressive-code: 0.41.2 astro-remote@0.3.3: @@ -8612,7 +8800,7 @@ snapshots: '@vtbag/turn-signal': 1.3.1 '@vtbag/utensil-drawer': 1.2.11 - astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): + astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1): dependencies: '@astrojs/compiler': 2.13.0 '@astrojs/internal-helpers': 0.7.4 @@ -8620,7 +8808,7 @@ snapshots: '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 3.0.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.34.8) + '@rollup/pluginutils': 5.3.0(rollup@4.37.0) acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -8822,6 +9010,10 @@ snapshots: '@types/node': 24.10.0 '@types/react': 19.1.8 + bun-types@1.3.5: + dependencies: + '@types/node': 24.10.0 + bundle-require@5.1.0(esbuild@0.25.10): dependencies: esbuild: 0.25.10 @@ -9573,7 +9765,7 @@ snapshots: dependencies: magic-string: 0.30.19 mlly: 1.7.4 - rollup: 4.34.8 + rollup: 4.37.0 flatbuffers@25.9.23: {} @@ -11761,6 +11953,32 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.8 fsevents: 2.3.3 + rollup@4.37.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.37.0 + '@rollup/rollup-android-arm64': 4.37.0 + '@rollup/rollup-darwin-arm64': 4.37.0 + '@rollup/rollup-darwin-x64': 4.37.0 + '@rollup/rollup-freebsd-arm64': 4.37.0 + '@rollup/rollup-freebsd-x64': 4.37.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 + '@rollup/rollup-linux-arm-musleabihf': 4.37.0 + '@rollup/rollup-linux-arm64-gnu': 4.37.0 + '@rollup/rollup-linux-arm64-musl': 4.37.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-musl': 4.37.0 + '@rollup/rollup-linux-s390x-gnu': 4.37.0 + '@rollup/rollup-linux-x64-gnu': 4.37.0 + '@rollup/rollup-linux-x64-musl': 4.37.0 + '@rollup/rollup-win32-arm64-msvc': 4.37.0 + '@rollup/rollup-win32-ia32-msvc': 4.37.0 + '@rollup/rollup-win32-x64-msvc': 4.37.0 + fsevents: 2.3.3 + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: @@ -11908,12 +12126,12 @@ snapshots: stackback@0.0.2: {} - starlight-blog@0.23.2(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)): + starlight-blog@0.23.2(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)): dependencies: '@astrojs/markdown-remark': 6.3.1 - '@astrojs/mdx': 4.2.6(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + '@astrojs/mdx': 4.2.6(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) '@astrojs/rss': 4.0.11 - '@astrojs/starlight': 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + '@astrojs/starlight': 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) astro-remote: 0.3.3 github-slugger: 2.0.0 marked: 15.0.7 @@ -11925,9 +12143,9 @@ snapshots: - astro - supports-color - starlight-typedoc@0.19.0(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(typedoc-plugin-markdown@4.3.0(typedoc@0.27.9(typescript@5.9.3)))(typedoc@0.27.9(typescript@5.9.3)): + starlight-typedoc@0.19.0(@astrojs/starlight@0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)))(typedoc-plugin-markdown@4.3.0(typedoc@0.27.9(typescript@5.9.3)))(typedoc@0.27.9(typescript@5.9.3)): dependencies: - '@astrojs/starlight': 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.34.8)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) + '@astrojs/starlight': 0.36.1(astro@5.14.5(@types/node@24.10.0)(jiti@2.6.0)(lightningcss@1.30.1)(rollup@4.37.0)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)) github-slugger: 2.0.0 typedoc: 0.27.9(typescript@5.9.3) typedoc-plugin-markdown: 4.3.0(typedoc@0.27.9(typescript@5.9.3)) @@ -12459,9 +12677,9 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-imagetools@9.0.0(rollup@4.34.8): + vite-imagetools@9.0.0(rollup@4.37.0): dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.34.8) + '@rollup/pluginutils': 5.3.0(rollup@4.37.0) imagetools-core: 9.0.0 sharp: 0.34.2 transitivePeerDependencies: @@ -12498,7 +12716,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.34.8 + rollup: 4.37.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.0 diff --git a/scripts/spec-report.ts b/scripts/spec-report.ts new file mode 100644 index 0000000000..3ae0a4070a --- /dev/null +++ b/scripts/spec-report.ts @@ -0,0 +1,61 @@ +import * as std from 'typegpu/std'; + +const TYPEGPU_FUNCTIONS = new Set(Object.keys(std)); + +const response = await fetch( + 'https://raw.githubusercontent.com/iwoplaza/wgsl-spec/refs/heads/main/spec/functions.json', +); +const jsonData = await response.json(); +const ALL_SPEC_FUNCTIONS = new Set(Object.keys(jsonData)); + +// EXCLUDED_FUNCTIONS contains WGSL builtin function names that are excluded from the "missing functions" comparison. +// These functions are either not applicable, deprecated, or have special handling in TypeGPU. +const EXCLUDED_FUNCTIONS = new Set([ + 'bitcast', // exists as bitcastU32toF32, bitcastU32toI32, ... + 'array', // exists as d.arrayOf + 'vec2', // exists as d.vec2f, d.vec2i, ... + 'vec3', // exists as d.vec3f, d.vec3i, ... + 'vec4', // exists as d.vec4f, d.vec4i, ... + 'bool', // exists as d.bool + 'f32', // exists as d.f32 + 'f16', // exists as d.f16 + 'i32', // exists as d.i32 + 'u32', // exists as d.u32 + 'mat2x2', // exists as d.mat2x2f + 'mat3x3', // exists as d.mat3x3f + 'mat4x4', // exists as d.mat4x4f +]); + +function isFunctionMissingFromTypegpu(specFn: string): boolean { + if (EXCLUDED_FUNCTIONS.has(specFn)) { + return false; + } + return !TYPEGPU_FUNCTIONS.has(specFn); +} + +console.log('=== WGSL Spec Function Comparison Report ===\n'); + +console.log(`TypeGPU exported functions: ${TYPEGPU_FUNCTIONS.size}`); +console.log(`WGSL spec functions: ${ALL_SPEC_FUNCTIONS.size}`); +console.log(`Excluded from comparison: ${EXCLUDED_FUNCTIONS.size}\n`); + +const missingFunctions = [...ALL_SPEC_FUNCTIONS].filter((fn) => { + return isFunctionMissingFromTypegpu(fn); +}); + +console.log('\n--- Missing WGSL functions in TypeGPU ---'); +if (missingFunctions.length === 0) { + console.log('(none - all WGSL functions are implemented)'); +} else { + const sortedMissing = missingFunctions.sort(); + for (const fn of sortedMissing) { + console.log(` - ${fn}`); + } +} + +console.log('\n=== Summary ==='); +console.log(`TypeGPU implements ${TYPEGPU_FUNCTIONS.size} functions`); +console.log( + `WGSL spec has ${ALL_SPEC_FUNCTIONS.size} functions (excluding ${EXCLUDED_FUNCTIONS.size} special cases)`, +); +console.log(`Missing functions: ${missingFunctions.length}`); diff --git a/tsconfig.json b/tsconfig.json index ffcbb9477e..be14299598 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,7 @@ { - "extends": "./tsconfig.base.json" + "extends": "./tsconfig.base.json", + "compilerOptions": { + "types": ["@types/bun"], + }, + "include": ["./scripts/**/*.ts"], }