diff --git a/index.html b/index.html
index 32a4f54..b13b58b 100644
--- a/index.html
+++ b/index.html
@@ -2,12 +2,12 @@
-
+
- Vite + TS
+ Whatever WebGPU
-
+
diff --git a/package.json b/package.json
index 521a880..a9f531d 100644
--- a/package.json
+++ b/package.json
@@ -12,5 +12,9 @@
"prettier": "3.5.3",
"typescript": "~5.7.2",
"vite": "^6.2.0"
+ },
+ "dependencies": {
+ "@webgpu/types": "^0.1.60",
+ "webgpu": "^0.2.11"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ff2bf95..3861770 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,740 +1,594 @@
lockfileVersion: '9.0'
settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
importers:
- .:
- devDependencies:
- prettier:
- specifier: 3.5.3
- version: 3.5.3
- typescript:
- specifier: ~5.7.2
- version: 5.7.3
- vite:
- specifier: ^6.2.0
- version: 6.2.5
+
+ .:
+ dependencies:
+ '@webgpu/types':
+ specifier: ^0.1.60
+ version: 0.1.60
+ webgpu:
+ specifier: ^0.2.11
+ version: 0.2.11
+ devDependencies:
+ prettier:
+ specifier: 3.5.3
+ version: 3.5.3
+ typescript:
+ specifier: ~5.7.2
+ version: 5.7.3
+ vite:
+ specifier: ^6.2.0
+ version: 6.2.5
packages:
- '@esbuild/aix-ppc64@0.25.2':
- resolution:
- {
- integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==,
- }
- engines: { node: '>=18' }
- cpu: [ppc64]
- os: [aix]
- '@esbuild/android-arm64@0.25.2':
- resolution:
- {
- integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==,
- }
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [android]
+ '@esbuild/aix-ppc64@0.25.2':
+ resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
- '@esbuild/android-arm@0.25.2':
- resolution:
- {
- integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==,
- }
- engines: { node: '>=18' }
- cpu: [arm]
- os: [android]
+ '@esbuild/android-arm64@0.25.2':
+ resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
- '@esbuild/android-x64@0.25.2':
- resolution:
- {
- integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [android]
+ '@esbuild/android-arm@0.25.2':
+ resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
- '@esbuild/darwin-arm64@0.25.2':
- resolution:
- {
- integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==,
- }
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [darwin]
+ '@esbuild/android-x64@0.25.2':
+ resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
- '@esbuild/darwin-x64@0.25.2':
- resolution:
- {
- integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [darwin]
+ '@esbuild/darwin-arm64@0.25.2':
+ resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
- '@esbuild/freebsd-arm64@0.25.2':
- resolution:
- {
- integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==,
- }
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [freebsd]
+ '@esbuild/darwin-x64@0.25.2':
+ resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
- '@esbuild/freebsd-x64@0.25.2':
- resolution:
- {
- integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [freebsd]
+ '@esbuild/freebsd-arm64@0.25.2':
+ resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
- '@esbuild/linux-arm64@0.25.2':
- resolution:
- {
- integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==,
- }
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [linux]
+ '@esbuild/freebsd-x64@0.25.2':
+ resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
- '@esbuild/linux-arm@0.25.2':
- resolution:
- {
- integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==,
- }
- engines: { node: '>=18' }
- cpu: [arm]
- os: [linux]
+ '@esbuild/linux-arm64@0.25.2':
+ resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
- '@esbuild/linux-ia32@0.25.2':
- resolution:
- {
- integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==,
- }
- engines: { node: '>=18' }
- cpu: [ia32]
- os: [linux]
+ '@esbuild/linux-arm@0.25.2':
+ resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
- '@esbuild/linux-loong64@0.25.2':
- resolution:
- {
- integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==,
- }
- engines: { node: '>=18' }
- cpu: [loong64]
- os: [linux]
+ '@esbuild/linux-ia32@0.25.2':
+ resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
- '@esbuild/linux-mips64el@0.25.2':
- resolution:
- {
- integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==,
- }
- engines: { node: '>=18' }
- cpu: [mips64el]
- os: [linux]
+ '@esbuild/linux-loong64@0.25.2':
+ resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
- '@esbuild/linux-ppc64@0.25.2':
- resolution:
- {
- integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==,
- }
- engines: { node: '>=18' }
- cpu: [ppc64]
- os: [linux]
+ '@esbuild/linux-mips64el@0.25.2':
+ resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
- '@esbuild/linux-riscv64@0.25.2':
- resolution:
- {
- integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==,
- }
- engines: { node: '>=18' }
- cpu: [riscv64]
- os: [linux]
+ '@esbuild/linux-ppc64@0.25.2':
+ resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
- '@esbuild/linux-s390x@0.25.2':
- resolution:
- {
- integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==,
- }
- engines: { node: '>=18' }
- cpu: [s390x]
- os: [linux]
+ '@esbuild/linux-riscv64@0.25.2':
+ resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
- '@esbuild/linux-x64@0.25.2':
- resolution:
- {
- integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [linux]
+ '@esbuild/linux-s390x@0.25.2':
+ resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
- '@esbuild/netbsd-arm64@0.25.2':
- resolution:
- {
- integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==,
- }
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [netbsd]
+ '@esbuild/linux-x64@0.25.2':
+ resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
- '@esbuild/netbsd-x64@0.25.2':
- resolution:
- {
- integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [netbsd]
+ '@esbuild/netbsd-arm64@0.25.2':
+ resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
- '@esbuild/openbsd-arm64@0.25.2':
- resolution:
- {
- integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==,
- }
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [openbsd]
+ '@esbuild/netbsd-x64@0.25.2':
+ resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
- '@esbuild/openbsd-x64@0.25.2':
- resolution:
- {
- integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [openbsd]
+ '@esbuild/openbsd-arm64@0.25.2':
+ resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
- '@esbuild/sunos-x64@0.25.2':
- resolution:
- {
- integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [sunos]
+ '@esbuild/openbsd-x64@0.25.2':
+ resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
- '@esbuild/win32-arm64@0.25.2':
- resolution:
- {
- integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==,
- }
- engines: { node: '>=18' }
- cpu: [arm64]
- os: [win32]
+ '@esbuild/sunos-x64@0.25.2':
+ resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
- '@esbuild/win32-ia32@0.25.2':
- resolution:
- {
- integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==,
- }
- engines: { node: '>=18' }
- cpu: [ia32]
- os: [win32]
+ '@esbuild/win32-arm64@0.25.2':
+ resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
- '@esbuild/win32-x64@0.25.2':
- resolution:
- {
- integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==,
- }
- engines: { node: '>=18' }
- cpu: [x64]
- os: [win32]
+ '@esbuild/win32-ia32@0.25.2':
+ resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
- '@rollup/rollup-android-arm-eabi@4.39.0':
- resolution:
- {
- integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==,
- }
- cpu: [arm]
- os: [android]
+ '@esbuild/win32-x64@0.25.2':
+ resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
- '@rollup/rollup-android-arm64@4.39.0':
- resolution:
- {
- integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==,
- }
- cpu: [arm64]
- os: [android]
+ '@rollup/rollup-android-arm-eabi@4.39.0':
+ resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==}
+ cpu: [arm]
+ os: [android]
- '@rollup/rollup-darwin-arm64@4.39.0':
- resolution:
- {
- integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==,
- }
- cpu: [arm64]
- os: [darwin]
+ '@rollup/rollup-android-arm64@4.39.0':
+ resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==}
+ cpu: [arm64]
+ os: [android]
- '@rollup/rollup-darwin-x64@4.39.0':
- resolution:
- {
- integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==,
- }
- cpu: [x64]
- os: [darwin]
+ '@rollup/rollup-darwin-arm64@4.39.0':
+ resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==}
+ cpu: [arm64]
+ os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.39.0':
- resolution:
- {
- integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==,
- }
- cpu: [arm64]
- os: [freebsd]
+ '@rollup/rollup-darwin-x64@4.39.0':
+ resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==}
+ cpu: [x64]
+ os: [darwin]
- '@rollup/rollup-freebsd-x64@4.39.0':
- resolution:
- {
- integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==,
- }
- cpu: [x64]
- os: [freebsd]
+ '@rollup/rollup-freebsd-arm64@4.39.0':
+ resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==}
+ cpu: [arm64]
+ os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
- resolution:
- {
- integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==,
- }
- cpu: [arm]
- os: [linux]
+ '@rollup/rollup-freebsd-x64@4.39.0':
+ resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==}
+ cpu: [x64]
+ os: [freebsd]
- '@rollup/rollup-linux-arm-musleabihf@4.39.0':
- resolution:
- {
- integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==,
- }
- cpu: [arm]
- os: [linux]
+ '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
+ resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==}
+ cpu: [arm]
+ os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.39.0':
- resolution:
- {
- integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==,
- }
- cpu: [arm64]
- os: [linux]
+ '@rollup/rollup-linux-arm-musleabihf@4.39.0':
+ resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==}
+ cpu: [arm]
+ os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.39.0':
- resolution:
- {
- integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==,
- }
- cpu: [arm64]
- os: [linux]
+ '@rollup/rollup-linux-arm64-gnu@4.39.0':
+ resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==}
+ cpu: [arm64]
+ os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
- resolution:
- {
- integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==,
- }
- cpu: [loong64]
- os: [linux]
+ '@rollup/rollup-linux-arm64-musl@4.39.0':
+ resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==}
+ cpu: [arm64]
+ os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
- resolution:
- {
- integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==,
- }
- cpu: [ppc64]
- os: [linux]
+ '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
+ resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==}
+ cpu: [loong64]
+ os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.39.0':
- resolution:
- {
- integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==,
- }
- cpu: [riscv64]
- os: [linux]
+ '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
+ resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==}
+ cpu: [ppc64]
+ os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.39.0':
- resolution:
- {
- integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==,
- }
- cpu: [riscv64]
- os: [linux]
+ '@rollup/rollup-linux-riscv64-gnu@4.39.0':
+ resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==}
+ cpu: [riscv64]
+ os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.39.0':
- resolution:
- {
- integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==,
- }
- cpu: [s390x]
- os: [linux]
+ '@rollup/rollup-linux-riscv64-musl@4.39.0':
+ resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==}
+ cpu: [riscv64]
+ os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.39.0':
- resolution:
- {
- integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==,
- }
- cpu: [x64]
- os: [linux]
+ '@rollup/rollup-linux-s390x-gnu@4.39.0':
+ resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==}
+ cpu: [s390x]
+ os: [linux]
- '@rollup/rollup-linux-x64-musl@4.39.0':
- resolution:
- {
- integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==,
- }
- cpu: [x64]
- os: [linux]
+ '@rollup/rollup-linux-x64-gnu@4.39.0':
+ resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==}
+ cpu: [x64]
+ os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.39.0':
- resolution:
- {
- integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==,
- }
- cpu: [arm64]
- os: [win32]
+ '@rollup/rollup-linux-x64-musl@4.39.0':
+ resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==}
+ cpu: [x64]
+ os: [linux]
- '@rollup/rollup-win32-ia32-msvc@4.39.0':
- resolution:
- {
- integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==,
- }
- cpu: [ia32]
- os: [win32]
+ '@rollup/rollup-win32-arm64-msvc@4.39.0':
+ resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==}
+ cpu: [arm64]
+ os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.39.0':
- resolution:
- {
- integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==,
- }
- cpu: [x64]
- os: [win32]
+ '@rollup/rollup-win32-ia32-msvc@4.39.0':
+ resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==}
+ cpu: [ia32]
+ os: [win32]
- '@types/estree@1.0.7':
- resolution:
- {
- integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==,
- }
+ '@rollup/rollup-win32-x64-msvc@4.39.0':
+ resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==}
+ cpu: [x64]
+ os: [win32]
- esbuild@0.25.2:
- resolution:
- {
- integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==,
- }
- engines: { node: '>=18' }
- hasBin: true
+ '@types/estree@1.0.7':
+ resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
- fsevents@2.3.3:
- resolution:
- {
- integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
- }
- engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
- os: [darwin]
+ '@webgpu/types@0.1.60':
+ resolution: {integrity: sha512-8B/tdfRFKdrnejqmvq95ogp8tf52oZ51p3f4QD5m5Paey/qlX4Rhhy5Y8tgFMi7Ms70HzcMMw3EQjH/jdhTwlA==}
- nanoid@3.3.11:
- resolution:
- {
- integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==,
- }
- engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
- hasBin: true
+ esbuild@0.25.2:
+ resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==}
+ engines: {node: '>=18'}
+ hasBin: true
- picocolors@1.1.1:
- resolution:
- {
- integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
- }
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
- postcss@8.5.3:
- resolution:
- {
- integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==,
- }
- engines: { node: ^10 || ^12 || >=14 }
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
- prettier@3.5.3:
- resolution:
- {
- integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==,
- }
- engines: { node: '>=14' }
- hasBin: true
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- rollup@4.39.0:
- resolution:
- {
- integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==,
- }
- engines: { node: '>=18.0.0', npm: '>=8.0.0' }
- hasBin: true
+ postcss@8.5.3:
+ resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+ engines: {node: ^10 || ^12 || >=14}
- source-map-js@1.2.1:
- resolution:
- {
- integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
- }
- engines: { node: '>=0.10.0' }
+ prettier@3.5.3:
+ resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
+ engines: {node: '>=14'}
+ hasBin: true
- typescript@5.7.3:
- resolution:
- {
- integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==,
- }
- engines: { node: '>=14.17' }
- hasBin: true
+ rollup@4.39.0:
+ resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
- vite@6.2.5:
- resolution:
- {
- integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==,
- }
- engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 }
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
- jiti: '>=1.21.0'
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ typescript@5.7.3:
+ resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ vite@6.2.5:
+ resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ jiti: '>=1.21.0'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ webgpu@0.2.11:
+ resolution: {integrity: sha512-eF6pVzdtqmIhREDNkZWMzktHoeS9jIa649wrNvc9/ZDsqC8WBuTpS8af1UoLbQzyvCn34IsHPqMCxG2uTe7lOg==}
snapshots:
- '@esbuild/aix-ppc64@0.25.2':
- optional: true
- '@esbuild/android-arm64@0.25.2':
- optional: true
+ '@esbuild/aix-ppc64@0.25.2':
+ optional: true
- '@esbuild/android-arm@0.25.2':
- optional: true
+ '@esbuild/android-arm64@0.25.2':
+ optional: true
- '@esbuild/android-x64@0.25.2':
- optional: true
+ '@esbuild/android-arm@0.25.2':
+ optional: true
- '@esbuild/darwin-arm64@0.25.2':
- optional: true
+ '@esbuild/android-x64@0.25.2':
+ optional: true
- '@esbuild/darwin-x64@0.25.2':
- optional: true
+ '@esbuild/darwin-arm64@0.25.2':
+ optional: true
- '@esbuild/freebsd-arm64@0.25.2':
- optional: true
+ '@esbuild/darwin-x64@0.25.2':
+ optional: true
- '@esbuild/freebsd-x64@0.25.2':
- optional: true
+ '@esbuild/freebsd-arm64@0.25.2':
+ optional: true
- '@esbuild/linux-arm64@0.25.2':
- optional: true
+ '@esbuild/freebsd-x64@0.25.2':
+ optional: true
- '@esbuild/linux-arm@0.25.2':
- optional: true
+ '@esbuild/linux-arm64@0.25.2':
+ optional: true
- '@esbuild/linux-ia32@0.25.2':
- optional: true
+ '@esbuild/linux-arm@0.25.2':
+ optional: true
- '@esbuild/linux-loong64@0.25.2':
- optional: true
+ '@esbuild/linux-ia32@0.25.2':
+ optional: true
- '@esbuild/linux-mips64el@0.25.2':
- optional: true
+ '@esbuild/linux-loong64@0.25.2':
+ optional: true
- '@esbuild/linux-ppc64@0.25.2':
- optional: true
+ '@esbuild/linux-mips64el@0.25.2':
+ optional: true
- '@esbuild/linux-riscv64@0.25.2':
- optional: true
+ '@esbuild/linux-ppc64@0.25.2':
+ optional: true
- '@esbuild/linux-s390x@0.25.2':
- optional: true
+ '@esbuild/linux-riscv64@0.25.2':
+ optional: true
- '@esbuild/linux-x64@0.25.2':
- optional: true
+ '@esbuild/linux-s390x@0.25.2':
+ optional: true
- '@esbuild/netbsd-arm64@0.25.2':
- optional: true
+ '@esbuild/linux-x64@0.25.2':
+ optional: true
- '@esbuild/netbsd-x64@0.25.2':
- optional: true
+ '@esbuild/netbsd-arm64@0.25.2':
+ optional: true
- '@esbuild/openbsd-arm64@0.25.2':
- optional: true
+ '@esbuild/netbsd-x64@0.25.2':
+ optional: true
- '@esbuild/openbsd-x64@0.25.2':
- optional: true
+ '@esbuild/openbsd-arm64@0.25.2':
+ optional: true
- '@esbuild/sunos-x64@0.25.2':
- optional: true
+ '@esbuild/openbsd-x64@0.25.2':
+ optional: true
- '@esbuild/win32-arm64@0.25.2':
- optional: true
+ '@esbuild/sunos-x64@0.25.2':
+ optional: true
- '@esbuild/win32-ia32@0.25.2':
- optional: true
+ '@esbuild/win32-arm64@0.25.2':
+ optional: true
- '@esbuild/win32-x64@0.25.2':
- optional: true
+ '@esbuild/win32-ia32@0.25.2':
+ optional: true
- '@rollup/rollup-android-arm-eabi@4.39.0':
- optional: true
+ '@esbuild/win32-x64@0.25.2':
+ optional: true
- '@rollup/rollup-android-arm64@4.39.0':
- optional: true
+ '@rollup/rollup-android-arm-eabi@4.39.0':
+ optional: true
- '@rollup/rollup-darwin-arm64@4.39.0':
- optional: true
+ '@rollup/rollup-android-arm64@4.39.0':
+ optional: true
- '@rollup/rollup-darwin-x64@4.39.0':
- optional: true
+ '@rollup/rollup-darwin-arm64@4.39.0':
+ optional: true
- '@rollup/rollup-freebsd-arm64@4.39.0':
- optional: true
+ '@rollup/rollup-darwin-x64@4.39.0':
+ optional: true
- '@rollup/rollup-freebsd-x64@4.39.0':
- optional: true
+ '@rollup/rollup-freebsd-arm64@4.39.0':
+ optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
- optional: true
+ '@rollup/rollup-freebsd-x64@4.39.0':
+ optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.39.0':
- optional: true
+ '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
+ optional: true
- '@rollup/rollup-linux-arm64-gnu@4.39.0':
- optional: true
+ '@rollup/rollup-linux-arm-musleabihf@4.39.0':
+ optional: true
- '@rollup/rollup-linux-arm64-musl@4.39.0':
- optional: true
+ '@rollup/rollup-linux-arm64-gnu@4.39.0':
+ optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
- optional: true
+ '@rollup/rollup-linux-arm64-musl@4.39.0':
+ optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
- optional: true
+ '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
+ optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.39.0':
- optional: true
+ '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
+ optional: true
- '@rollup/rollup-linux-riscv64-musl@4.39.0':
- optional: true
+ '@rollup/rollup-linux-riscv64-gnu@4.39.0':
+ optional: true
- '@rollup/rollup-linux-s390x-gnu@4.39.0':
- optional: true
+ '@rollup/rollup-linux-riscv64-musl@4.39.0':
+ optional: true
- '@rollup/rollup-linux-x64-gnu@4.39.0':
- optional: true
+ '@rollup/rollup-linux-s390x-gnu@4.39.0':
+ optional: true
- '@rollup/rollup-linux-x64-musl@4.39.0':
- optional: true
+ '@rollup/rollup-linux-x64-gnu@4.39.0':
+ optional: true
- '@rollup/rollup-win32-arm64-msvc@4.39.0':
- optional: true
+ '@rollup/rollup-linux-x64-musl@4.39.0':
+ optional: true
- '@rollup/rollup-win32-ia32-msvc@4.39.0':
- optional: true
+ '@rollup/rollup-win32-arm64-msvc@4.39.0':
+ optional: true
- '@rollup/rollup-win32-x64-msvc@4.39.0':
- optional: true
+ '@rollup/rollup-win32-ia32-msvc@4.39.0':
+ optional: true
- '@types/estree@1.0.7': {}
+ '@rollup/rollup-win32-x64-msvc@4.39.0':
+ optional: true
- esbuild@0.25.2:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.2
- '@esbuild/android-arm': 0.25.2
- '@esbuild/android-arm64': 0.25.2
- '@esbuild/android-x64': 0.25.2
- '@esbuild/darwin-arm64': 0.25.2
- '@esbuild/darwin-x64': 0.25.2
- '@esbuild/freebsd-arm64': 0.25.2
- '@esbuild/freebsd-x64': 0.25.2
- '@esbuild/linux-arm': 0.25.2
- '@esbuild/linux-arm64': 0.25.2
- '@esbuild/linux-ia32': 0.25.2
- '@esbuild/linux-loong64': 0.25.2
- '@esbuild/linux-mips64el': 0.25.2
- '@esbuild/linux-ppc64': 0.25.2
- '@esbuild/linux-riscv64': 0.25.2
- '@esbuild/linux-s390x': 0.25.2
- '@esbuild/linux-x64': 0.25.2
- '@esbuild/netbsd-arm64': 0.25.2
- '@esbuild/netbsd-x64': 0.25.2
- '@esbuild/openbsd-arm64': 0.25.2
- '@esbuild/openbsd-x64': 0.25.2
- '@esbuild/sunos-x64': 0.25.2
- '@esbuild/win32-arm64': 0.25.2
- '@esbuild/win32-ia32': 0.25.2
- '@esbuild/win32-x64': 0.25.2
+ '@types/estree@1.0.7': {}
- fsevents@2.3.3:
- optional: true
+ '@webgpu/types@0.1.60': {}
- nanoid@3.3.11: {}
+ esbuild@0.25.2:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.2
+ '@esbuild/android-arm': 0.25.2
+ '@esbuild/android-arm64': 0.25.2
+ '@esbuild/android-x64': 0.25.2
+ '@esbuild/darwin-arm64': 0.25.2
+ '@esbuild/darwin-x64': 0.25.2
+ '@esbuild/freebsd-arm64': 0.25.2
+ '@esbuild/freebsd-x64': 0.25.2
+ '@esbuild/linux-arm': 0.25.2
+ '@esbuild/linux-arm64': 0.25.2
+ '@esbuild/linux-ia32': 0.25.2
+ '@esbuild/linux-loong64': 0.25.2
+ '@esbuild/linux-mips64el': 0.25.2
+ '@esbuild/linux-ppc64': 0.25.2
+ '@esbuild/linux-riscv64': 0.25.2
+ '@esbuild/linux-s390x': 0.25.2
+ '@esbuild/linux-x64': 0.25.2
+ '@esbuild/netbsd-arm64': 0.25.2
+ '@esbuild/netbsd-x64': 0.25.2
+ '@esbuild/openbsd-arm64': 0.25.2
+ '@esbuild/openbsd-x64': 0.25.2
+ '@esbuild/sunos-x64': 0.25.2
+ '@esbuild/win32-arm64': 0.25.2
+ '@esbuild/win32-ia32': 0.25.2
+ '@esbuild/win32-x64': 0.25.2
- picocolors@1.1.1: {}
+ fsevents@2.3.3:
+ optional: true
- postcss@8.5.3:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
+ nanoid@3.3.11: {}
- prettier@3.5.3: {}
+ picocolors@1.1.1: {}
- rollup@4.39.0:
- dependencies:
- '@types/estree': 1.0.7
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.39.0
- '@rollup/rollup-android-arm64': 4.39.0
- '@rollup/rollup-darwin-arm64': 4.39.0
- '@rollup/rollup-darwin-x64': 4.39.0
- '@rollup/rollup-freebsd-arm64': 4.39.0
- '@rollup/rollup-freebsd-x64': 4.39.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.39.0
- '@rollup/rollup-linux-arm-musleabihf': 4.39.0
- '@rollup/rollup-linux-arm64-gnu': 4.39.0
- '@rollup/rollup-linux-arm64-musl': 4.39.0
- '@rollup/rollup-linux-loongarch64-gnu': 4.39.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0
- '@rollup/rollup-linux-riscv64-gnu': 4.39.0
- '@rollup/rollup-linux-riscv64-musl': 4.39.0
- '@rollup/rollup-linux-s390x-gnu': 4.39.0
- '@rollup/rollup-linux-x64-gnu': 4.39.0
- '@rollup/rollup-linux-x64-musl': 4.39.0
- '@rollup/rollup-win32-arm64-msvc': 4.39.0
- '@rollup/rollup-win32-ia32-msvc': 4.39.0
- '@rollup/rollup-win32-x64-msvc': 4.39.0
- fsevents: 2.3.3
+ postcss@8.5.3:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
- source-map-js@1.2.1: {}
+ prettier@3.5.3: {}
- typescript@5.7.3: {}
+ rollup@4.39.0:
+ dependencies:
+ '@types/estree': 1.0.7
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.39.0
+ '@rollup/rollup-android-arm64': 4.39.0
+ '@rollup/rollup-darwin-arm64': 4.39.0
+ '@rollup/rollup-darwin-x64': 4.39.0
+ '@rollup/rollup-freebsd-arm64': 4.39.0
+ '@rollup/rollup-freebsd-x64': 4.39.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.39.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.39.0
+ '@rollup/rollup-linux-arm64-gnu': 4.39.0
+ '@rollup/rollup-linux-arm64-musl': 4.39.0
+ '@rollup/rollup-linux-loongarch64-gnu': 4.39.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.39.0
+ '@rollup/rollup-linux-riscv64-musl': 4.39.0
+ '@rollup/rollup-linux-s390x-gnu': 4.39.0
+ '@rollup/rollup-linux-x64-gnu': 4.39.0
+ '@rollup/rollup-linux-x64-musl': 4.39.0
+ '@rollup/rollup-win32-arm64-msvc': 4.39.0
+ '@rollup/rollup-win32-ia32-msvc': 4.39.0
+ '@rollup/rollup-win32-x64-msvc': 4.39.0
+ fsevents: 2.3.3
- vite@6.2.5:
- dependencies:
- esbuild: 0.25.2
- postcss: 8.5.3
- rollup: 4.39.0
- optionalDependencies:
- fsevents: 2.3.3
+ source-map-js@1.2.1: {}
+
+ typescript@5.7.3: {}
+
+ vite@6.2.5:
+ dependencies:
+ esbuild: 0.25.2
+ postcss: 8.5.3
+ rollup: 4.39.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ webgpu@0.2.11:
+ dependencies:
+ '@webgpu/types': 0.1.60
diff --git a/public/vite.svg b/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/webgpu.svg b/public/webgpu.svg
new file mode 100644
index 0000000..127ac3e
--- /dev/null
+++ b/public/webgpu.svg
@@ -0,0 +1,45 @@
+
diff --git a/src/main.ts b/src/main.ts
index 2508e6c..257e79d 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1 +1,86 @@
import "./style.css"
+
+async function init() {
+ const canvas = document.querySelector("#canvas")
+ if (!canvas) {
+ throw new Error("Canvas element not found")
+ }
+ if (!navigator.gpu) {
+ throw new Error("WebGPU not supported on this browser.")
+ }
+
+ const adapter = await navigator.gpu.requestAdapter()
+ if (!adapter) {
+ throw new Error("No appropriate GPUAdapter found.")
+ }
+
+ const context = canvas.getContext("webgpu")
+ if (!context) {
+ throw new Error("Failed to get WebGPU context.")
+ }
+
+ const device = await adapter.requestDevice()
+ const canvasFormat = navigator.gpu.getPreferredCanvasFormat()
+ context.configure({ device, format: canvasFormat })
+
+ const encoder = device.createCommandEncoder()
+
+ const vertexBufferLayout = {
+ arrayStride: 8,
+ attributes: [
+ {
+ format: "float32x2" as GPUVertexFormat,
+ offset: 0,
+ shaderLocation: 0,
+ },
+ ],
+ }
+ const cellShaderModule = device.createShaderModule({
+ label: "Cell shader",
+ code: (await import("./shaders/cell.wgsl?raw")).default,
+ })
+ const cellPipeline = device.createRenderPipeline({
+ label: "Cell pipeline",
+ layout: "auto",
+ vertex: {
+ module: cellShaderModule,
+ entryPoint: "vertexMain",
+ buffers: [vertexBufferLayout],
+ },
+ fragment: {
+ module: cellShaderModule,
+ entryPoint: "fragmentMain",
+ targets: [{ format: canvasFormat }],
+ },
+ })
+
+ const vertices = new Float32Array([
+ -0.8, -0.8, 0.8, -0.8, 0.8, 0.8, -0.8, -0.8, 0.8, 0.8, -0.8, 0.8,
+ ])
+ const vertexBuffer = device.createBuffer({
+ label: "Cell vertices",
+ size: vertices.byteLength,
+ usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
+ })
+ device.queue.writeBuffer(vertexBuffer, 0, vertices)
+
+ const pass = encoder.beginRenderPass({
+ colorAttachments: [
+ {
+ view: context.getCurrentTexture().createView(),
+ loadOp: "clear",
+ clearValue: [0.0, 0.0, 0.4, 1.0],
+ storeOp: "store",
+ },
+ ],
+ })
+ pass.setPipeline(cellPipeline)
+ pass.setVertexBuffer(0, vertexBuffer)
+ pass.draw(vertices.length / 2)
+ pass.end()
+ device.queue.submit([encoder.finish()])
+}
+
+init().catch((error) => {
+ console.error("Failed to initialize the application:", error)
+})
diff --git a/src/shaders/cell.wgsl b/src/shaders/cell.wgsl
new file mode 100644
index 0000000..de62aba
--- /dev/null
+++ b/src/shaders/cell.wgsl
@@ -0,0 +1,9 @@
+@vertex
+fn vertexMain(@location(0) pos: vec2f) -> @builtin(position) vec4f {
+ return vec4f(pos, 0, 1);
+}
+
+@fragment
+fn fragmentMain() -> @location(0) vec4f {
+ return vec4f(1, 0, 0, 1);
+}
diff --git a/src/style.css b/src/style.css
index b5c169a..e83c9a1 100644
--- a/src/style.css
+++ b/src/style.css
@@ -1,96 +1,15 @@
-:root {
- font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- font-weight: 400;
-
- color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #242424;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
-}
-a:hover {
- color: #535bf2;
-}
-
body {
margin: 0;
+ padding: 0;
display: flex;
- place-items: center;
- min-width: 320px;
- min-height: 100vh;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+ background-color: #222;
}
-h1 {
- font-size: 3.2em;
- line-height: 1.1;
-}
-
-#app {
- max-width: 1280px;
- margin: 0 auto;
- padding: 2rem;
- text-align: center;
-}
-
-.logo {
- height: 6em;
- padding: 1.5em;
- will-change: filter;
- transition: filter 300ms;
-}
-.logo:hover {
- filter: drop-shadow(0 0 2em #646cffaa);
-}
-.logo.vanilla:hover {
- filter: drop-shadow(0 0 2em #3178c6aa);
-}
-
-.card {
- padding: 2em;
-}
-
-.read-the-docs {
- color: #888;
-}
-
-button {
- border-radius: 8px;
- border: 1px solid transparent;
- padding: 0.6em 1.2em;
- font-size: 1em;
- font-weight: 500;
- font-family: inherit;
- background-color: #1a1a1a;
- cursor: pointer;
- transition: border-color 0.25s;
-}
-button:hover {
- border-color: #646cff;
-}
-button:focus,
-button:focus-visible {
- outline: 4px auto -webkit-focus-ring-color;
-}
-
-@media (prefers-color-scheme: light) {
- :root {
- color: #213547;
- background-color: #ffffff;
- }
- a:hover {
- color: #747bff;
- }
- button {
- background-color: #f9f9f9;
- }
+canvas {
+ width: 512px;
+ height: 512px;
+ display: block;
}
diff --git a/tsconfig.json b/tsconfig.json
index 1aeeb8b..59c0d7c 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -18,7 +18,8 @@
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
- "noUncheckedSideEffectImports": true
+ "noUncheckedSideEffectImports": true,
+ "types": ["@webgpu/types"]
},
"include": ["src"]
}