Giter VIP home page Giter VIP logo

typescript-dom-lib-generator's Introduction

TypeScript and JavaScript lib generator

This tool is used to generate the web-based lib.dom.d.ts file which is included with TypeScript releases, and as the @types/web package.

Why is my fancy API still not available here?

A feature needs to be supported by two or more major browser engines to be included here, to make sure there is a good consensus among vendors: Gecko (Firefox), Blink (Chrome/Edge), and WebKit (Safari).

If the condition is met but still is not available here, first check the contribution guidelines below and then please file an issue.

Build Instructions

To get things setup:

npm install

To generate the .d.ts files

npm run build

To test:

npm run test

@types/[lib] to TypeScript Versions

@types/[lib] version TypeScript Version Minimum TypeScript Support
@types/web 0.0.1 ~4.3 4.4
@types/web 0.0.2 ~4.4 beta 4.4
@types/web 0.0.25 4.4 4.4
@types/web 0.0.28 4.5 beta 4.4
@types/web 0.0.37 4.5 rc 4.4
@types/web 0.0.37 4.5 4.4
@types/web 0.0.50 4.6 beta 4.4
@types/web 0.0.51 4.6 rc 4.4
@types/web 0.0.51 4.6 4.4
@types/web 0.0.61 4.7 beta 4.4
@types/web 0.0.61 4.7 rc 4.4
@types/web 0.0.61 4.7 4.4
@types/web 0.0.68 4.8 beta 4.4
@types/web 0.0.69 4.8 rc 4.4
@types/web 0.0.69 4.8 4.4
@types/web 0.0.76 4.9 4.4

@types/[lib] Minimum Target

The libraries available on @types/ like @types/web require a "target" of ES6 or above, because iterator APIs are included.

Contribution Guidelines

The files in the baselines/ directory from the TypeScript repo are used as baselines. For each pull request, we will run the script and compare the generated files with the baseline files. In order to make the tests pass, please update the baseline as well in any pull requests.

When the type is missing

It's possible that the automated algorithm decided that it's not well supported by browsers and thus removed it. Say we want to add a new interface named Foo. Check if there is a document about that interface in MDN. If there is, see the browser compatibility section and check whether it's supported by two or more browser engines. (Note that Chromium-based browsers use the same browser engine and thus support from them counts as a single support.)

If all the conditions are fulfilled, it could be that the type is incorrectly removed by inputfiles/removedTypes.jsonc. Try finding and removing the relevant item there and run npm run build && npm run baseline-accept.

If conditions are not fulfilled but you think MDN is wrong, please file an issue at https://github.com/mdn/browser-compat-data/issues/. The type will be automatically added in a few weeks when MDN fixes their data.

When the type exists but is wrong

It's possible that the type is too specific or too general. First you need to check whether inputfiles/overridingTypes.jsonc or inputfiles/addedTypes.jsonc have a relevant item, which can be fixed if exists. If they don't, add one in overridingTypes.jsonc. Run npm run build && npm run baseline-accept to make sure the resulting changes are what you want.

If you are familiar with Web IDL, you may also want to check whether the upstream IDL itself can be made more specific. Doing so will reduce the need for manual overrides in this repository and thus can be more helpful.

This repo

Code Structure

  • src/build.ts: handles the emitting of the .d.ts files.
  • src/test.ts: verifies the output by comparing the generated/ and baseline/ contents.

Input Files

  • mdn/apiDescriptions.json: a JSON file generated by fetching API descriptions from MDN. Do not edit this file.
  • addedTypes.jsonc: types that should exist but are missing from the spec data.
  • overridingTypes.jsonc: types that are defined in the spec but have TypeScript-friendly modifications in the json files.
  • removedTypes.jsonc: types that are defined in the spec but should be removed.
  • comments.json: comment strings to be embedded in the generated .js files.
  • deprecatedMessage.json: the reason why one type is deprecated. The reason why it is a separate file rather than merge in comment.json is mdn/apiDescriptions.json would also possibly be deprecated.

Deployment to TypeScript

To migrate the *.d.ts files into TypeScript:

  1. Trigger the workflow here - this will send a PR to TypeScript under your alias.

  2. Update the README table with the mappings for versions in the @types/[lib]. E.g. TS 4.5 -> @types/web 0.0.23. Find that number here: https://www.npmjs.com/package/@types/web

  3. Generate a CHANGELOG for the releases:

    #                       lib        from  to
    npm run ts-changelog -- @types/web 0.0.2 0.0.23

    You might need to run git pull origin main --tags to run this ^

  4. Add the CHANGELOG to the release issue

typescript-dom-lib-generator's People

Contributors

43081j avatar a-tarasyuk avatar danielrosenwasser avatar dependabot[bot] avatar fabianopb avatar falsandtru avatar franklinwhale avatar github-actions[bot] avatar irrationalrock avatar jthoms1 avatar jun-sheaf avatar lankaapura avatar linusu avatar mattiasbuelens avatar mhegazy avatar ncoley avatar nissy-dev avatar nkemnitz avatar orta avatar plantain-00 avatar rohitverma007 avatar rreverser avatar sandersn avatar saschanaz avatar shuirutian avatar timocov avatar typescript-bot avatar vincentbel avatar yuichinukiyama avatar zhengbli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

typescript-dom-lib-generator's Issues

"elements" missing from HTMLFieldSetElement

https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement#Specifications

// "Property 'elements' does not exist on type 'HTMLFieldSetElement'."
HTMLFieldSetElement.prototype.elements;

// (property) HTMLFormElement.elements: HTMLFormControlsCollection
// Retrieves a collection, in source order, of all controls in a given form.
HTMLFormElement.prototype.elements;

(https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement#Specifications)

it should probably be HTMLFormControlsCollection like the one in HTMLFormElement

Not overriding type IDBKeyPath

In trying to fix, microsoft/TypeScript#14322,
Simply adding,

    {
        "kind": "typedef",
        "name": "IDBKeyPath",
        "type": "string | string[]"
    }

in overridingTypes.json should fix the problem, but when I do, the type isn't updated. The solution was to remove the type and then add it again, which seems less than ideal.

WebGLRenderingContext is missing sequence<T> variants

the WebGL spec lists variants of the uniform*[if]v() methods that take sequence<GLfloat or long>, for example:

void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v);

these variants are missing from lib.d.ts, causing correct code to fail with

Argument of type 'number[]' is not assignable to parameter of type 'Float32Array'.

Separate CSSDeclaration from lib.dom.d.ts into a new file lib.css.d.ts

This isn't an issue but an idea I wanted to ask about.
I have a project where I want to use only the CSSStyleDeclaration type but not DOM types. I understand that I can just copy-paste into my own .d.ts file, but wanted to ask if there is value in doing this for TypeScript lib itself. One potential value add is that people may refer to a specific CSS implementation, like CSS2 or CSS3.

Fetch type definition is lacking

The new Fetch type definition included in TypeScript 2.2 defines everything in a overly simplified fashion, everything is just string or any:

interface Request extends Object, Body {
    readonly cache: string;
    readonly credentials: string;
    readonly destination: string;
    readonly headers: Headers;
    readonly integrity: string;
    readonly keepalive: boolean;
    readonly method: string;
    readonly mode: string;
    readonly redirect: string;
    readonly referrer: string;
    readonly referrerPolicy: string;
    readonly type: string;
    readonly url: string;
    clone(): Request;
}

declare var Request: {
    prototype: Request;
    new(input: Request | string, init?: RequestInit): Request;
}

interface RequestInit {
    method?: string;
    headers?: any;
    body?: any;
    referrer?: string;
    referrerPolicy?: string;
    mode?: string;
    credentials?: string;
    cache?: string;
    redirect?: string;
    integrity?: string;
    keepalive?: boolean;
    window?: any;
}

vs whatwg-fetch d.ts from DefinitelyTyped that has been carefully crafted and tested:

declare class Request {
    constructor(input: RequestInfo, init?: RequestInit);

    readonly method: string;
    readonly url: string;
    readonly headers: Headers;

    readonly type: RequestType
    readonly destination: RequestDestination;
    readonly referrer: string;
    readonly referrerPolicy: ReferrerPolicy;
    readonly mode: RequestMode;
    readonly credentials: RequestCredentials;
    readonly cache: RequestCache;
    readonly redirect: RequestRedirect;
    readonly integrity: string;
    readonly keepalive: boolean;

    clone(): Request;
}
interface Request extends Body {}
interface RequestInit {
    method?: string;
    headers?: HeadersInit;
    body?: BodyInit;
    referrer?: string;
    referrerPolicy?: ReferrerPolicy;
    mode?: RequestMode;
    credentials?: RequestCredentials;
    cache?: RequestCache;
    redirect?: RequestRedirect;
    integrity?: string;
    window?: null; // can only be set to null
}

type RequestType = "" | "audio" | "font" | "image" | "script" | "style" | "track" | "video";
type RequestDestination = "" | "document" | "embed" | "font" | "image" | "manifest" | "media" | "object" | "report" | "script" | "serviceworker" | "sharedworker" | "style" | "worker" | "xslt";
type RequestMode = "navigate" | "same-origin" | "no-cors" | "cors";
type RequestCredentials = "omit" | "same-origin" | "include";
type RequestCache = "default" | "no-store" | "reload" | "no-cache" | "force-cache" | "only-if-cached";
type RequestRedirect = "follow" | "error" | "manual";

type ReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "same-origin" | "origin" | "strict-origin" | "origin-when-cross-origin" | "strict-origin-when-cross-origin" | "unsafe-url";

HTMLMediaElement.readyState should be 'unsigned short'

In the WebIDL file, HTMLMediaElement.readyState is reported to be of type any. According to the specification however, it should be of type unsigned short (which translates to number in TypeScript).

Since these files are generated by Edge, I'm not sure if this is the right place to report this problem. I guess I could make a patch to add it to overridingTypes.json, but it would be nice if this was fixed upstream.

HTMLElement onchange should use `this: this`

This example worked in 2.0, but not in 2.1:

const input = document.createElement('input');
input.value; // OK
input.onchange = function() {
    this.value; // Error
}

The current definition for onchange in HTMLElement is: onchange: (this: HTMLElement, ev: Event) => any;. Maybe it should use this: this?

Adding FormData to WebWorker

I'm trying to add FormData interface to webworker.d.ts (microsoft/TypeScript#14085). IIUC, I need to add to inputfiles/knownWorkerInterfaces.json. It generates:

interface FormData {
    append(name: any, value: any, blobName?: string): void;
}

declare var FormData: {
    prototype: FormData;
    new (form?: HTMLFormElement): FormData;
}

The problem is the FormData's constructor. Is there a way to add different constructors for DOM and Workers?

Change HTMLInputElement's files attribute to match spec

lib.d.ts currently shows HTMLInputElement as having a files attribute which is always a FileList.

According to the spec, files is only a FileList when the IDL attribute applies, and null when it does not. https://html.spec.whatwg.org/multipage/forms.html#dom-input-files

The files attribute only applies when the input's type is File Upload (file=type). https://html.spec.whatwg.org/multipage/forms.html#concept-input-apply

See rejected PR #74 for more information. Additionally, non-nullable types in TS may assist with making this change. microsoft/TypeScript#7140

Unable to override a non-optional property with an optional one

I'm trying to override:

interface SpeechSynthesisEvent extends Event {
    readonly charIndex: number;
    readonly elapsedTime: number;
    readonly name: string;
    readonly utterance: SpeechSynthesisUtterance | null;
}

With:

interface SpeechSynthesisEvent extends Event {
    readonly charIndex?: number;
    readonly elapsedTime?: number;
    readonly name?: string;
    readonly utterance: SpeechSynthesisUtterance | null;
}

So far the best I could do was:

interface SpeechSynthesisEvent extends Event {
    readonly charIndex: number | undefined;
    readonly elapsedTime: number | undefined;
    readonly name: string | undefined;
    readonly utterance: SpeechSynthesisUtterance | null;
}

But I'm not sure if that conforms well to the style of the rest of the type definitions. I've tried several approaches but none of them worked:

  • Trying to override the property names modified with? in overridingTypes.json didn't do anything.
  • Redefining the entire interface in addedTypes.json simply created a duplicate.
  • Trying to remove the original in removedTypes.json didn't do anything.

Is there any way to achieve this? Any ideas?

Typo in MediaTrackConstraintSet's `echoCancellation` Property

As discussed in microsoft/TypeScript#15175, the property on MediaTrackConstraintSet should be called echoCancellation but is currently misspelled as echoCancelation.

I tried to send a PR fixing this, but it seems to me like the generated interface comes from browser.webidl.xml (I couldn't find the specific property in any of the .json files) and the readme explicitly says to not edit this file.

Would this be an appropriate case to use the overridingTypes.json? Wouldn't it be better to fix this "upstream" in Edge itself?

onerror events should match addEventListener('error') event types

Filed as microsoft/TypeScript#8202 but I think it belongs here.

As of 59dc049 (current master) in many cases the addEventListener("error", ...) code uses a different event type from the onerror code.

E.g. I think these should be using ErrorEvent for the onerror, not Event, to match addEventListener. (Perhaps it's intentional?)

interface MSBaseReader {
    onerror: (ev: Event) => any;
    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;
interface IDBDatabase extends EventTarget {
    onerror: (ev: Event) => any;
    addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void;

Can't chain HTMLElement.offsetParent property

In browser.webidl.xml, HTMLElement.offsetParent has type Element. Type Element does not have an offsetParent property. Therefore it is not possible to chain offsetParent properties in Typescript like such as htmlelement.offsetParent.offsetParent.

This capability seems to broadly supported as the jQuery source uses this in its position function (CTRL+F for offsetParent: to find it).

Obviously the workaround is to cast the offsetParent property to HTMLElement. Not sure how easy this is to fix since browser.webidl.xml is from the Edge team, but regardless I thought I would call it out here.

Latest Edge does appear to support chaining calls to offsetParent in my tests.

Missing Attr.isId

TypeScript Version: 1.8.0

Dear Ladies and Gentlemen,

I would like to bring to your attention, that the following function / property is not defined in the "lib.es6.d.ts".

Attr.isId

The Attr.IsId is defined in the DOM-Leve3-Core specification which is available at the W3C.

W3C DOM Level3 Core

w3c_isid

Here is the part of the "lib.es6.d.ts" which declares the "Attr" object.

lib es6 d ts_isid

Kind regards, Lord Saumagen.

HTMLPictureElement listed twice in baselines/dom.generated.d.ts

Found:

Is this a bug?

Happy to contribute a PR, but I can't run build.sh on my Ubuntu box:

$ ./build.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   599    0   599    0     0    839      0 --:--:-- --:--:-- --:--:--   838
100 30768  100 30768    0     0  19586      0  0:00:01  0:00:01 --:--:--  117k
Missing method Contains in assembly /home/myitcv/dev/TSJS-lib-generator/.paket/paket.bootstrapper.exe, type System.Linq.Enumerable

Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
File name: 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
File name: 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

$ mono --version
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4ubuntu4)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            sgen

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.10
Release:        15.10
Codename:       wily

Worth adding a Travis build to ensure this works for *nix users?

Emit classes instead of vars

Now that we can extend both class instance type and static type, can we now directly emit classes? Is there any remaining blocking problems?

Error in definition of interface IteratorResult

TypeScript Version: 2.0.6

Dear Ladies and Gentlemen,

I would like to bring to your attention, that the following interface is not conform to the specification in the "lib.es6.d.ts".

Currently defined as:

interface IteratorResult<T> {
done: boolean;
value: T;
}

The specification tells that the last IteratorResult returned form an iterator has the following values assigned:

done = true;
value = undefined,

So the correct interface definition would be:

interface IteratorResult<T> {
done: boolean;
value: T | undefined;
}

See the description ad MDN:

mdn_yield

Kind regards,

Lord Saumagen.

Generate lint-passing code

Running node node_modules/tslint/bin/tslint src/lib/*.generated.d.ts in the TypeScript repo reveals a few errors.

Suggestion: Add String literal types support

TypeScript Version:

1.9.0-dev.20160225

Code

{
        "kind": "property",
        "interface": "HTMLTextAreaElement",
        "name": "autocomplete",
        "type": "\"on\" | \"off\""
}

Expected behavior:

generate following code.

interface HTMLTextAreaElement {
        autocomplete: "on" | "of";
}

Actual behavior:

generate nothing.

Unable to override properties with quoted names

I'm trying to override

interface SpeechSynthesisUtteranceEventMap {
    "boundary": Event;
    "end": Event;
    "error": Event;
    "mark": Event;
    "pause": Event;
    "resume": Event;
    "start": Event;
}

with

interface SpeechSynthesisUtteranceEventMap {
    "boundary": SpeechSynthesisEvent;
    "end": SpeechSynthesisEvent;
    "error": SpeechSynthesisErrorEvent;
    "mark": SpeechSynthesisEvent;
    "pause": SpeechSynthesisEvent;
    "resume": SpeechSynthesisEvent;
    "start": SpeechSynthesisEvent;
}

Like in #191:

  • Trying to override these with overridingTypes.json didn't do anything.
  • I've tried to redefine the whole interface in addedTypes.json but it simply created a duplicate.
  • I've tried to remove it with removedTypes.json but that didn't do anything.

Wrong removeEventListener() parameters

Current definition:

addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void;
removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void;

Should be something like:

interface AddEventListenerOptions {
  capture?: boolean;
  once?: boolean;
  passive?: boolean;
}

interface RemoveEventListenerOptions {
  capture?: boolean;
  passive?: boolean;
}

interface EventTarget {
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: AddEventListenerOptions): void;
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: RemoveEventListenerOptions): void;
}

listener is mandatory.

See addEventListener and removeEventListener:

target.addEventListener(type, listener[, options]);
target.addEventListener(type, listener[, useCapture]);

target.removeEventListener(type, listener[, options]);
target.removeEventListener(type, listener[, useCapture]);

Example:

var listener = function() {
  console.log('Hello!');
}

document.body.addEventListener('click', listener);

document.body.click(); // Hello!

document.body.removeEventListener('click'); // BOOM! =>
/* Under Chrome 55:
Uncaught TypeError: Failed to execute 'removeEventListener' on 'EventTarget': 2 arguments required, but only 1 present.
*/

/* Under Firefox 47
TypeError: Not enough arguments to EventTarget.removeEventListener.
*/

document.body.addEventListener('click'); // BOOM! =>
/* Under Chrome 55:
Uncaught TypeError: Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only 1 present.
*/

WorkerGlobalScope has no performance property

I'm not sure if that's the right place to raise that issue. Please tell me where else to post it when I'm wrong here.

I discovered that when specifying the lib "webworker" in a tsconfig file the performance property seems to be missing. According to MDN and a quick test in Chrome it is part of the WorkerGlobalScope. Shouldn't it be then also part of the "webworker" lib?

I'm new to TypeScript so there is a good chance I misunderstood something completely.

ValidityState is missing tooShort

ValidityState is missing tooShort:

interface ValidityState {
    readonly badInput: boolean;
    readonly customError: boolean;
    readonly patternMismatch: boolean;
    readonly rangeOverflow: boolean;
    readonly rangeUnderflow: boolean;
    readonly stepMismatch: boolean;
    readonly tooLong: boolean;
    // missing => readonly tooShort: boolean;
    readonly typeMismatch: boolean;
    readonly valid: boolean;
    readonly valueMissing: boolean;
}

See https://github.com/Microsoft/TSJS-lib-generator/blob/475f27eacbec630695df8ae7b38ebeff2926b92f/baselines/dom.generated.d.ts#L11872

See MDN doc: https://developer.mozilla.org/en-US/docs/Web/API/ValidityState
See HTML 5.0 spec: https://www.w3.org/TR/html5/forms.html#validitystate
See HTML 5.2 spec (draft): https://www.w3.org/TR/html52/sec-forms.html#validitystate

Typing of HTMLSelectElement

There are several properties of HTMLSelectElement that could be typed more specifically. For example options is typed as HTMLCollection when it could be typed as HTMLOptionsCollection (which isn't currently typed) which it's index would be of type HTMLOptionElement. (see: MDN HTMLSelectElement)

I would also argue that HTMLCollection should actually return HTMLElement instead of Element.

Note, this "broke" some things with TS 1.8.2 because previously the index returned any thereby allowing a lot of code to "just compile".

Affecting the ES6 library

I am attempting to update the WebCrypto interface definitions, where functions return Promises. If I declare these return values as Promises, tsc will fail to build. If I change this to PromiseLike, it builds fine, but if I am targeting es6 (or using the es6 library via other means), it would be nice to have the return values be actual Promises. Is there a way to specify separate signatures for es5 and es6 libraries?

Check overridden items for nullable types

Currently we don't check the nullability of types for items in the overridingTypes.json. We should check the nullability of the corresponding types in the spec and complement the content.

webspeechapi: Fix event types in `SpeechSynthesisUtterance`

The DefinitelyTyped definitions for this API have some differences that appear correct. SpeechSynthesisUtterance.onstart and other methods should have a SpeechSynthesisEvent as their event type, and not just Event. We already have a SpeechSynthesisEvent type defined in lib.dom.d.ts, but aren't using it everywhere we should.

WebRTC types are lacking

The type definitions on DefinitelyTyped appear to get some things right that we don't.

Also, many of these RTC* types are in lib.es6.d.ts, but should probably be in lib.dom.d.ts.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.