{"id":13452270,"url":"https://github.com/estree/estree","last_synced_at":"2025-05-13T17:10:04.555Z","repository":{"id":27207801,"uuid":"30678623","full_name":"estree/estree","owner":"estree","description":"The ESTree Spec","archived":false,"fork":false,"pushed_at":"2025-02-24T17:31:48.000Z","size":167,"stargazers_count":5233,"open_issues_count":45,"forks_count":363,"subscribers_count":141,"default_branch":"master","last_synced_at":"2025-04-24T01:59:07.805Z","etag":null,"topics":["ast","estree","javascript","parsing","specification"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/estree.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":"docs/governance.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-02-12T01:09:18.000Z","updated_at":"2025-04-24T01:38:38.000Z","dependencies_parsed_at":"2023-02-18T00:10:22.526Z","dependency_job_id":"1773ebe7-f94e-4088-8181-3141b8cab17b","html_url":"https://github.com/estree/estree","commit_stats":{"total_commits":191,"total_committers":50,"mean_commits":3.82,"dds":0.8167539267015707,"last_synced_commit":"7a0c8fb02a33a69fa16dbe3ca35beeaa8f58f1e3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estree%2Festree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estree%2Festree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estree%2Festree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/estree%2Festree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/estree","download_url":"https://codeload.github.com/estree/estree/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990467,"owners_count":21995774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ast","estree","javascript","parsing","specification"],"created_at":"2024-07-31T07:01:18.975Z","updated_at":"2025-05-13T17:09:59.543Z","avatar_url":"https://github.com/estree.png","language":null,"readme":"# The ESTree Spec\n\nOnce upon a time, an [unsuspecting Mozilla engineer](http://calculist.org) created an API in Firefox that exposed the SpiderMonkey engine's JavaScript parser as a JavaScript API. Said engineer [documented the format it produced](https://web.archive.org/web/20210314002546/https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Parser_API), and this format caught on as a lingua franca for tools that manipulate JavaScript source code.\n\nMeanwhile 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.\n\n# AST Descriptor Syntax\n\nThe spec uses a custom syntax to describe its structures.  For example, at the\ntime of writing, 'es2015.md' contained a description of `Program` as seen below\n\n```js\nextend interface Program {\n    sourceType: \"script\" | \"module\";\n    body: [ Statement | ImportOrExportDeclaration ];\n}\n```\n\n# ESTree Steering Committee\n\n* [Nicholas C. Zakas](https://github.com/nzakas) ([ESLint](https://github.com/eslint))\n* [Ingvar Stepanyan](https://github.com/rreverser) ([Acorn](https://github.com/acornjs/acorn))\n* [Junliang Huang](https://github.com/JLHwung) ([Babel](https://github.com/babel))\n\n# Copyright and License\n\nCopyright Mozilla Contributors and ESTree Contributors.\n\nLicensed under [Creative Commons Sharealike](https://creativecommons.org/licenses/by-sa/2.5/).\n\n# Philosophy\n\nSuggested additions and modifications must follow these guidelines:\n\n1. **Backwards compatible:** Non-additive modifications to existing constructs will not be considered unless immense support is in favor of such changes. ([eg. #65](https://github.com/estree/estree/issues/65))\n2. **Contextless:** Nodes should not retain any information about their parent. ie. a `FunctionExpression` should not be aware of if it's a concise method. (eg. [#5](https://github.com/estree/estree/issues/5))\n3. **Unique:** Information should not be duplicated. ie. a `kind` property should not be present on `Literal` if the type can be discerned from the `value`. (eg. [#61](https://github.com/estree/estree/issues/61))\n4. **Extensible:** New nodes should be specced to easily allow future spec additions. This means expanding the coverage of node types. ie. `MetaProperty` over `NewTarget` to cover future meta properties. (eg. [#32](https://github.com/estree/estree/pull/32))\n\n\n# Acknowledgements\n\nESTree 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:\n\n[Sebastian McKenzie](https://github.com/sebmck) ([Babel](https://github.com/babel/babel)), Kyle Simpson ([@getify](https://github.com/getify)), [Mike Sherov](https://github.com/mikesherov) ([Esprima](https://github.com/jquery/esprima)), [Ariya Hidayat](https://github.com/ariya) ([Esprima](https://github.com/jquery/esprima)), [Adrian Heine](https://github.com/adrianheine) ([Acorn](https://github.com/acornjs/acorn)), [Dave Herman](https://github.com/dherman) (SpiderMonkey), Michael Ficarra ([@michaelficarra](https://github.com/michaelficarra)).\n","funding_links":[],"categories":["Others","parsing","如何实现一个简单的 Tree Shaking 脚本？","javascript","JavaScript"],"sub_categories":["AST","Parsers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Festree%2Festree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Festree%2Festree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Festree%2Festree/lists"}