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.
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:
proposals—Proposal[]-
Each proposal has an immutable kebab-case
id, aname,url, andspecification(ECMA-262 / ECMA-402 / ECMA-404); astagethat is one of0–4or a terminal status (rejected,withdrawn,abandoned,subsumed);authorsandchampions; and the list of committeepresentations, newest first. Stage 3 / 2.7 entries may carry test262 coverage, and Stage 4 entries an expected publication year. delegates—DelegateMap-
Maps each official delegate abbreviation to a record of the delegate's
name, an optionalgithubusername, and an optionalaffiliation(the TC39 member organisation they represent). processStages—ProcessStage[]-
Each maturity stage (
0–4) with itsstatus, theentranceCriteriaa proposal must meet to enter it, and the stage'spurpose, 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).