{"action":"created","comment":{"url":"https://api.github.com/repos/babel/website/pulls/comments/198031376","pull_request_review_id":131873482,"id":198031376,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5ODAzMTM3Ng==","diff_hunk":"@@ -0,0 +1,276 @@\n+---\n+layout: post\n+title:  \"On Consuming (and Publishing) ES2015+ Packages\"\n+author: Henry Zhu\n+authorURL: https://twitter.com/left_pad\n+date:   2018-06-25 12:00:00\n+categories: announcements\n+share_text: \"On Consuming (and Publishing) ES2015+ Packages\"\n+---\n+\n+How can we make compiling our dependencies not just possible, but normal?\n+\n+<!--truncate-->\n+\n+The ability to compile dependencies is an enabling feature request for the whole ecosystem. Starting with some of the changes we made in Babel v7, we hope to see it standardized moving forward.\n+\n+## Assumptions\n+\n+- We believe compiling our own app code is useful.\n+- We can and will ship to modern browsers that support ES2015+ [natively](https://kangax.github.io/compat-table/es6/) (don't have to support IE) or are able to send multiple kinds of bundles (i.e. [by using `<script type=\"module\">` and `<script nomodule>`](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/)).\n+- Our dependencies actually publish ES2015+ instead of the current baseline of ES5/ES3.\n+- The future baseline shouldn't be fixed at ES2015, but is a changing target.\n+\n+## Why\n+\n+Why is compiling dependencies (as opposed to just compiling our own code) desirable in the first place?\n+\n+- To have the freedom to make the tradeoffs of where code is able to run (vs. the library).\n+- To ship less code to users, since JavaScript has a [cost](https://medium.com/dev-channel/the-cost-of-javascript-84009f51e99e).\n+\n+## The Ephemeral JavaScript Runtime\n+\n+The argument for why compiling dependencies would be helpful is the same for why Babel [eventually](https://github.com/babel/babel/pull/3476) introduced [`@babel/preset-env`](https://babeljs.io/docs/en/next/babel-preset-env.html). We saw that developers would eventually want to move past only compiling to ES5. \n+\n+Babel used to be [`6to5`](https://babeljs.io/blog/2017/10/05/babel-turns-three), since it only converted from ES2015 (known as ES6 back then) to ES5. Back then, the browser support for ES2015 was almost non-existent, so the idea of a JavaScript compiler was both novel and useful: we could write modern code, and have it work for all of our users.\n+\n+But what about the browser runtimes themselves? Because evergreen browsers will eventually catch up to the standard (as they have with ES2015), creating `preset-env` helps Babel and the community align with both the browsers and TC39 itself. If we only compiled to ES5, no one would ever run native code in the browsers.\n+\n+The real difference is realizing that there will _always_ be a sliding window of support:\n+\n+- Application code (our supported environments)\n+- Browsers (Chrome, Firefox, Edge, Safari)\n+- Babel (the abstraction layer)\n+- TC39/ECMAScript proposals (and Babel implementations)\n+\n+Thus, the need isn't just for `6to5` to be renamed to Babel because it compiles to `7to5`, but for Babel to change the implicit assumption it only targets ES5. With `@babel/preset-env`, we are able to write the latest JavaScript and target whichever browser/environment!\n+\n+Using Babel and `preset-env` helps us keep up with that constantly changing sliding window. However, even if we use it, it's currently used only for *our application code*, and not for our code’s dependencies.\n+\n+## Who Owns Our Dependencies?\n+\n+Because we have control over our own code, we are able to take advantage of `preset-env`: both by writing in ES2015+ and targeting ES2015+ browsers.\n+\n+This isn't necessarily the case for our dependencies; in order to get the same benefits as compiling our code we may need to make some changes.\n+\n+Is it as straightforward as just running Babel over `node_modules`?\n+\n+## The Current Complexities in Compiling Dependencies\n+\n+### Compiler Complexity\n+\n+Although it shouldn't deter us from making this a common practice, we should be aware that compiling dependencies does increase the surface area of issues and complexity.\n+\n+- Compilers are no different than other programs and have bugs. \n+- `preset-env` itself could have bugs because we use [`compat-table`](https://kangax.github.io/compat-table/es6/) for our data vs. [Test262](https://github.com/tc39/test262) (the official test suite).\n+- Browsers themselves can have issues with running native ES2015+ code vs. ES5.\n+- There is still a question of determining what is \"supported\": https://github.com/babel/babel-preset-env/issues/54 is an example of an edge case.\n+\n+#### Specific Issues in v6\n+\n+Running a `script` as a `module` either causes a `SyntaxError`, new runtime errors, or unexpected behavior due to the differences in semantics between classic scripts and modules.\n+\n+Babel v6 viewed every file as a `module` and thus in [\"strict mode\"](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode).\n+\n+> One could argue this is actually a good thing, since everyone using Babel is opting in to strict mode by default 🙂.\n+\n+Running Babel with a conventional setup on all our `node_modules` may cause issues with code that is a `script` such as a jQuery plugin.\n+\n+An example of an issue is how [`this` gets converted to `undefined`](https://github.com/babel/babel/issues/7636).\n+\n+```js\n+// Input\n+(function($) {\n+  // …\n+}(this.jQuery));\n+```\n+\n+```js\n+// Output\n+\"use strict\";\n+\n+(function ($) {\n+  // …\n+})(undefined.jQuery);\n+```\n+\n+This was [changed in v7](https://github.com/babel/babel/pull/6280) so that it won't auto-inject the `\"use strict\"` directive unless the source file is a `module`.\n+\n+It was also not in Babel's original scope to compile dependencies: we actually got issue reports that people would accidently do it, making the build slower. There is a lot of defaults and documentation in the tooling that purposely disable compiling `node_modules`.\n+\n+### Using Non-Standard Syntax\n+\n+There are many issues with *shipping* uncompiled proposal syntax (this post was inspired by [Dan's concern](https://twitter.com/dan_abramov/status/1009179550134296577) about this).\n+\n+#### Staging Process\n+\n+The [TC39 staging process](https://tc39.github.io/process-document/) does not always move forward: a proposal can move to any point in the process: even moving backwards from Stage 3 to Stage 2 as was the case with Numeric Separators (`1_000`),  dropped entirely (`Object.observe()`, and others we may have forgotten 😁), or just stall like function bind (`a::b`) or decorators until recently.\n+\n+- Summary of the Stages: Stage 0 has no criteria and means the proposal is just an idea, Stage 1 is accepting that the problem is worth solving, Stage 2 is about describing a solution in spec text, Stage 3 means the specific solution is thought out, and Stage 4 means that it is ready for inclusion in the spec with tests, multiple browser implementations, and in-the-field experience.\n+\n+#### Using Proposals\n+\n+<blockquote class=\"twitter-tweet\" data-lang=\"en\"><p lang=\"und\" dir=\"ltr\"><a href=\"https://t.co/femUb4vgxh\">pic.twitter.com/femUb4vgxh</a></p>&mdash; Rach Smith 🌈 (@rachsmithtweets) <a href=\"https://twitter.com/rachsmithtweets/status/892478598765887488?ref_src=twsrc%5Etfw\">August 1, 2017</a></blockquote>\n+\n+We already recommend that people should be careful when using proposals lower than Stage 3, let alone publishing them.\n+\n+But only telling people not to use Stage X goes against the whole purpose of Babel in the first place. A big reason why proposals gain improvements and move forward are because of the feedback the committee gets from real-world usage (whether in production or not) based on using it via Babel.\n+\n+There is certainly a balance to be had here: we don't want to scare people away from using new syntax (that is a hard sell 😂), but we also don't want people to get the idea that \"once it's in Babel, the syntax is official or immutable\". Ideally people look into the purpose of a proposal and make the tradeoffs for their use case.\n+\n+#### Removing the Stage Presets in v7\n+\n+Even though one of the most common things people do is use the Stage 0 preset, we plan to remove the stage presets in v7. We thought at first it would be convenient, that people would make their own unofficial ones anyway, or it might help with \"JavaScript fatigue\". It seems to cause more of an issue: people continue to copy/paste configs without understanding what goes into a preset in the first place. \n+\n+After all, seeing `\"stage-0\"` says nothing. My hope is that in making the decision to use proposal plugins explicit, people will have to learn what non-standard syntax they are opting into. More intentionally, this should lead to a better understanding of not just Babel but of JavaScript as a language and its development instead of just its usage.\n+\n+### Publishing Non-standard Syntax\n+\n+As a library author, publishing non-standard syntax is setting our users up for possible inconsistencies, refactoring, and breakage of their projects. Because a TC39 proposal (even at Stage 3) has a possibility of changing, it means we will inevitability have to change the library code. A \"new\" proposal doesn't mean the idea is fixed or certain but rather that we collectively want to explore the solution space.\n+\n+At least if we ship the compiled version, it will still work, and the library maintainer can change the output so that it works the same as before. Shipping the uncompiled version means that anyone consuming a package needs to have a build step to use it and needs to have the same configuration of Babel as us. This is in the same bucket as using TS/JSX/Flow: we wouldn't expect consumers to configure the same compiler environment just because we used them.\n+\n+### Conflating ESM and ES2015+\n+\n+When we write `import foo from \"foo\"` or `require(\"foo\")` and `foo` doesn't have an `index.js`, it resolves to the `main` field in the `package.json` of the module.\n+\n+Some tools like Rollup/webpack also read from another field called `module` (previously `jsnext:main`). It uses this to instead resolve to the ESM file.\n+\n+- An example with [`redux`](https://github.com/reactjs/redux)\n+\n+```js\n+// redux package.json\n+{\n+  ...\n+  \"main\": \"lib/redux.js\", // ES5 + CJS\n+  \"module\": \"es/redux.js\", // ES5 + ESM\n+}\n+```\n+\n+This was introduced so that users could consume ES2015 modules (ESM).\n+\n+However, the sole intention of this field is ESM, not anything else. The [Rollup docs](https://github.com/rollup/rollup/wiki/pkg.module#wait-it-just-means-import-and-export--not-other-future-javascript-features) specify that the `module` field makes it clear that it's not intended for future JavaScript syntax.\n+\n+Despite this warning, package authors invariably conflate the use of ES modules with the JavaScript language level they authored it in.\n+\n+As such, we may need another way to signal the language level.\n+\n+#### Non-scalable Solutions?\n+\n+A common suggestion is for libraries to start publishing ES2015 under another field like `es2015`, e.g. `\"es2015\": \"es2015/redux.js\"`.","path":"website/blog/2018-06-25-on-consuming-and-publishing-es6+-packages.md","position":160,"original_position":160,"commit_id":"e3604c0752ac58078db49f7da7eafd0118fd3b48","original_commit_id":"e3604c0752ac58078db49f7da7eafd0118fd3b48","user":{"login":"mathiasbynens","id":81942,"node_id":"MDQ6VXNlcjgxOTQy","avatar_url":"https://avatars1.githubusercontent.com/u/81942?v=4","gravatar_id":"","url":"https://api.github.com/users/mathiasbynens","html_url":"https://github.com/mathiasbynens","followers_url":"https://api.github.com/users/mathiasbynens/followers","following_url":"https://api.github.com/users/mathiasbynens/following{/other_user}","gists_url":"https://api.github.com/users/mathiasbynens/gists{/gist_id}","starred_url":"https://api.github.com/users/mathiasbynens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mathiasbynens/subscriptions","organizations_url":"https://api.github.com/users/mathiasbynens/orgs","repos_url":"https://api.github.com/users/mathiasbynens/repos","events_url":"https://api.github.com/users/mathiasbynens/events{/privacy}","received_events_url":"https://api.github.com/users/mathiasbynens/received_events","type":"User","site_admin":false},"body":"mjs","created_at":"2018-06-26T06:54:29Z","updated_at":"2018-06-26T06:56:46Z","html_url":"https://github.com/babel/website/pull/1705#discussion_r198031376","pull_request_url":"https://api.github.com/repos/babel/website/pulls/1705","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/babel/website/pulls/comments/198031376"},"html":{"href":"https://github.com/babel/website/pull/1705#discussion_r198031376"},"pull_request":{"href":"https://api.github.com/repos/babel/website/pulls/1705"}}},"pull_request":{"url":"https://api.github.com/repos/babel/website/pulls/1705","id":196907701,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk2OTA3NzAx","html_url":"https://github.com/babel/website/pull/1705","diff_url":"https://github.com/babel/website/pull/1705.diff","patch_url":"https://github.com/babel/website/pull/1705.patch","issue_url":"https://api.github.com/repos/babel/website/issues/1705","number":1705,"state":"open","locked":false,"title":"Publishing ES6+ Post ","user":{"login":"hzoo","id":588473,"node_id":"MDQ6VXNlcjU4ODQ3Mw==","avatar_url":"https://avatars1.githubusercontent.com/u/588473?v=4","gravatar_id":"","url":"https://api.github.com/users/hzoo","html_url":"https://github.com/hzoo","followers_url":"https://api.github.com/users/hzoo/followers","following_url":"https://api.github.com/users/hzoo/following{/other_user}","gists_url":"https://api.github.com/users/hzoo/gists{/gist_id}","starred_url":"https://api.github.com/users/hzoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hzoo/subscriptions","organizations_url":"https://api.github.com/users/hzoo/orgs","repos_url":"https://api.github.com/users/hzoo/repos","events_url":"https://api.github.com/users/hzoo/events{/privacy}","received_events_url":"https://api.github.com/users/hzoo/received_events","type":"User","site_admin":false},"body":"Rendered: https://deploy-preview-1705--babel.netlify.com/blog/2018/06/25/on-consuming-and-publishing-es6+-packages\r\n\r\nPurpose: bring up a discussion on how library authors should publish ES6+ and ESM as well as how this is dealt on the consumer side (whether or not you need to compile deps)\r\n\r\n- [x] I will move this to https://github.com/babel/website eventually\r\n- [x] Should I move the headings around (maybe a different order is better)? This could probably be better organized\r\n- [x] Am I missing something?\r\n- [x] Should I split the post up, it's getting long?\r\n- [x] Check if I repeated myself too much in between sections\r\n- [x] Anything better with a visual? (either code, picture, etc)\r\n- [x] Pitch v7 release/post, mention patreon/oc?\r\n- [x] mention creating a standard for publishing (latest syntax, ESM) for lib authors to use, create a way to validate, npm should promote, tooling should use.","created_at":"2018-06-23T15:38:22Z","updated_at":"2018-06-26T06:56:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a4559296fe2781ba19fc03b9fa0fc12d19333dbc","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/babel/website/pulls/1705/commits","review_comments_url":"https://api.github.com/repos/babel/website/pulls/1705/comments","review_comment_url":"https://api.github.com/repos/babel/website/pulls/comments{/number}","comments_url":"https://api.github.com/repos/babel/website/issues/1705/comments","statuses_url":"https://api.github.com/repos/babel/website/statuses/e3604c0752ac58078db49f7da7eafd0118fd3b48","head":{"label":"babel:publishing-es6","ref":"publishing-es6","sha":"e3604c0752ac58078db49f7da7eafd0118fd3b48","user":{"login":"babel","id":9637642,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk2Mzc2NDI=","avatar_url":"https://avatars1.githubusercontent.com/u/9637642?v=4","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"repo":{"id":26390088,"node_id":"MDEwOlJlcG9zaXRvcnkyNjM5MDA4OA==","name":"website","full_name":"babel/website","owner":{"login":"babel","id":9637642,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk2Mzc2NDI=","avatar_url":"https://avatars1.githubusercontent.com/u/9637642?v=4","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/babel/website","description":":globe_with_meridians: The Babel documentation website","fork":false,"url":"https://api.github.com/repos/babel/website","forks_url":"https://api.github.com/repos/babel/website/forks","keys_url":"https://api.github.com/repos/babel/website/keys{/key_id}","collaborators_url":"https://api.github.com/repos/babel/website/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/babel/website/teams","hooks_url":"https://api.github.com/repos/babel/website/hooks","issue_events_url":"https://api.github.com/repos/babel/website/issues/events{/number}","events_url":"https://api.github.com/repos/babel/website/events","assignees_url":"https://api.github.com/repos/babel/website/assignees{/user}","branches_url":"https://api.github.com/repos/babel/website/branches{/branch}","tags_url":"https://api.github.com/repos/babel/website/tags","blobs_url":"https://api.github.com/repos/babel/website/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/babel/website/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/babel/website/git/refs{/sha}","trees_url":"https://api.github.com/repos/babel/website/git/trees{/sha}","statuses_url":"https://api.github.com/repos/babel/website/statuses/{sha}","languages_url":"https://api.github.com/repos/babel/website/languages","stargazers_url":"https://api.github.com/repos/babel/website/stargazers","contributors_url":"https://api.github.com/repos/babel/website/contributors","subscribers_url":"https://api.github.com/repos/babel/website/subscribers","subscription_url":"https://api.github.com/repos/babel/website/subscription","commits_url":"https://api.github.com/repos/babel/website/commits{/sha}","git_commits_url":"https://api.github.com/repos/babel/website/git/commits{/sha}","comments_url":"https://api.github.com/repos/babel/website/comments{/number}","issue_comment_url":"https://api.github.com/repos/babel/website/issues/comments{/number}","contents_url":"https://api.github.com/repos/babel/website/contents/{+path}","compare_url":"https://api.github.com/repos/babel/website/compare/{base}...{head}","merges_url":"https://api.github.com/repos/babel/website/merges","archive_url":"https://api.github.com/repos/babel/website/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/babel/website/downloads","issues_url":"https://api.github.com/repos/babel/website/issues{/number}","pulls_url":"https://api.github.com/repos/babel/website/pulls{/number}","milestones_url":"https://api.github.com/repos/babel/website/milestones{/number}","notifications_url":"https://api.github.com/repos/babel/website/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/babel/website/labels{/name}","releases_url":"https://api.github.com/repos/babel/website/releases{/id}","deployments_url":"https://api.github.com/repos/babel/website/deployments","created_at":"2014-11-09T08:29:53Z","updated_at":"2018-06-25T14:45:48Z","pushed_at":"2018-06-26T06:44:49Z","git_url":"git://github.com/babel/website.git","ssh_url":"git@github.com:babel/website.git","clone_url":"https://github.com/babel/website.git","svn_url":"https://github.com/babel/website","homepage":"https://new.babeljs.io/docs/en/next/index.html","size":20689,"stargazers_count":400,"watchers_count":400,"language":"JavaScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":684,"mirror_url":null,"archived":false,"open_issues_count":64,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":684,"open_issues":64,"watchers":400,"default_branch":"master"}},"base":{"label":"babel:master","ref":"master","sha":"955c467c381b70cbf64ec18f5e9cad0823cb67d7","user":{"login":"babel","id":9637642,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk2Mzc2NDI=","avatar_url":"https://avatars1.githubusercontent.com/u/9637642?v=4","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"repo":{"id":26390088,"node_id":"MDEwOlJlcG9zaXRvcnkyNjM5MDA4OA==","name":"website","full_name":"babel/website","owner":{"login":"babel","id":9637642,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk2Mzc2NDI=","avatar_url":"https://avatars1.githubusercontent.com/u/9637642?v=4","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/babel/website","description":":globe_with_meridians: The Babel documentation website","fork":false,"url":"https://api.github.com/repos/babel/website","forks_url":"https://api.github.com/repos/babel/website/forks","keys_url":"https://api.github.com/repos/babel/website/keys{/key_id}","collaborators_url":"https://api.github.com/repos/babel/website/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/babel/website/teams","hooks_url":"https://api.github.com/repos/babel/website/hooks","issue_events_url":"https://api.github.com/repos/babel/website/issues/events{/number}","events_url":"https://api.github.com/repos/babel/website/events","assignees_url":"https://api.github.com/repos/babel/website/assignees{/user}","branches_url":"https://api.github.com/repos/babel/website/branches{/branch}","tags_url":"https://api.github.com/repos/babel/website/tags","blobs_url":"https://api.github.com/repos/babel/website/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/babel/website/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/babel/website/git/refs{/sha}","trees_url":"https://api.github.com/repos/babel/website/git/trees{/sha}","statuses_url":"https://api.github.com/repos/babel/website/statuses/{sha}","languages_url":"https://api.github.com/repos/babel/website/languages","stargazers_url":"https://api.github.com/repos/babel/website/stargazers","contributors_url":"https://api.github.com/repos/babel/website/contributors","subscribers_url":"https://api.github.com/repos/babel/website/subscribers","subscription_url":"https://api.github.com/repos/babel/website/subscription","commits_url":"https://api.github.com/repos/babel/website/commits{/sha}","git_commits_url":"https://api.github.com/repos/babel/website/git/commits{/sha}","comments_url":"https://api.github.com/repos/babel/website/comments{/number}","issue_comment_url":"https://api.github.com/repos/babel/website/issues/comments{/number}","contents_url":"https://api.github.com/repos/babel/website/contents/{+path}","compare_url":"https://api.github.com/repos/babel/website/compare/{base}...{head}","merges_url":"https://api.github.com/repos/babel/website/merges","archive_url":"https://api.github.com/repos/babel/website/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/babel/website/downloads","issues_url":"https://api.github.com/repos/babel/website/issues{/number}","pulls_url":"https://api.github.com/repos/babel/website/pulls{/number}","milestones_url":"https://api.github.com/repos/babel/website/milestones{/number}","notifications_url":"https://api.github.com/repos/babel/website/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/babel/website/labels{/name}","releases_url":"https://api.github.com/repos/babel/website/releases{/id}","deployments_url":"https://api.github.com/repos/babel/website/deployments","created_at":"2014-11-09T08:29:53Z","updated_at":"2018-06-25T14:45:48Z","pushed_at":"2018-06-26T06:44:49Z","git_url":"git://github.com/babel/website.git","ssh_url":"git@github.com:babel/website.git","clone_url":"https://github.com/babel/website.git","svn_url":"https://github.com/babel/website","homepage":"https://new.babeljs.io/docs/en/next/index.html","size":20689,"stargazers_count":400,"watchers_count":400,"language":"JavaScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":684,"mirror_url":null,"archived":false,"open_issues_count":64,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":684,"open_issues":64,"watchers":400,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/babel/website/pulls/1705"},"html":{"href":"https://github.com/babel/website/pull/1705"},"issue":{"href":"https://api.github.com/repos/babel/website/issues/1705"},"comments":{"href":"https://api.github.com/repos/babel/website/issues/1705/comments"},"review_comments":{"href":"https://api.github.com/repos/babel/website/pulls/1705/comments"},"review_comment":{"href":"https://api.github.com/repos/babel/website/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/babel/website/pulls/1705/commits"},"statuses":{"href":"https://api.github.com/repos/babel/website/statuses/e3604c0752ac58078db49f7da7eafd0118fd3b48"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"mathiasbynens"}}