{"push_id":993063757,"size":25,"distinct_size":8,"ref":"refs/heads/master","head":"3dcb6834df4fc128a13158b5dbd5223759441002","before":"8c7e22e2d6cb1f8bc2b7d0ec1b5cdd9f5a3ad45a","commits":[{"sha":"d1fb6450b46afa51ee0c5d1560b6b2e730d8964d","author":{"email":"c295b6dcb308cf9e0a1bc29bf116798b28cb018e@fb.com","name":"Steven Luscher"},"message":"Loosen graphql-js version in babel-relay-plugin\n\nReviewed By: wincent\n\nDifferential Revision: D2944917\n\nfb-gh-sync-id: dfa9551762d7a861ba6ddcb869b644f3cdbb19dd\nshipit-source-id: dfa9551762d7a861ba6ddcb869b644f3cdbb19dd","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/d1fb6450b46afa51ee0c5d1560b6b2e730d8964d"},{"sha":"8a1d855e0650d9f1ad09aa909c2aa9b7fd6e7cc3","author":{"email":"aa7860939f8e7c62152f63a0f0f4cbb93de03c02@gmail.com","name":"Nick Raienko"},"message":"Run linter against babel-relay-plugin\n\nSummary: Closes https://github.com/facebook/relay/pull/834\n\nReviewed By: yungsters\n\nDifferential Revision: D2950876\n\nfb-gh-sync-id: c32e8af40e8f5793e82a389aa59951155b2949d1\nshipit-source-id: c32e8af40e8f5793e82a389aa59951155b2949d1","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/8a1d855e0650d9f1ad09aa909c2aa9b7fd6e7cc3"},{"sha":"d2b366c7bd9a05cf5ea16212e8d67b9f918facc7","author":{"email":"c295b6dcb308cf9e0a1bc29bf116798b28cb018e@fb.com","name":"Steven Luscher"},"message":"Spelling correction in `isRelayContext` test\n\nReviewed By: josephsavona\n\nDifferential Revision: D2952156\n\nfb-gh-sync-id: d651e9d186e46cb62aba439853ccc6d4c3abfd69\nshipit-source-id: d651e9d186e46cb62aba439853ccc6d4c3abfd69","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/d2b366c7bd9a05cf5ea16212e8d67b9f918facc7"},{"sha":"6a1fdc9a9e0646606127c270bbbc2240cb2d2199","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joe Savona"},"message":"Create build-time fragment ids to identify fragments across threads\n\nSummary: RelayContainer uses fragment pointers - opaque metadata on fragment props - to verify that data for a component was fetched by its parent. The current implementation relies on a runtime-generated id, however, this is limiting if we want to perform data-fetching in a separate thread. To do so with runtime generated IDs would require serializing the query itself across threads which imposes a runtime cost. Instead, we can generate a unique id for each fragment within the source code and use that to identify fragments and their results across threads. These new ids are a hash of the filename, full file text, and line/column number - effectively uniquely identifying the fragment's place structurally within the codebase (the closest static equivalent to \"this exact runtime object\").\n\nReviewed By: yungsters\n\nDifferential Revision: D2943010\n\nfb-gh-sync-id: 179914e1adb3757db989777c37c895f276c2f96e\nshipit-source-id: 179914e1adb3757db989777c37c895f276c2f96e","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/6a1fdc9a9e0646606127c270bbbc2240cb2d2199"},{"sha":"90a321b06c04afb53c0faacab0f9be79064f84ea","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joe Savona"},"message":"Add `getConcreteFragmentID` using static fragment ids\n\nSummary: Replaces `RelayQueryFragment#getConcreteNodeHash` with `#getConcreteFragmentID()`, which returns the statically generated fragment id added in D2943010. An equivalent id is created for dynamically generated fragments using `generateConcreteFragmentID`.\n\nReviewed By: yungsters\n\nDifferential Revision: D2951922\n\nfb-gh-sync-id: 283dba21b8a0ce8e544c4ae0d550a45e5e1aa02d\nshipit-source-id: 283dba21b8a0ce8e544c4ae0d550a45e5e1aa02d","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/90a321b06c04afb53c0faacab0f9be79064f84ea"},{"sha":"1317925391d45ef3047b13124fe49cc4a7183a5a","author":{"email":"c295b6dcb308cf9e0a1bc29bf116798b28cb018e@users.noreply.github.com","name":"Steven Luscher"},"message":"Update the `nonExistantMutation.fixture` with the new validation message\n\nSummary: Closes https://github.com/facebook/relay/pull/851\n\nReviewed By: yungsters\n\nDifferential Revision: D2952751\n\nfb-gh-sync-id: 2dbb8e416ca08ceb95f1adc29d27eba5db22ed77\nshipit-source-id: 2dbb8e416ca08ceb95f1adc29d27eba5db22ed77","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/1317925391d45ef3047b13124fe49cc4a7183a5a"},{"sha":"c7df007066548f48dc1749119aefdb5d2cc176a7","author":{"email":"c295b6dcb308cf9e0a1bc29bf116798b28cb018e@fb.com","name":"Steven Luscher"},"message":"Bump versions to 0.7.1 for release and update CHANGELOG\n\nSummary: Closes https://github.com/facebook/relay/pull/852\n\nReviewed By: yungsters\n\nDifferential Revision: D2952798\n\nfb-gh-sync-id: e45648c12c90a417fe0eacb1b832b43a9acb77c8\nshipit-source-id: e45648c12c90a417fe0eacb1b832b43a9acb77c8","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/c7df007066548f48dc1749119aefdb5d2cc176a7"},{"sha":"36472364f09ab1213adc2fbe951a508c1f2576b1","author":{"email":"9e0a0b5d5c93b6b8fe08e164fc3e755ea759b5ec@users.noreply.github.com","name":"Denis Nedelyaev"},"message":"Make RelayRenderer run queries after mount\n\nSummary:...to make sure `RelayRenderer` does not run queries during synchronous server-side rendering.\n\nIn the `RelayRenderer` tests, I had to replace `ShallowRenderer.render` with the traditional `ReactDOM.render`, because `ShallowRenderer.render` does not invoke some component lifecycle methods including `componentDidMount` that now run queries. But I did not change the logic of the tests, as **visible behaviour of `RelayRenderer` was fully retained.**\n\nAdded a test to check that `RelayRender` does not run queries on the server.\n\nThis PR is a forerunner of the PR that will make `RelayRenderer` isomorphic (see #589). That next PR will be pretty small and easily comprehensible, because this PR already did much of the necessary dirty work.\nCloses https://github.com/facebook/relay/pull/625\n\nReviewed By: josephsavona\n\nDifferential Revision: D2727748\n\nfb-gh-sync-id: 202cc772d15661532afd5eee6ae647bb03af9dcc\nshipit-source-id: 202cc772d15661532afd5eee6ae647bb03af9dcc","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/36472364f09ab1213adc2fbe951a508c1f2576b1"},{"sha":"c425ae4ecfa8e07174f72a09804ad3e3e16faffc","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joe Savona"},"message":"Represent fragment pointers as plain objects to allow cross-thread serialization\n\nSummary:The format of fragment pointers currently uses class instances which can't be passed across threads trivially. In particular, doing so would involve serializing/deserializing the entire fragment object even though it can (and will) be reconstructed by the container anyway. This diff changes the format of fragment pointers to be plain objects that can be trivially (de)serialized across threads.\n\nFragment props now have the following shape:\n\n```\n// shape of e.g. `this.props.viewer`\n{\n  __dataID__: DataID;\n  __pointers__: {\n    [fragmentID: string]: DataID;\n  };\n}\n```\n\n== Key Changes ==\n\n1. `RelayFragmentPointer` instances are gone, this module is now a helper for constructing and reading data from fragment props.\n2. Instead of the previous pointer instances, the reader creates an opaque `__fragments__` object (using the above helpers) and annotates each fragment reference included on a record along with its corresponding data ID.\n3. RelayContainer and RelayMutation are updated to check props using `RelayFragmentPointer` helper methods. I also noticed that we weren't checking all the possible cases of invalid fragment props, so i added better validation (warnings where things worked before invariants where there were before) along with tests.\n4. Fragment Resolvers (GraphQLStoreQueryResolver) are created and `resolve()`-ed with plain fragments and data id strings.\n5. This change propagates to RelayContext and RelayQueryResultObservable which both create QueryResolvers.\n\nReviewed By: yungsters\n\nDifferential Revision: D2947985\n\nfb-gh-sync-id: 3f0ba9b7648cee8a082715f9a1cb39c65902be17\nshipit-source-id: 3f0ba9b7648cee8a082715f9a1cb39c65902be17","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/c425ae4ecfa8e07174f72a09804ad3e3e16faffc"},{"sha":"8caae25de0bad5ec7ef4b17d4ed8d75e57057680","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joe Savona"},"message":"Generate new concrete fragment ids on clone()\n\nSummary:`RelayQueryFragment#isCloned` was added as a way to avoid relying on a fragment's `getCompositeHash` if it had been cloned - the idea being that a cloned fragment's hash could be identical to the pre-cloned fragment's hash since they shared a common concrete node.\n\nBuilding on D2943010, which creates truly unique fragment IDs on static fragments and D2947985 which creates unique ids for dynamically generated fragments, we can now remove `isCloned` and change all call sites to just use `getCompositeHash` on all fragments regardless of being cloned or not.\n\nReviewed By: yungsters\n\nDifferential Revision: D2949393\n\nfb-gh-sync-id: f23163d50bfbad79e8ab83b18f9398eff580cd2d\nshipit-source-id: f23163d50bfbad79e8ab83b18f9398eff580cd2d","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/8caae25de0bad5ec7ef4b17d4ed8d75e57057680"},{"sha":"105175b58ef4b8c0f7598e7d821927d4833daeb8","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joe Savona"},"message":"Create RelayContextInterface w methods used by RelayContainer\n\nSummary: Builds on [RelayContainer: accept any context conforming to RelayContext interface](https://github.com/facebook/relay/commit/5746ef9eb43e745ad2ffcbcc8be57e5d33380584) to create a `RelayContextInterface` flow type and changes `RelayContainer` to use this type for describing `context.relay`, ensuring that only methods of the interface can be called. This also adds `forceFetch` and `primeCache` to the interface definition.\n\nReviewed By: yungsters\n\nDifferential Revision: D2954556\n\nfb-gh-sync-id: 5f6b972057c2bd4ba26844311d1110cdd09b3410\nshipit-source-id: 5f6b972057c2bd4ba26844311d1110cdd09b3410","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/105175b58ef4b8c0f7598e7d821927d4833daeb8"},{"sha":"cd85fcbe9f1f39b9774a3db6cf76f0fa4be05e6d","author":{"email":"52dd44d8bba16260556c56496622720d714a75d8@fb.com","name":"Greg Hurrell"},"message":"Fix spelling in a fixture\n\nSummary: Got contacted by a representative of Oxford University Press. Told me to change this.\n\nReviewed By: yungsters\n\nDifferential Revision: D2955335\n\nfb-gh-sync-id: dd12046abe1a1de5d22859a0b4aef730d6611034\nshipit-source-id: dd12046abe1a1de5d22859a0b4aef730d6611034","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/cd85fcbe9f1f39b9774a3db6cf76f0fa4be05e6d"},{"sha":"7477817a9b9a1573696375e21e5fd537381b8c73","author":{"email":"e64265f5e0da97a987f933202e305382093ad0f9@mail.ru","name":"Pavel Chertorogov"},"message":"Update Guides-Routes.md\n\nSummary:Avoid unnecessary misunderstanding:  word `container` for target render DOM element is not the best name. Cause term `container` in Relay used for another thing.\nCloses https://github.com/facebook/relay/pull/857\n\nDifferential Revision: D2958407\n\nfb-gh-sync-id: 6ce133660391d296c340e0252d8886baaca39934\nshipit-source-id: 6ce133660391d296c340e0252d8886baaca39934","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/7477817a9b9a1573696375e21e5fd537381b8c73"},{"sha":"af284b52a8af249d83ef6e94b5ee436402ae0143","author":{"email":"e64265f5e0da97a987f933202e305382093ad0f9@mail.ru","name":"Pavel Chertorogov"},"message":"Update QuickStart-ThinkingInRelay.md\n\nSummary:Fix typo when passing object to components's property.\nCloses https://github.com/facebook/relay/pull/856\n\nDifferential Revision: D2958408\n\nfb-gh-sync-id: 37d17fea4577d3f51aafdb2de09f6f8550ef2822\nshipit-source-id: 37d17fea4577d3f51aafdb2de09f6f8550ef2822","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/af284b52a8af249d83ef6e94b5ee436402ae0143"},{"sha":"9afd5eb51ad22d8f15eadbe41bf9ffc6daee0ab5","author":{"email":"08eb872429d0023047f532457bedba8a9a1ab8d1@fb.com","name":"Tim Yung"},"message":"Relay: Remove `uri` from `RelayQueryConfigSpec`\n\nSummary: The `uri` property was part of `RelayRoute`, but never `RelayQueryConfig`. This revision simply cleans up the Flow shape in `RelayContainer`. Oh yeah, and `const` and `let` in `RelayRoute`, just because.\n\nReviewed By: cpojer\n\nDifferential Revision: D2957348\n\nfb-gh-sync-id: 6c515553efa1486d9e60c323800fab9727c117ba\nshipit-source-id: 6c515553efa1486d9e60c323800fab9727c117ba","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/9afd5eb51ad22d8f15eadbe41bf9ffc6daee0ab5"},{"sha":"cd56d0ae10010863e205844c13edb0286a56bf35","author":{"email":"9e0a0b5d5c93b6b8fe08e164fc3e755ea759b5ec@gmail.com","name":"Denis Nedelyaev"},"message":"Fix tests: add ReactDOMServer to the module map for Jest\n\nSummary: Closes https://github.com/facebook/relay/pull/854\n\nDifferential Revision: D2958736\n\nfb-gh-sync-id: 6e2f19522d136a4ff6a9734d67f762e15e802a0f\nshipit-source-id: 6e2f19522d136a4ff6a9734d67f762e15e802a0f","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/cd56d0ae10010863e205844c13edb0286a56bf35"},{"sha":"2f71ad7f640ff05dc1d415798420611c477a7d81","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joe Savona"},"message":"readRelayQueryData: set metadata when creating fragment pointers\n\nSummary: Fixes an issue that occurs when reading the results of a field whose only child is a fragment reference. D2947985 changed the reader to set fragment pointers on the result object directly, bypassing the call to `_setDataValue`. That bypassed the method's side-effect of also writing all the metadata fields on the object. The fix here is to explicitly call a new `_setMetadataFields` method to ensure that those fields are set (see the new test).\n\nReviewed By: yuzhi\n\nDifferential Revision: D2959408\n\nfb-gh-sync-id: 8dacfe4f6f1dd44ed1176299d2f03620f2c77ec7\nshipit-source-id: 8dacfe4f6f1dd44ed1176299d2f03620f2c77ec7","distinct":false,"url":"https://api.github.com/repos/kassens/relay/commits/2f71ad7f640ff05dc1d415798420611c477a7d81"},{"sha":"6f9e029c28b49e514cdcac0e4affc9694c912b97","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joseph Savona"},"message":"Use known typename for existing records\n\nSummary:Relay doesn't include the `__typename` field on queries/fragments/fields that have a concrete type. This means that there can be times (see issue #474) where the query/payload legitimately doesn't have `__typename`, but the writer attempts to read it, sees that it isn't there, and warns. In these cases we should instead check to see if we already know the type of the record. Doing so fixes the false-positive \"missing typename\" warning.\n\nCloses https://github.com/facebook/relay/pull/860\n\nReviewed By: yungsters\n\nDifferential Revision: D2958749\n\nfb-gh-sync-id: 781ebf3b89f17fa94bb8d823e9139c39d69fabe6\nshipit-source-id: 781ebf3b89f17fa94bb8d823e9139c39d69fabe6","distinct":true,"url":"https://api.github.com/repos/kassens/relay/commits/6f9e029c28b49e514cdcac0e4affc9694c912b97"},{"sha":"8e498e7a5529c8a9199a4c6a722302f5c9a00cd4","author":{"email":"e4389f22591c1426226153f014035d933d40e642@gmail.com","name":"C.T. Lin"},"message":"Use 'babel-polyfill' instead of 'babel/polyfill' in examples\n\nSummary:use `babel-polyfill` which is listed in `package.json`.\nCloses https://github.com/facebook/relay/pull/867\n\nDifferential Revision: D2966850\n\nfb-gh-sync-id: 0c3964dd411b0777697cec38258bfa9d7ae1f898\nshipit-source-id: 0c3964dd411b0777697cec38258bfa9d7ae1f898","distinct":true,"url":"https://api.github.com/repos/kassens/relay/commits/8e498e7a5529c8a9199a4c6a722302f5c9a00cd4"},{"sha":"20bdae41e922448d021a5f719a40c20ea6765993","author":{"email":"6977263c73bf2ae00930eec9b50ebede3b695164@fb.com","name":"Joseph Savona"},"message":"RelayContainer: pass empty arrays through for plural fragments\n\nSummary:Fixes an issue where passing an empty array as a prop corresponding to a plural fragment would warn about mock data. The empty array is now passed through to the component as-is.\nCloses https://github.com/facebook/relay/pull/875\n\nReviewed By: yungsters\n\nDifferential Revision: D2970111\n\nfb-gh-sync-id: c3a1f3af2426c1170b8b04922df7c5600ef806bb\nshipit-source-id: c3a1f3af2426c1170b8b04922df7c5600ef806bb","distinct":true,"url":"https://api.github.com/repos/kassens/relay/commits/20bdae41e922448d021a5f719a40c20ea6765993"}]}