- Notifications
You must be signed in to change notification settings - Fork440
Tool for generating dom related TypeScript and JavaScript library files
License
microsoft/TypeScript-DOM-lib-generator
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This tool is used to generate the web-basedlib.dom.d.ts
file which is included with TypeScript releases, and as the@types/web
package.
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), andWebKit (Safari).
If the condition is met but still is not available here, first check thecontribution guidelines below and then pleasefile an issue.
To get things setup:
npm install
To generate the.d.ts
files
npm run build
To test:
npm runtest
@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 |
The libraries available on@types/
like@types/web
require a"target"
of ES6 or above, becauseiterator APIs are included.
The files in thebaselines/
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.
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 namedFoo
. Check if there is a document about that interface inMDN. 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 byinputfiles/removedTypes.jsonc
. Try finding and removing the relevant item there and runnpm run generate
.
If conditions are not fulfilled but you think MDN is wrong, please file an issue athttps://github.com/mdn/browser-compat-data/issues/. The type will be automatically added in a few weeks when MDN fixes their data.
It's possible that the type is too specific or too general. First you need to check whetherinputfiles/overridingTypes.jsonc
orinputfiles/addedTypes.jsonc
have a relevant item, which can be fixed if exists. If they don't, add one inoverridingTypes.jsonc
. Runnpm run generate
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.
src/build.ts
: handles the emitting of the.d.ts
files.src/test.ts
: verifies the output by comparing thegenerated/
andbaseline/
contents.
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 .d.ts files.deprecatedMessage.json
: the reason why one type is deprecated.
To migrate the *.d.ts files into TypeScript:
Trigger the workflow here - this will send a PR to TypeScript under your alias.
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/webGenerate a CHANGELOG for the releases:
# lib from tonpm run ts-changelog -- @types/web 0.0.2 0.0.23
You might need to run
git pull origin main --tags
to run this ^Add the CHANGELOG to the release issue
About
Tool for generating dom related TypeScript and JavaScript library files