This package defines Typescript types (.d.ts
) for the upcoming WebGPU standard.
This package matches the work-in-progress WebGPU API, which is currently unstable!
Use this package to augment the ambient "dom"
type definitions with the new definitions for WebGPU.
This repo also generates typedoc docs here: https://gpuweb.github.io/types
See the TypeScript handbook.
- npm:
npm install --save @webgpu/types
- yarn:
yarn add @webgpu/types
In tsconfig.json
:
{
// ...
"compilerOptions": {
// ...
"typeRoots": [ "./node_modules/@webgpu/types", "./node_modules/@types"]
}
}
In webpack.config.js
add:
"types": ["@webgpu/types"]
(may not be necessary with tsc
config above - untested)
/// <reference types="@webgpu/types" />
Please contribute a PR to add instructions for other setups or improve existing instructions. :)
- Make sure the submodule is checked out:
git submodule update --init
- Pull
gpuweb
changes:pushd gpuweb && git checkout main && git pull && popd
- Install dependencies:
npm ci
- Generate
generated/index.d.ts
:npm run generate
- Open a diff between
generated/index.d.ts
anddist/index.d.ts
. The generated file is tracked by Git so you can see what has changed. Update the latter according to changes from the former. Note thegenerated/
anddist/
files are not the same. See below for intentional differences. - Format the result:
npm run format
Most or all of these should be fixed in the generator over time.
Array
changed toIterable
for WebIDLsequence
s in argument positions.any
changed toobject
for WebIDLobject
.| SharedArrayBuffer
added for[AllowShared] BufferSource
.
The following differences are TODO: should be changed in the final result.
- Deprecated items should be removed.
The following differences will remain.
onuncapturederror
strongly typed.getContext
definitions.GPUExtent3DStrict
andGPUOrigin2DStrict
.
(only for people who have npm publish access)
- One line cmd to copy-n-paste (for ssh git user, and you'd better know what you are doing, if it failed at certain steps, you might need to clean up git tags before trying again)
git checkout main && git pull [email protected]:gpuweb/types.git main && git submodule update --init && npm version patch && git push [email protected]:gpuweb/types.git main --tags && npm publish
- Separate steps (better for publishing for the first time)
- Make sure you are in the upstream repo, not your forked one. And make sure you are synced to latest commit intended for publish
git checkout main
git pull https://github.com/gpuweb/types.git main
- (If you are using HTTPS regularly. You can use remote names like
origin
, just make sure you are referring to the right repo)
- (If you are using HTTPS regularly. You can use remote names like
git submodule update --init
- Create the version tag and commit, and push
npm version patch
git push https://github.com/gpuweb/types.git main --tags
- publish the package
npm publish --otp=<code>
- Replace
<code>
with the one-time password from your authenticator, since two-factors authentication is required to publish. - If you are doing for the first time, you will do
npm adduser
first and it will guide you through adding the npm account.
- Replace
- Make sure you are in the upstream repo, not your forked one. And make sure you are synced to latest commit intended for publish