Socket
Book a DemoInstallSign in
Socket

webgl-strict-types

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webgl-strict-types

Strict TypeScript definitions for WebGL 1 & 2.

latest
Source
npmnpm
Version
1.0.5
Version published
Maintainers
1
Created
Source

webgl-strict-types

Strict types for WebGL and WebGL 2.0.

The included TypeScript typings for WebGL type all enum parameters as generic GLenum = number, as indeed does the specification. This is too broad in basically all cases, for example, bindRenderbuffer(target: GLenum, buffer: WebGLRenderbuffer | null) accepts any number as target when in fact gl.RENDERBUFFER is the only valid value.

A number of other cases can also be modelled more accurately, such as literal number types for some parameters, as well as preventing WebGLObject types (such as WebGLBuffer and WebGLRenderbuffer) from being assignable to each other.

Installation

npm install -D webgl-strict-types

Usage

You need to explicitly include the types in your compilation. Use a triple slash statement:

/// <reference path="node_modules/webgl-strict-types/index.d.ts" />

Alternatively, include them in your tsconfig:

// tsconfig.json
{
    includes: [
        'node_modules/webgl-strict-types/index.d.ts'
    ]
}

As TypeScript already comes with (less strict) typings for WebGL/WebGL2, and this can't override the existing typings, you need to cast the context explicitly:

const gl = canvas.getContext('webgl') as any as WebGLRenderingContextStrict;

// arrayBufferBinding is correctly inferred to be a WebGLBuffer
const arrayBufferBinding = gl.getParameter(gl.ARRAY_BUFFER_BINDING);

// ERROR: Argument of type 'GLenum<"ARRAY_BUFFER">' is not assignable to parameter of type 'GLenum<"FRAMEBUFFER">'.
gl.bindFramebuffer(gl.ARRAY_BUFFER, null)

// You can use the defined types as follows:
import GL = WebGLRenderingContextStrict;
const WGL = WebGLRenderingContext as any as WebGLRenderingContextStrict.Constants;
const bufferTarget: GL.BufferTarget = gl.ARRAY_BUFFER;
const framebufferTarget: GL['FRAMEBUFFER'] = WGL.FRAMEBUFFER;

// Without this lib, not an error:
const webGLBuffer: WebGLBuffer = gl.createRenderbuffer();

See the definition files webgl.d.ts and webgl2.d.ts for all available types.

License

MIT

Keywords

TypeScript

FAQs

Package last updated on 27 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts