Skip to content

Code to parse Chrome's internal extension type definitions—published on NPM as chrome-types

License

Notifications You must be signed in to change notification settings

GoogleChrome/chrome-types

Repository files navigation

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.

About

Code to parse Chrome's internal extension type definitions—published on NPM as chrome-types

Resources

License

Stars

Watchers

Forks