TC39 Data

Structured, typed datasets for TC39.

Today this information is spread across semi-structured documents in several repositories: proposals as Markdown tables in tc39/proposals, the delegate list in tc39/notes, and the working process as an HTML process document. This project aggregates that information into a single, machine-readable, typed representation generated from the upstream repositories and maintained by hand thereafter.

327
proposals
580
delegates

Using the data

The three datasets are exported as typed values:

import { proposals, delegates, processStages } from "@tc39/data";

proposals;     // every ECMA-262 and ECMA-402 proposal
delegates;     // the delegate roster, keyed by abbreviation
processStages; // the maturity-stage definitions

Schemas

The canonical, machine-checked definitions live in src/types.ts. The three datasets are shaped as follows:

proposalsProposal[]
Each proposal has an immutable kebab-case id, a name, url, and specification (ECMA-262 / ECMA-402 / ECMA-404); a stage that is one of 04 or a terminal status (rejected, withdrawn, abandoned, subsumed); authors and champions; and the list of committee presentations, newest first. Stage 3 / 2.7 entries may carry test262 coverage, and Stage 4 entries an expected publication year.
delegatesDelegateMap
Maps each official delegate abbreviation to a record of the delegate's name, an optional github username, and an optional affiliation (the TC39 member organisation they represent).
processStagesProcessStage[]
Each maturity stage (04) with its status, the entranceCriteria a proposal must meet to enter it, and the stage's purpose, taken from the process document.

An author, champion, or reviewer is in turn either a TC39 delegate (referenced by the abbreviation that keys into delegates) or a community member (a full name and optional GitHub username).