{"action":"created","comment":{"url":"https://api.github.com/repos/yarnpkg/rfcs/pulls/comments/117799139","pull_request_review_id":39536145,"id":117799139,"diff_hunk":"@@ -0,0 +1,303 @@\n+- Start Date: 2017-05-21\r\n+- RFC PR: (leave this empty)\r\n+- Yarn Issue: (leave this empty)\r\n+\r\n+# Summary\r\n+\r\n+Allow to select a nested dependency version via the `resolutions` field of\r\n+the `package.json` file.\r\n+\r\n+# Motivation\r\n+\r\n+The motivation was initially discussed in\r\n+[yarnpkg/yarn#2763](https://github.com/yarnpkg/yarn/issues/2763).\r\n+\r\n+Basically, the problem with the current behaviour of yarn is that it is\r\n+not possible to force the use of a particular version for a nested dependency.\r\n+\r\n+## Example\r\n+\r\n+For example, given the following content in the `package.json`:\r\n+```json\r\n+ \"devDependencies\": {\r\n+    \"@angular/cli\": \"1.0.3\",\r\n+    \"typescript\": \"2.3.2\"\r\n+  }\r\n+```\r\n+\r\n+The `yarn.lock` file will contain:\r\n+```\r\n+\"typescript@>=2.0.0 <2.3.0\":\r\n+  version \"2.2.2\"\r\n+  resolved \"https://registry.yarnpkg.com/typescript/-/typescript-2.2.2.tgz#606022508479b55ffa368b58fee963a03dfd7b0c\"\r\n+\r\n+typescript@2.3.2:\r\n+  version \"2.3.2\"\r\n+  resolved \"https://registry.yarnpkg.com/typescript/-/typescript-2.3.2.tgz#f0f045e196f69a72f06b25fd3bd39d01c3ce9984\"\r\n+```\r\n+\r\n+Also, there will be:\r\n+- `typescript@2.3.2` in `node_modules/typescript`\r\n+- `typescript@2.2.2` in `node_modules/@angular/cli/node_modules`.\r\n+\r\n+## Problem\r\n+\r\n+In this context, it is impossible to force the use of `typescript@2.3.2` for\r\n+the whole project (except by flattening the whole project, which we don't want).\r\n+\r\n+It makes sense for typescript as the user intent is clearly to use typescript\r\n+2.3.2 for compiling all its project, and with the current behaviour, the angular\r\n+CLI (responsible of compiling `.ts` files) will simply use the 2.2.2 version\r\n+from its `node_modules`.\r\n+\r\n+## Variations of the original problem\r\n+\r\n+Similarly, even using such a content for `package.json`:\r\n+```json\r\n+ \"devDependencies\": {\r\n+    \"@angular/cli\": \"1.0.3\"\r\n+  }\r\n+```\r\n+\r\n+The need could arise for forcing the use of `typescript@2.3.2` (or\r\n+`typescript@2.1.0` for that matter).\r\n+\r\n+In these example, the need does not seem very important (the user could maybe \r\n+use `typescript@2.2.2` or ask the `@angular/cli` dev team to relax its\r\n+constraints on typescript), but there could be cases where a nested dependency\r\n+introduces a bug and the project developer would want to set a specific\r\n+version for it (see for example this\r\n+[comment](https://github.com/yarnpkg/yarn/issues/2763#issuecomment-302682844)).\r\n+\r\n+## Related scenario (out of scope of this document)\r\n+\r\n+An extension of this motivation is also the potential need for mapping nested\r\n+dependencies to others. For example a project developer could want to map\r\n+`typescript@>=2.0.0 <2.3.0` to `my-typescript-fork@2.0.0`.\r\n+\r\n+See alternatives solutions below also.\r\n+\r\n+# Detailed design\r\n+\r\n+The proposed solution is to make the `resolutions` field of the `package.json`\r\n+file to be considered all the time and on a per-package basis.\r\n+\r\n+When a nested dependency is being resolved by yarn, if the `resolutions` field\r\n+contains a version for this package, then this version is used instead.\r\n+\r\n+Most of the examples are given with exact dependencies, but note that putting a\r\n+non-exact specification in the `resolutions` field should be accepted and\r\n+resolved by yarn like it usually does. This subject is discussed below also.\r\n+\r\n+Any potentially counter-intuitive situation will result in a warning being\r\n+issued. This subject is discussed at the end of this section.\r\n+\r\n+## Example\r\n+\r\n+For example with:\r\n+```json\r\n+ \"devDependencies\": {\r\n+    \"@angular/cli\": \"1.0.3\"\r\n+  },\r\n+  \"resolutions\": {\r\n+    \"typescript\": \"2.3.2\"\r\n+  }\r\n+```\r\n+\r\n+yarn will use `typescript@2.3.2` for every nested dependency to `typescript`\r\n+and will behave as expected with respect to the `node_modules` folder by not\r\n+duplicating typescript installation.\r\n+\r\n+## Relation to non-nest dependencies\r\n+\r\n+The `devDependencies` and `dependencies` fields always take precedence over the\r\n+`resolutions` field: if the user defines explicitly a dependency there,\r\n+it means that he wants that version, even if it's specified with a non-exact\r\n+specification. So the `resolutions` field only applies to nested-dependencies.\r\n+\r\n+## Relation to the `--flat` option\r\n+\r\n+The `--flat` option becomes thus a way to populate the resolutions field for\r\n+the whole project, as it already does.\r\n+But the `resolutions` field is always considered by yarn, even if `--flat` is\r\n+not specified.\r\n+\r\n+Incidently, this resolves this strange situation when two developers would be\r\n+working on the same project, and one is using `--flat` while the other is not,\r\n+and they would get different `node_modules` contents because of that.\r\n+\r\n+## `yarn.lock`\r\n+\r\n+This design implies that it is possible to have for a given version\r\n+specification (e.g., `>=2.0.0 <2.3.0`) a resolved version that is incompatible\r\n+with it (e.g., `2.3.2`).\r\n+It is acceptable as long as it is explicitly asked by the user.\r\n+\r\n+It is currently the case that such situation would make yarn unhappy and\r\n+provoke the modification of the `yarn.lock` (see \r\n+[yarnpkg/yarn#3420](https://github.com/yarnpkg/yarn/issues/3420)).\r\n+\r\n+This feature would remove the need for this behaviour of yarn.\r\n+\r\n+## Non-exact version specifications\r\n+\r\n+If there is a non-exact specifications in the `resolutions` field, the rule is\r\n+the same: the `resolutions` field takes precedence over the specification in a\r\n+nested dependency.\r\n+\r\n+In case the `resolutions` field is broader than the nested dependency\r\n+specification, then a warning can be issued. This happens if the the exact\r\n+version resolved by yarn based on the `resolutions` specification is\r\n+incompatible with the nested dependency specification.\r\n+\r\n+For example, if `@angular/cli` depends on `typescript@>=2.0.0 <2.3.0` and the\r\n+`resolutions` field contains `typescript@>=2.0.0 <2.4.0`, then if the latest\r\n+available version for typescript is `2.2.2`, no warning is issued, and if the\r\n+latest available version for typescript is `2.3.2` then a warning is issued.\r\n+\r\n+The rational behind that is that since the `yarn.lock` file is only modified\r\n+by the user (via yarn commands), then a warning will always be issued before\r\n+such a situation happens and is written to the `yarn.lock` file.\r\n+\r\n+## Warnings in logs\r\n+\r\n+yarn should warn about the following situations:\r\n+- Unused resolutions\r\n+- Incompatible resolutions: see the above section about `yarn.lock`.\r\n+Incompatible resolutions should be accepted but warned about since it could\r\n+lead to unwanted behaviour.\r\n+- Broadening specifications: see above about non-exact specifications. This\r\n+actually falls under the umbrella of incompatible resolutions.\r\n+- ? (see open questions below)\r\n+\r\n+# How We Teach This\r\n+\r\n+This won't have much impact as it extends the current behaviour by adding\r\n+functionality.\r\n+\r\n+The only breaking change is that `resolutions` is being considered all the time,\r\n+but that won't surprise people, this will make yarn behaviour simply more\r\n+consistent than before (see the comment on `--flat` above).\r\n+\r\n+The term \"resolution\" has the same meaning as before, but it is not under the\r\n+sole control of yarn itself anymore, but also under the control of the user\r\n+now.\r\n+\r\n+This is an advanced use of yarn, so new users don't really have to know about\r\n+it in the beginning.\r\n+\r\n+# Drawbacks\r\n+\r\n+## Teaching\r\n+\r\n+It makes yarn behaviour a bit more complex, even though more useful. So it\r\n+can be difficult for users to wrap their head around it. The RFC submitter has\r\n+seen it happen many times with maven, which is quite complex but complete in\r\n+its dependency management. Users would get confused and it can take time to\r\n+understand the implications of manipulation the `resolutions` field (even\r\n+though, the chosen solution, compared to the alternatives below, is much\r\n+simpler).\r\n+\r\n+## Package management paradigm\r\n+\r\n+Yarn and npm users are highly used to the idea that a dependency can be\r\n+present many times in the `node_module`, depending on which package needs it.\r\n+This has advantages and disadvantages, but it is one of the specificity of the\r\n+npm ecosystem package management.\r\n+\r\n+In this light, taking such as design decision puts yarn a bit farther to such\r\n+way of doing thing, and it could be considered a bad direction to go toward.\r\n+\r\n+Some of the alternatives below actually take this into consideration, but are\r\n+a bit more complex in terms of expressiveness, so were not chosen by the RFC\r\n+submitter (see open questions below too).\r\n+\r\n+# Alternatives\r\n+\r\n+There is at least one alternative to the proposed solution, more complex but\r\n+more expressive.\r\n+\r\n+## Nested dependencies resolution per dependency\r\n+\r\n+Starting from an example, this solution would take the following form in the\r\n+`package.json` file:\r\n+```json\r\n+  \"devDependencies\": {\r\n+    \"@angular/cli\": \"1.0.3\",\r\n+    \"typescript\": \"2.3.2\"\r\n+  },\r\n+  \"resolutions\": {\r\n+    \"@angular/cli\": {\r\n+      \"typescript\": \"2.0.2\"\r\n+    }\r\n+  }\r\n+```\r\n+\r\n+yarn would use `typescript@2.0.2` only for `@angular/cli` (so in\r\n+`node_modules/@angular/cli/node_modules`), but keep `typescript@2.3.2` in\r\n+`node_modules/typescript`.\r\n+\r\n+Basically, this enables the user to specify versions for nested dependencies,\r\n+but only in the context of a given dependency.\r\n+\r\n+The fields of the `resolutions` field must only refer to existing entries in\r\n+`devDependencies` and `dependencies`.\r\n+\r\n+Of course, if the same version of a nested dependency is used for many\r\n+dependencies, yarn will behave as always by keeping it directly in\r\n+`node_modules`.\r\n+\r\n+## Mapping version specifications\r\n+\r\n+This is a kind of simplified solution to the \"out-of-scope scenario\" in the\r\n+motivations section above (it maps versions but not dependency names).\r\n+\r\n+It was proposed in this\r\n+[comment](https://github.com/yarnpkg/yarn/issues/2763#issuecomment-301896274).\r\n+\r\n+Everything is not totally clear to me, but the idea would be to map a given\r\n+version specification to another one.\r\n+This would take this form in the `package.json`:\r\n+```json\r\n+\"devDependencies\": {\r\n+    \"@angular/cli\": \"1.0.3\",\r\n+    \"typescript\": \"2.2.2\",\r\n+    \"more dependencies...\"\r\n+  },\r\n+  \"mappings\": {\r\n+    \"typescript@>=2.0.0 <2.3.0\": \"typescript@2.3.2\"\r\n+  }\r\n+```\r\n+\r\n+yarn would then replace matching version specifications with the user's one.\r\n+What is problematic with this is that the user has to know that `@angular/cli`\r\n+is exactly expressing its dependency to `typescript` as `>=2.0.0 <2.3.0`.\r\n+\r\n+This makes such mappings hard to maintain because they can become ignored if\r\n+`@angular/cli` is upgraded and its dependency specification changes, while\r\n+the other solutions would only result in \r\n+\r\n+# Unresolved questions\r\n+\r\n+## Is this expressive enough?\r\n+\r\n+As explained in the alternative solutions section, it would be much more\r\n+expressive and coherent with the npm ecosystem package management paradigm\r\n+to use nested dependency resolutions per project dependency.\r\n+Would the loss of simplicity acceptable maybe?\r\n+\r\n+## Warnings in logs\r\n+\r\n+Should yarn warn the user about an incoherence between an explicit dependency\r\n+and a resolution. For example if the user specify a dependency to\r\n+`typescript@2.3.2` and the resolutions field contains `typescript@2.3.0`.\r","path":"accepted/0000-selective-versions-resolutions.md","position":293,"original_position":293,"commit_id":"3eccabe4ad6ef5f9048d86b3f0d1ee4c3b8676c3","original_commit_id":"3eccabe4ad6ef5f9048d86b3f0d1ee4c3b8676c3","user":{"login":"bestander","id":2121048,"avatar_url":"https://avatars0.githubusercontent.com/u/2121048?v=3","gravatar_id":"","url":"https://api.github.com/users/bestander","html_url":"https://github.com/bestander","followers_url":"https://api.github.com/users/bestander/followers","following_url":"https://api.github.com/users/bestander/following{/other_user}","gists_url":"https://api.github.com/users/bestander/gists{/gist_id}","starred_url":"https://api.github.com/users/bestander/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bestander/subscriptions","organizations_url":"https://api.github.com/users/bestander/orgs","repos_url":"https://api.github.com/users/bestander/repos","events_url":"https://api.github.com/users/bestander/events{/privacy}","received_events_url":"https://api.github.com/users/bestander/received_events","type":"User","site_admin":false},"body":"Considering that Yarn warns when peer dependencies don't match semver I think overridden resolutions should warn as well.\r\nI think this is a temporary measure until the community catches up and fixes issues","created_at":"2017-05-22T17:16:42Z","updated_at":"2017-05-22T17:16:42Z","html_url":"https://github.com/yarnpkg/rfcs/pull/68#discussion_r117799139","pull_request_url":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68","_links":{"self":{"href":"https://api.github.com/repos/yarnpkg/rfcs/pulls/comments/117799139"},"html":{"href":"https://github.com/yarnpkg/rfcs/pull/68#discussion_r117799139"},"pull_request":{"href":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68"}}},"pull_request":{"url":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68","id":121654646,"html_url":"https://github.com/yarnpkg/rfcs/pull/68","diff_url":"https://github.com/yarnpkg/rfcs/pull/68.diff","patch_url":"https://github.com/yarnpkg/rfcs/pull/68.patch","issue_url":"https://api.github.com/repos/yarnpkg/rfcs/issues/68","number":68,"state":"open","locked":false,"title":"Selective versions resolutions","user":{"login":"victornoel","id":160975,"avatar_url":"https://avatars3.githubusercontent.com/u/160975?v=3","gravatar_id":"","url":"https://api.github.com/users/victornoel","html_url":"https://github.com/victornoel","followers_url":"https://api.github.com/users/victornoel/followers","following_url":"https://api.github.com/users/victornoel/following{/other_user}","gists_url":"https://api.github.com/users/victornoel/gists{/gist_id}","starred_url":"https://api.github.com/users/victornoel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/victornoel/subscriptions","organizations_url":"https://api.github.com/users/victornoel/orgs","repos_url":"https://api.github.com/users/victornoel/repos","events_url":"https://api.github.com/users/victornoel/events{/privacy}","received_events_url":"https://api.github.com/users/victornoel/received_events","type":"User","site_admin":false},"body":"Hi,\r\n\r\nHere is an RFC for solving the situation discussed in yarnpkg/yarn#2763\r\n\r\n@bestander ","created_at":"2017-05-21T09:47:39Z","updated_at":"2017-05-22T17:16:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":"61cda472cd5bee7fc0af163fe96c7db5a4236bb6","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68/commits","review_comments_url":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68/comments","review_comment_url":"https://api.github.com/repos/yarnpkg/rfcs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/yarnpkg/rfcs/issues/68/comments","statuses_url":"https://api.github.com/repos/yarnpkg/rfcs/statuses/3eccabe4ad6ef5f9048d86b3f0d1ee4c3b8676c3","head":{"label":"victornoel:selective-versions-resolutions","ref":"selective-versions-resolutions","sha":"3eccabe4ad6ef5f9048d86b3f0d1ee4c3b8676c3","user":{"login":"victornoel","id":160975,"avatar_url":"https://avatars3.githubusercontent.com/u/160975?v=3","gravatar_id":"","url":"https://api.github.com/users/victornoel","html_url":"https://github.com/victornoel","followers_url":"https://api.github.com/users/victornoel/followers","following_url":"https://api.github.com/users/victornoel/following{/other_user}","gists_url":"https://api.github.com/users/victornoel/gists{/gist_id}","starred_url":"https://api.github.com/users/victornoel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/victornoel/subscriptions","organizations_url":"https://api.github.com/users/victornoel/orgs","repos_url":"https://api.github.com/users/victornoel/repos","events_url":"https://api.github.com/users/victornoel/events{/privacy}","received_events_url":"https://api.github.com/users/victornoel/received_events","type":"User","site_admin":false},"repo":{"id":91941547,"name":"rfcs","full_name":"victornoel/rfcs","owner":{"login":"victornoel","id":160975,"avatar_url":"https://avatars3.githubusercontent.com/u/160975?v=3","gravatar_id":"","url":"https://api.github.com/users/victornoel","html_url":"https://github.com/victornoel","followers_url":"https://api.github.com/users/victornoel/followers","following_url":"https://api.github.com/users/victornoel/following{/other_user}","gists_url":"https://api.github.com/users/victornoel/gists{/gist_id}","starred_url":"https://api.github.com/users/victornoel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/victornoel/subscriptions","organizations_url":"https://api.github.com/users/victornoel/orgs","repos_url":"https://api.github.com/users/victornoel/repos","events_url":"https://api.github.com/users/victornoel/events{/privacy}","received_events_url":"https://api.github.com/users/victornoel/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/victornoel/rfcs","description":"RFCs for changes to Yarn","fork":true,"url":"https://api.github.com/repos/victornoel/rfcs","forks_url":"https://api.github.com/repos/victornoel/rfcs/forks","keys_url":"https://api.github.com/repos/victornoel/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/victornoel/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/victornoel/rfcs/teams","hooks_url":"https://api.github.com/repos/victornoel/rfcs/hooks","issue_events_url":"https://api.github.com/repos/victornoel/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/victornoel/rfcs/events","assignees_url":"https://api.github.com/repos/victornoel/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/victornoel/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/victornoel/rfcs/tags","blobs_url":"https://api.github.com/repos/victornoel/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/victornoel/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/victornoel/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/victornoel/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/victornoel/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/victornoel/rfcs/languages","stargazers_url":"https://api.github.com/repos/victornoel/rfcs/stargazers","contributors_url":"https://api.github.com/repos/victornoel/rfcs/contributors","subscribers_url":"https://api.github.com/repos/victornoel/rfcs/subscribers","subscription_url":"https://api.github.com/repos/victornoel/rfcs/subscription","commits_url":"https://api.github.com/repos/victornoel/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/victornoel/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/victornoel/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/victornoel/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/victornoel/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/victornoel/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/victornoel/rfcs/merges","archive_url":"https://api.github.com/repos/victornoel/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/victornoel/rfcs/downloads","issues_url":"https://api.github.com/repos/victornoel/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/victornoel/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/victornoel/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/victornoel/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/victornoel/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/victornoel/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/victornoel/rfcs/deployments","created_at":"2017-05-21T07:56:12Z","updated_at":"2017-05-20T18:50:58Z","pushed_at":"2017-05-21T17:06:00Z","git_url":"git://github.com/victornoel/rfcs.git","ssh_url":"git@github.com:victornoel/rfcs.git","clone_url":"https://github.com/victornoel/rfcs.git","svn_url":"https://github.com/victornoel/rfcs","homepage":"","size":43,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"yarnpkg:master","ref":"master","sha":"572187b266ecaf8641b02fd220440c55df2c1a55","user":{"login":"yarnpkg","id":22247014,"avatar_url":"https://avatars0.githubusercontent.com/u/22247014?v=3","gravatar_id":"","url":"https://api.github.com/users/yarnpkg","html_url":"https://github.com/yarnpkg","followers_url":"https://api.github.com/users/yarnpkg/followers","following_url":"https://api.github.com/users/yarnpkg/following{/other_user}","gists_url":"https://api.github.com/users/yarnpkg/gists{/gist_id}","starred_url":"https://api.github.com/users/yarnpkg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarnpkg/subscriptions","organizations_url":"https://api.github.com/users/yarnpkg/orgs","repos_url":"https://api.github.com/users/yarnpkg/repos","events_url":"https://api.github.com/users/yarnpkg/events{/privacy}","received_events_url":"https://api.github.com/users/yarnpkg/received_events","type":"Organization","site_admin":false},"repo":{"id":68416532,"name":"rfcs","full_name":"yarnpkg/rfcs","owner":{"login":"yarnpkg","id":22247014,"avatar_url":"https://avatars0.githubusercontent.com/u/22247014?v=3","gravatar_id":"","url":"https://api.github.com/users/yarnpkg","html_url":"https://github.com/yarnpkg","followers_url":"https://api.github.com/users/yarnpkg/followers","following_url":"https://api.github.com/users/yarnpkg/following{/other_user}","gists_url":"https://api.github.com/users/yarnpkg/gists{/gist_id}","starred_url":"https://api.github.com/users/yarnpkg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarnpkg/subscriptions","organizations_url":"https://api.github.com/users/yarnpkg/orgs","repos_url":"https://api.github.com/users/yarnpkg/repos","events_url":"https://api.github.com/users/yarnpkg/events{/privacy}","received_events_url":"https://api.github.com/users/yarnpkg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yarnpkg/rfcs","description":"RFCs for changes to Yarn","fork":false,"url":"https://api.github.com/repos/yarnpkg/rfcs","forks_url":"https://api.github.com/repos/yarnpkg/rfcs/forks","keys_url":"https://api.github.com/repos/yarnpkg/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yarnpkg/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yarnpkg/rfcs/teams","hooks_url":"https://api.github.com/repos/yarnpkg/rfcs/hooks","issue_events_url":"https://api.github.com/repos/yarnpkg/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/yarnpkg/rfcs/events","assignees_url":"https://api.github.com/repos/yarnpkg/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/yarnpkg/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/yarnpkg/rfcs/tags","blobs_url":"https://api.github.com/repos/yarnpkg/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yarnpkg/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yarnpkg/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/yarnpkg/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yarnpkg/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/yarnpkg/rfcs/languages","stargazers_url":"https://api.github.com/repos/yarnpkg/rfcs/stargazers","contributors_url":"https://api.github.com/repos/yarnpkg/rfcs/contributors","subscribers_url":"https://api.github.com/repos/yarnpkg/rfcs/subscribers","subscription_url":"https://api.github.com/repos/yarnpkg/rfcs/subscription","commits_url":"https://api.github.com/repos/yarnpkg/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/yarnpkg/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/yarnpkg/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/yarnpkg/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/yarnpkg/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/yarnpkg/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yarnpkg/rfcs/merges","archive_url":"https://api.github.com/repos/yarnpkg/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yarnpkg/rfcs/downloads","issues_url":"https://api.github.com/repos/yarnpkg/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/yarnpkg/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/yarnpkg/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/yarnpkg/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yarnpkg/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/yarnpkg/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/yarnpkg/rfcs/deployments","created_at":"2016-09-16T21:44:14Z","updated_at":"2017-05-20T18:50:58Z","pushed_at":"2017-05-21T17:06:01Z","git_url":"git://github.com/yarnpkg/rfcs.git","ssh_url":"git@github.com:yarnpkg/rfcs.git","clone_url":"https://github.com/yarnpkg/rfcs.git","svn_url":"https://github.com/yarnpkg/rfcs","homepage":"","size":32,"stargazers_count":81,"watchers_count":81,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":17,"forks":39,"open_issues":17,"watchers":81,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68"},"html":{"href":"https://github.com/yarnpkg/rfcs/pull/68"},"issue":{"href":"https://api.github.com/repos/yarnpkg/rfcs/issues/68"},"comments":{"href":"https://api.github.com/repos/yarnpkg/rfcs/issues/68/comments"},"review_comments":{"href":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68/comments"},"review_comment":{"href":"https://api.github.com/repos/yarnpkg/rfcs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/yarnpkg/rfcs/pulls/68/commits"},"statuses":{"href":"https://api.github.com/repos/yarnpkg/rfcs/statuses/3eccabe4ad6ef5f9048d86b3f0d1ee4c3b8676c3"}}}}
{"actor":{"display_login":"bestander"}}