Code to parse Chrome's internal extension type definitions—published on NPM as chrome-types
Перейти к файлу
Oliver Dunk 08cd3e762d Ignore incorrect nodoc in Chrome 111+ for `world` parameter 2024-05-23 12:44:44 +01:00
.github/workflows
content
dist
tests/lib Ignore incorrect nodoc in Chrome 111+ for `world` parameter 2024-05-23 12:44:44 +01:00
tools Ignore incorrect nodoc in Chrome 111+ for `world` parameter 2024-05-23 12:44:44 +01:00
types Add in does_not_support_promises field 2024-01-30 13:56:28 -08:00
.gitignore
LICENSE
README.md
package-lock.json Restore older file version 2024-01-30 13:55:58 -08:00
package.json
tsconfig.json

README.md

chrome-types

codecov

⚠️ If you're looking for TypeScript definitions for Chrome's extensions, you should depend on chrome-types in your project.

This repo contains JS which parses Chrome's internal extension definitions and outputs TypeScript Definition files. You shouldn't depend on this code: rather, the generated types file is published at chrome-types. Depend on it for your Chrome extensions projects (MV3 and above).

Design

This repo's design is documented in the wiki. Broadly, it reads Chromium's source code to find the internal extensions definitions (in IDL and JSON) and traverses them to generate ".d.ts" files—one for modern extension development (MV3+), and one for all extensions (including the deprecated Platform Apps APIs).

Deploy

This code is run automatically on a daily basis by GitHub Actions. It prepares a ".d.ts" file for Chrome's HEAD revision, annotated with information about the public Chrome release API first became available in, and publishes a new version if the output differs from the previous release.

Usage

This repository is mostly intended as an implementation detail of the https://developer.chrome.com site and for publishing chrome-types on NPM, which happens automaticalty as part of a GitHub Action. You can run it yourself, but if you're just interested in the generated types, you don't need to.

Run "tools/prepare.js" to generate a bundle of JSON representing Chrome's extensions at a specific release. You can then pass this bundle to other tools like "tools/render-tsd.js". See the wiki for more.

Running the code requires Node 16+ as well as a working version of Python (3 is preferred, but 2.7+ should work) installed on your system. This has only been tested on Linux and macOS. Python is used to convert Chromium's internal IDL format to JSON.