Once upon a time, an unsuspecting Mozilla engineer created an API in Firefox that exposed the SpiderMonkey engine's JavaScript parser as a JavaScript API. Said engineer documented the format it produced, and this format caught on as a lingua franca for tools that manipulate JavaScript source code.
Meanwhile JavaScript is evolving. This site will serve as a community standard for people involved in building and using these tools to help evolve this format to keep up with the evolution of the JavaScript language.
The spec uses a custom syntax to describe its structures. For example, at the
time of writing, 'es2015.md' contained a description of Program
as seen below
extend interface Program {
sourceType: "script" | "module";
body: [ Statement | ImportOrExportDeclaration ];
}
Copyright Mozilla Contributors and ESTree Contributors.
Licensed under Creative Commons Sharealike.
Suggested additions and modifications must follow these guidelines:
FunctionExpression
should not be aware of if it's a concise method. (eg. #5)kind
property should not be present on Literal
if the type can be discerned from the value
. (eg. #61)MetaProperty
over NewTarget
to cover future meta properties. (eg. #32)ESTree has benefited from the contributions of many people over the years. We'd like to thank these folks for their significant contributions to this project:
Sebastian McKenzie (Babel), Kyle Simpson (@getify), Mike Sherov (Esprima), Ariya Hidayat (Esprima), Adrian Heine (Acorn), Dave Herman (SpiderMonkey), Michael Ficarra (@michaelficarra).